feat: implement responsive column-based styling for all thumbnail cards #9

Merged
pkartch merged 11 commits from feature/cookbook-pagination into main 2026-01-20 04:05:03 +00:00
3 changed files with 79 additions and 8 deletions
Showing only changes of commit 4ce62d5d3e - Show all commits

View File

@@ -387,6 +387,9 @@
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
position: relative; position: relative;
transition: transform 0.2s, box-shadow 0.2s; transition: transform 0.2s, box-shadow 0.2s;
display: flex;
flex-direction: column;
height: 100%;
} }
.recipe-card:hover { .recipe-card:hover {
@@ -396,32 +399,48 @@
.recipe-card > div:first-child { .recipe-card > div:first-child {
cursor: pointer; cursor: pointer;
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
} }
.recipe-image { .recipe-image {
width: 100%; width: 100%;
height: 200px; aspect-ratio: 16 / 9;
object-fit: cover; object-fit: cover;
flex-shrink: 0;
} }
.recipe-image-placeholder { .recipe-image-placeholder {
width: 100%; width: 100%;
height: 200px; aspect-ratio: 16 / 9;
background: linear-gradient(135deg, #ffb74d 0%, #ff9800 100%); background: linear-gradient(135deg, #ffb74d 0%, #ff9800 100%);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 4rem; font-size: 4rem;
flex-shrink: 0;
} }
.recipe-info { .recipe-info {
padding: 1.25rem; padding: 1.25rem;
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
} }
.recipe-info h3 { .recipe-info h3 {
font-size: 1.2rem; font-size: 1.2rem;
color: #212121; color: #212121;
margin: 0 0 0.5rem 0; margin: 0 0 0.5rem 0;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
line-height: 1.3;
} }
.recipe-info .description { .recipe-info .description {
@@ -429,6 +448,12 @@
color: #666; color: #666;
margin: 0 0 0.75rem 0; margin: 0 0 0.75rem 0;
line-height: 1.4; line-height: 1.4;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
flex: 0 0 auto;
} }
.recipe-meta { .recipe-meta {
@@ -437,12 +462,14 @@
font-size: 0.85rem; font-size: 0.85rem;
color: #757575; color: #757575;
margin-bottom: 0.75rem; margin-bottom: 0.75rem;
flex: 0 0 auto;
} }
.recipe-tags { .recipe-tags {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 0.5rem; gap: 0.5rem;
margin-top: auto;
} }
.recipe-tags .tag { .recipe-tags .tag {

View File

@@ -156,6 +156,9 @@
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
cursor: pointer; cursor: pointer;
transition: transform 0.2s, box-shadow 0.2s; transition: transform 0.2s, box-shadow 0.2s;
display: flex;
flex-direction: column;
height: 100%;
} }
.cookbook-card:hover { .cookbook-card:hover {
@@ -165,28 +168,40 @@
.cookbook-cover { .cookbook-cover {
width: 100%; width: 100%;
height: 200px; aspect-ratio: 16 / 9;
object-fit: cover; object-fit: cover;
flex-shrink: 0;
} }
.cookbook-cover-placeholder { .cookbook-cover-placeholder {
width: 100%; width: 100%;
height: 200px; aspect-ratio: 16 / 9;
background: linear-gradient(135deg, #81c784 0%, #4caf50 100%); background: linear-gradient(135deg, #81c784 0%, #4caf50 100%);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 4rem; font-size: 4rem;
flex-shrink: 0;
} }
.cookbook-info { .cookbook-info {
padding: 1.25rem; padding: 1.25rem;
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
} }
.cookbook-info h3 { .cookbook-info h3 {
font-size: 1.3rem; font-size: 1.3rem;
color: #212121; color: #212121;
margin: 0 0 0.5rem 0; margin: 0 0 0.5rem 0;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
line-height: 1.3;
} }
.cookbook-info .description { .cookbook-info .description {
@@ -194,6 +209,12 @@
color: #666; color: #666;
margin: 0 0 0.75rem 0; margin: 0 0 0.75rem 0;
line-height: 1.4; line-height: 1.4;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
flex: 0 0 auto;
} }
.cookbook-info .recipe-count { .cookbook-info .recipe-count {
@@ -201,6 +222,7 @@
color: #2e7d32; color: #2e7d32;
font-weight: 600; font-weight: 600;
margin: 0; margin: 0;
margin-top: auto;
} }
/* Recent Recipes Section */ /* Recent Recipes Section */
@@ -234,6 +256,9 @@
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
cursor: pointer; cursor: pointer;
transition: transform 0.2s, box-shadow 0.2s; transition: transform 0.2s, box-shadow 0.2s;
display: flex;
flex-direction: column;
height: 100%;
} }
.recipe-card:hover { .recipe-card:hover {
@@ -243,28 +268,40 @@
.recipe-image { .recipe-image {
width: 100%; width: 100%;
height: 200px; aspect-ratio: 16 / 9;
object-fit: cover; object-fit: cover;
flex-shrink: 0;
} }
.recipe-image-placeholder { .recipe-image-placeholder {
width: 100%; width: 100%;
height: 200px; aspect-ratio: 16 / 9;
background: linear-gradient(135deg, #ffb74d 0%, #ff9800 100%); background: linear-gradient(135deg, #ffb74d 0%, #ff9800 100%);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 4rem; font-size: 4rem;
flex-shrink: 0;
} }
.recipe-info { .recipe-info {
padding: 1.25rem; padding: 1.25rem;
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
} }
.recipe-info h3 { .recipe-info h3 {
font-size: 1.2rem; font-size: 1.2rem;
color: #212121; color: #212121;
margin: 0 0 0.5rem 0; margin: 0 0 0.5rem 0;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
line-height: 1.3;
} }
.recipe-info .description { .recipe-info .description {
@@ -272,6 +309,12 @@
color: #666; color: #666;
margin: 0 0 0.75rem 0; margin: 0 0 0.75rem 0;
line-height: 1.4; line-height: 1.4;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
flex: 0 0 auto;
} }
.recipe-meta { .recipe-meta {
@@ -279,6 +322,7 @@
gap: 1rem; gap: 1rem;
font-size: 0.85rem; font-size: 0.85rem;
color: #757575; color: #757575;
margin-top: auto;
} }
/* Empty State */ /* Empty State */

View File

@@ -266,9 +266,9 @@
overflow: hidden; overflow: hidden;
background: var(--bg-primary, #ffffff); background: var(--bg-primary, #ffffff);
transition: transform 0.2s, box-shadow 0.2s; transition: transform 0.2s, box-shadow 0.2s;
aspect-ratio: 1 / 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%;
} }
.recipe-grid-enhanced .recipe-card:hover { .recipe-grid-enhanced .recipe-card:hover {
@@ -278,7 +278,7 @@
.recipe-grid-enhanced .recipe-card img { .recipe-grid-enhanced .recipe-card img {
width: 100%; width: 100%;
height: 65%; aspect-ratio: 16 / 9;
object-fit: cover; object-fit: cover;
display: block; display: block;
flex-shrink: 0; flex-shrink: 0;