diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 55d3e06..095c269 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -19,6 +19,33 @@ interface ToastContextType { const ToastContext = createContext(null); +function BookIcon() { + return ( + + ); +} + +function PlusIcon() { + return ( + + ); +} + +function LinkIcon() { + return ( + + ); +} + export function useToastContext() { const context = useContext(ToastContext); if (!context) { @@ -38,10 +65,11 @@ function App() { }; const linkClass = (path: string) => { - const base = `px-4 py-2 rounded-full text-sm font-semibold transition-colors shadow-sm`; + const base = + 'group/nav relative inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm font-semibold transition-all duration-200 ease-out outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 focus-visible:ring-offset-white motion-safe:hover:-translate-y-0.5'; return isActive(path) - ? `${base} bg-blue-100 text-blue-700` - : `${base} text-gray-700 hover:bg-gray-100`; + ? `${base} bg-blue-100 text-blue-700 shadow-sm` + : `${base} text-slate-700 hover:bg-slate-100 hover:text-slate-900`; }; return ( @@ -52,21 +80,28 @@ function App() {
-
+
- -

Recipe Manager

+ + +

Recipe Manager

-
diff --git a/frontend/src/components/RecipeCard.tsx b/frontend/src/components/RecipeCard.tsx index 3fc44e0..bc179ef 100644 --- a/frontend/src/components/RecipeCard.tsx +++ b/frontend/src/components/RecipeCard.tsx @@ -35,7 +35,7 @@ function emojiForRecipe(recipe: Recipe) { function MetaChip({ label, value, emoji }: { label: string; value: string; emoji: string }) { return ( -
+
{value} {label} @@ -50,7 +50,7 @@ export function RecipeCard({ recipe, tags = [] }: RecipeCardProps) { return (
-
+
{tags[0]?.name ?? 'Homemade'}
-
-

{recipe.title}

+

{recipe.title}

{recipe.description ? (

{recipe.description}

@@ -87,7 +87,7 @@ export function RecipeCard({ recipe, tags = [] }: RecipeCardProps) { {tags.slice(0, 4).map((tag) => ( {tag.name} @@ -99,7 +99,10 @@ export function RecipeCard({ recipe, tags = [] }: RecipeCardProps) {
{recipe.last_cooked_at ? `Cooked ${formatDate(recipe.last_cooked_at)}` : 'Not cooked yet'} - View recipe → + + View recipe + +
diff --git a/frontend/src/index.css b/frontend/src/index.css index 8b02933..c7c7886 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -121,7 +121,8 @@ button:focus-visible, .btn:focus-visible, input:focus-visible, textarea:focus-visible, -select:focus-visible { +select:focus-visible, +a:focus-visible { outline: none; box-shadow: var(--focus-ring); } @@ -176,6 +177,17 @@ textarea::placeholder { border-radius: 7px; } +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + @media (max-width: 480px) { .max-w-7xl, .max-w-6xl, diff --git a/frontend/src/pages/ImportUrlPage.tsx b/frontend/src/pages/ImportUrlPage.tsx index 6a6e6dd..4fc933c 100644 --- a/frontend/src/pages/ImportUrlPage.tsx +++ b/frontend/src/pages/ImportUrlPage.tsx @@ -218,8 +218,8 @@ export function ImportUrlPage() { className="w-full rounded-lg border border-gray-300 px-4 py-2.5 text-base shadow-sm focus:border-transparent focus:ring-2 focus:ring-blue-500" />
- @@ -267,10 +267,10 @@ export function ImportUrlPage() {
- - Open full editor + 📝 Open full editor
) : ( diff --git a/frontend/src/pages/RecipeDetailPage.tsx b/frontend/src/pages/RecipeDetailPage.tsx index cb45758..4601e24 100644 --- a/frontend/src/pages/RecipeDetailPage.tsx +++ b/frontend/src/pages/RecipeDetailPage.tsx @@ -210,23 +210,23 @@ export function RecipeDetailPage() {
- - Cook Mode + + Cook Mode {!deleteConfirm ? ( - + ) : (
@@ -303,7 +303,7 @@ export function RecipeDetailPage() { )}
- ← Back to all recipes + ← Back to all recipes
); diff --git a/frontend/src/pages/RecipeListPage.tsx b/frontend/src/pages/RecipeListPage.tsx index bfdee38..b512def 100644 --- a/frontend/src/pages/RecipeListPage.tsx +++ b/frontend/src/pages/RecipeListPage.tsx @@ -64,16 +64,18 @@ export function RecipeListPage() {
+ Add Recipe + Browse Recipes
@@ -96,10 +98,11 @@ export function RecipeListPage() {
- + New Recipe + + New Recipe
@@ -117,7 +120,7 @@ export function RecipeListPage() {
@@ -207,9 +210,10 @@ export function RecipeListPage() { {!searchQuery && ( + Add Your First Recipe )} @@ -228,7 +232,7 @@ export function RecipeListPage() {