diff --git a/app/layout.tsx b/app/layout.tsx
index 1f3e64a..38d30fa 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -5,8 +5,7 @@ import { Nav } from '@/components/nav'
import { SwRegistrar } from '@/components/sw-registrar'
import { BackendHealthCheck } from '@/components/backend-health-check'
import { SyncStatusBanner } from '@/components/ui/sync-status-banner'
-import { UnsupportedChainBanner } from '@/components/wallet/unsupported-chain-banner'
-
+import { ThemeProvider } from '@/components/theme-provider'
export const metadata: Metadata = {
title: {
default: 'GuildPass',
@@ -23,20 +22,26 @@ export const metadata: Metadata = {
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
-
+
-
- {/* Registers the service worker for dashboard offline caching */}
-
- {/* One-time startup check so a misconfigured/unreachable backend
- surfaces immediately, not just after a user action fails */}
-
- {/* Offline/Degraded status banner */}
-
-
-
- {children}
-
+
+
+ {/* Registers the service worker for dashboard offline caching */}
+
+ {/* One-time startup check so a misconfigured/unreachable backend
+ surfaces immediately, not just after a user action fails */}
+
+ {/* Offline/Degraded status banner */}
+
+
+ {children}
+
+
)
diff --git a/components/nav.tsx b/components/nav.tsx
index f204c14..4c985ea 100644
--- a/components/nav.tsx
+++ b/components/nav.tsx
@@ -13,6 +13,7 @@ import { features } from "@/lib/features";
import { config } from "@/lib/config";
import { useState, useRef, useEffect } from "react";
import { getNavAdminModules } from "@/lib/admin-modules";
+import { ThemeToggle } from "@/components/theme-toggle";
const AVAILABLE_COMMUNITIES = [
{ id: 'guildpass-demo', name: 'GuildPass Demo' },
@@ -164,7 +165,6 @@ export function Nav() {
const items = [
{ href: `${prefix}/dashboard` as Route, label: "Dashboard", enabled: true },
- { href: `/analytics` as Route, label: "Analytics", enabled: true },
...adminNavItems.map((item) => ({ ...item, enabled: true })),
{
href: `${prefix}/resources/alpha` as Route,
@@ -213,6 +213,7 @@ export function Nav() {
))}
{features.multiCommunity && }
+
diff --git a/components/theme-provider.tsx b/components/theme-provider.tsx
new file mode 100644
index 0000000..a9d0bf2
--- /dev/null
+++ b/components/theme-provider.tsx
@@ -0,0 +1,7 @@
+"use client"
+
+import * as React from "react"
+import { ThemeProvider as NextThemesProvider } from "next-themes"
+export function ThemeProvider({ children, ...props }: React.ComponentProps) {
+ return {children}
+}
diff --git a/components/theme-toggle.tsx b/components/theme-toggle.tsx
new file mode 100644
index 0000000..fd3955c
--- /dev/null
+++ b/components/theme-toggle.tsx
@@ -0,0 +1,20 @@
+"use client"
+
+import * as React from "react"
+import { Moon, Sun } from "lucide-react"
+import { useTheme } from "next-themes"
+
+export function ThemeToggle() {
+ const { setTheme, theme } = useTheme()
+
+ return (
+
+ )
+}
diff --git a/package.json b/package.json
index 8aa724d..e8e110d 100644
--- a/package.json
+++ b/package.json
@@ -36,6 +36,7 @@
"diff": "^9.0.0",
"lucide-react": "^0.435.0",
"next": "14.2.5",
+ "next-themes": "^0.4.6",
"postcss": "^8.4.38",
"react": "18.2.0",
"react-dom": "18.2.0",