feat: improve recipe list UI with square cards and unified search
Some checks failed
Basil CI/CD Pipeline / Code Linting (push) Successful in 1m3s
Basil CI/CD Pipeline / Web Tests (push) Failing after 1m19s
Basil CI/CD Pipeline / API Tests (push) Successful in 1m25s
Basil CI/CD Pipeline / Shared Package Tests (push) Successful in 59s
Basil CI/CD Pipeline / Security Scanning (push) Successful in 1m7s
Basil CI/CD Pipeline / Build All Packages (push) Has been skipped
Basil CI/CD Pipeline / E2E Tests (push) Has been skipped
Basil CI/CD Pipeline / Build & Push Docker Images (push) Has been skipped
Basil CI/CD Pipeline / Trigger Deployment (push) Has been skipped

Major UI improvements to the recipe list view:

Frontend Changes:
- Convert recipe cards to square layout (1:1 aspect ratio)
- Cards now resize properly with column count (3, 5, 7, 9)
- Optimize text sizing for compact square format
- Remove size slider control for simplicity
- Unify search functionality to search both titles AND tags simultaneously
- Remove title/tag search toggle buttons
- Add tag autocomplete to unified search field
- Improve button text visibility with explicit color and font-weight

Backend Changes:
- Update recipe search API to search across title, description, AND tags
- Single search parameter now handles all search types

Visual Improvements:
- Recipe cards maintain square shape at all column counts
- Text scales appropriately for small card sizes
- Cleaner, simpler toolbar with fewer controls
- Better readability on unselected control buttons

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Peter Kartchner
2026-01-16 12:54:07 -07:00
parent c71b77f54e
commit d4ce3ff81b
3 changed files with 44 additions and 91 deletions

View File

@@ -112,6 +112,15 @@ router.get('/', async (req, res) => {
where.OR = [
{ title: { contains: search as string, mode: 'insensitive' } },
{ description: { contains: search as string, mode: 'insensitive' } },
{
tags: {
some: {
tag: {
name: { contains: search as string, mode: 'insensitive' }
}
}
}
},
];
}
if (cuisine) where.cuisine = cuisine;