diff --git a/apps/web/src/app/components/logo.tsx b/apps/web/src/app/components/logo.tsx index 43c202d93b..694092a908 100644 --- a/apps/web/src/app/components/logo.tsx +++ b/apps/web/src/app/components/logo.tsx @@ -2,36 +2,36 @@ import Image from "next/image"; -export function Logo({ +export function Logo({ className, - width = 64, + width = 64, height = 64, alt = "Comp Logo", ...props -}: { - className?: string; - width?: number; +}: { + className?: string; + width?: number; height?: number; alt?: string; } & Omit, 'src' | 'alt' | 'width' | 'height'>) { return ( - <> - + {alt} - - + ); } diff --git a/apps/web/src/app/components/mode-switcher.tsx b/apps/web/src/app/components/mode-switcher.tsx index 7eb17752c5..3fc9642b9a 100644 --- a/apps/web/src/app/components/mode-switcher.tsx +++ b/apps/web/src/app/components/mode-switcher.tsx @@ -3,25 +3,47 @@ import { MoonIcon, SunIcon } from "lucide-react"; import { useTheme } from "next-themes"; import * as React from "react"; - import { Button } from "@bubba/ui/button"; export function ModeSwitcher() { const { setTheme, resolvedTheme } = useTheme(); + const [mounted, setMounted] = React.useState(false); + + // Mount handler + React.useEffect(() => { + setMounted(true); + }, []); const toggleTheme = React.useCallback(() => { setTheme(resolvedTheme === "dark" ? "light" : "dark"); }, [resolvedTheme, setTheme]); + // Prevent hydration mismatch by not rendering until mounted + if (!mounted) { + return ( + + ); + } + + const themeText = resolvedTheme === "dark" + ? "Switch to light theme" + : "Switch to dark theme"; + return ( ); } diff --git a/apps/web/src/app/components/site-footer.tsx b/apps/web/src/app/components/site-footer.tsx index 822131f73b..18d65e4cac 100644 --- a/apps/web/src/app/components/site-footer.tsx +++ b/apps/web/src/app/components/site-footer.tsx @@ -27,20 +27,24 @@ export function SiteFooter() { .

-
- - Privacy - - - Terms - -
+ ); diff --git a/apps/web/src/app/components/site-header.tsx b/apps/web/src/app/components/site-header.tsx index 84cc964611..a5fae403b8 100644 --- a/apps/web/src/app/components/site-header.tsx +++ b/apps/web/src/app/components/site-header.tsx @@ -5,14 +5,14 @@ export function SiteHeader() { return (
-
+
-
+
); diff --git a/apps/web/src/app/components/waitlist-form.tsx b/apps/web/src/app/components/waitlist-form.tsx index 02953154d0..1200c6e647 100644 --- a/apps/web/src/app/components/waitlist-form.tsx +++ b/apps/web/src/app/components/waitlist-form.tsx @@ -60,7 +60,7 @@ export function WaitlistForm() { className="inline-flex items-center gap-2 px-4 py-2 rounded-md bg-primary/10 hover:bg-primary/20 transition-colors text-primary" > Join Community - → + ); @@ -86,6 +86,7 @@ export function WaitlistForm() { className="h-12 px-4 text-base bg-background border-border/50 focus:border-primary" autoComplete="email" autoCorrect="off" + aria-label="Email address" /> @@ -96,18 +97,18 @@ export function WaitlistForm() {