diff --git a/apps/web/src/components/footer.tsx b/apps/web/src/components/footer.tsx new file mode 100644 index 0000000..8b8fbd1 --- /dev/null +++ b/apps/web/src/components/footer.tsx @@ -0,0 +1,53 @@ +import { Link } from "@tanstack/react-router"; + +export default function Footer() { + return ( + + ); +} diff --git a/apps/web/src/components/header.tsx b/apps/web/src/components/header.tsx index 5221de1..235f4f5 100644 --- a/apps/web/src/components/header.tsx +++ b/apps/web/src/components/header.tsx @@ -9,23 +9,105 @@ export default function Header() { ] as const; return ( -
-
- -
- - + + +
+ + {/* Actions */} +
+ + +
+ + {/* Mobile nav (compact) */} + +
-
- + + {/* Decorative blobs for subtle flair matching landing visuals */} +
+
+ ); } diff --git a/apps/web/src/routes/__root.tsx b/apps/web/src/routes/__root.tsx index 73f3a2a..f2e12f2 100644 --- a/apps/web/src/routes/__root.tsx +++ b/apps/web/src/routes/__root.tsx @@ -7,6 +7,7 @@ import { useRouterState, } from "@tanstack/react-router"; import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; +import Footer from "@/components/footer"; import Header from "@/components/header"; import Loader from "@/components/loader"; import { ThemeProvider } from "@/components/theme-provider"; @@ -14,10 +15,10 @@ import { Toaster } from "@/components/ui/sonner"; import type { trpc } from "@/utils/trpc"; import "../index.css"; -export interface RouterAppContext { +export type RouterAppContext = { trpc: typeof trpc; queryClient: QueryClient; -} +}; export const Route = createRootRouteWithContext()({ component: RootComponent, @@ -54,9 +55,10 @@ function RootComponent() { disableTransitionOnChange storageKey="vite-ui-theme" > -
+
{isFetching ? : } +
diff --git a/apps/web/src/routes/index.tsx b/apps/web/src/routes/index.tsx index ef2d2b3..e7639db 100644 --- a/apps/web/src/routes/index.tsx +++ b/apps/web/src/routes/index.tsx @@ -21,16 +21,19 @@ export const Route = createFileRoute("/")({ function HealthBadge() { const healthCheck = useQuery(trpc.healthCheck.queryOptions()); - const status = healthCheck.isLoading - ? "Checking" - : healthCheck.data - ? "Online" - : "Offline"; - const color = healthCheck.isLoading - ? "bg-yellow-500" - : healthCheck.data - ? "bg-emerald-500" - : "bg-red-500"; + let status = "Offline"; + if (healthCheck.isLoading) { + status = "Checking"; + } else if (healthCheck.data) { + status = "Online"; + } + // flatten ternaries for linter by using simple logic + let color = "bg-red-500"; + if (healthCheck.isLoading) { + color = "bg-yellow-500"; + } else if (healthCheck.data) { + color = "bg-emerald-500"; + } return (
@@ -309,12 +312,9 @@ function HomeComponent() {
- Reflecto Private by default • Powered by lightweight AI
@@ -395,26 +395,6 @@ function HomeComponent() {
- - {/* Footer */} -
);