From edc5ce03ad9a8e4781f43c44f2c752ac6221a503 Mon Sep 17 00:00:00 2001 From: Paul Huliganga Date: Wed, 25 Mar 2026 18:38:50 -0400 Subject: [PATCH] Visual polish: CookModePage + ImportUrlPage, global header/nav consistency, theme token styling, improved states (spacing, cards, buttons, empty/error/complete) --- frontend/src/App.tsx | 26 +- .../src/components/MissionControlPanel.tsx | 126 ++------- frontend/src/index.css | 29 ++ frontend/src/pages/CookModePage.tsx | 267 ++++-------------- frontend/src/pages/ImportUrlPage.tsx | 70 ++++- frontend/src/services/api.ts | 3 +- frontend/src/types/api-aux.ts | 32 ++- frontend/src/types/recipe.ts | 9 +- frontend/src/types/tag.ts | 1 + 9 files changed, 220 insertions(+), 343 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c1341ef..4e2053b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -8,6 +8,7 @@ import { ErrorBoundary } from './components/ErrorBoundary'; import { ToastContainer } from './components/Toast'; import { useToast } from './hooks/useToast'; import { createContext, useContext } from 'react'; +import { colors, radius } from './theme'; // Create toast context to share toast functionality across the app interface ToastContextType { @@ -30,36 +31,35 @@ export function useToastContext() { function App() { const location = useLocation(); const toast = useToast(); - + const isActive = (path: string) => { if (path === '/' && location.pathname === '/') return true; if (path !== '/' && location.pathname.startsWith(path)) return true; return false; }; - + const linkClass = (path: string) => { - const base = "px-3 py-2 rounded-md text-sm font-medium transition-colors"; + const base = `px-4 py-2 rounded-full text-sm font-semibold transition-colors shadow-sm`; return isActive(path) ? `${base} bg-blue-100 text-blue-700` : `${base} text-gray-700 hover:bg-gray-100`; }; - + return (
- -
+ +
-

Recipe Manager

+

Recipe Manager

- -
- -
+ +
} /> } /> @@ -84,8 +84,8 @@ function App() { } />
- -