diff --git a/website/app/components/card.tsx b/website/app/components/card.tsx index 4423632..0cdeaac 100644 --- a/website/app/components/card.tsx +++ b/website/app/components/card.tsx @@ -24,14 +24,17 @@ const Card = (props: iCard) => { }; return ( -
+
-

{props.name}

+

+ {props.name} +

+ ))} + + ); +}; + +export default ThemeSwitcher; diff --git a/website/app/providers/sonner.tsx b/website/app/providers/sonner.tsx index 9e3a1c4..9789c5a 100644 --- a/website/app/providers/sonner.tsx +++ b/website/app/providers/sonner.tsx @@ -11,8 +11,9 @@ const Toaster = ({ ...props }: ToasterProps) => { toastOptions={{ classNames: { toast: - "group toast group-[.toaster]:bg-zinc-900 group-[.toaster]:text-zinc-50 group-[.toaster]:border-zinc-800 group-[.toaster]:shadow-lg", - description: "group-[.toaster]:text-zinc-400 font-mono", + "group toast group-[.toaster]:bg-zinc-100 dark:group-[.toaster]:bg-zinc-900 group-[.toaster]:text-zinc-950 dark:group-[.toaster]:text-zinc-50 group-[.toaster]:border-zinc-200 dark:group-[.toaster]:border-zinc-800 group-[.toaster]:shadow-lg", + description: + "group-[.toaster]:text-zinc-600 dark:group-[.toaster]:text-zinc-400 font-mono", icon: "group-[.toaster]:mr-3", }, }} diff --git a/website/app/root.tsx b/website/app/root.tsx index 51b3b38..78d46d5 100644 --- a/website/app/root.tsx +++ b/website/app/root.tsx @@ -1,5 +1,9 @@ import type { ReactNode } from "react"; -import type { LinksFunction, MetaFunction } from "@vercel/remix"; +import type { + LinksFunction, + LoaderFunctionArgs, + MetaFunction, +} from "@vercel/remix"; import { json, @@ -25,6 +29,16 @@ import Navbar from "./components/navbar"; // Providers: import { Toaster } from "./providers/sonner"; +// Theme: +import { + ThemeBody, + ThemeHead, + ThemeProvider, + useTheme, +} from "./theme/themeProvider"; +import { getThemeSession } from "./theme/themeServer"; +import Settings from "./components/settings"; + // Links: export const links: LinksFunction = () => [ { rel: "stylesheet", href: tailwind }, @@ -82,16 +96,18 @@ export const meta: MetaFunction = () => { ]; }; -export async function loader() { +export async function loader({ request }: LoaderFunctionArgs) { const metadata = await getLatestVersion(globals.npmPackageName); - return json({ version: metadata.version }); + const themeSession = await getThemeSession(request); + return json({ version: metadata.version, theme: themeSession.getTheme() }); } // App Layout: -export function Layout({ children }: { children: ReactNode }) { +function App({ children }: { children: ReactNode }) { const data = useLoaderData(); + const [theme] = useTheme(); return ( - + @@ -125,18 +141,21 @@ export function Layout({ children }: { children: ReactNode }) { +
+ {children} +