diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx
index 6e4aeb9..f17d471 100644
--- a/src/AppRouter.tsx
+++ b/src/AppRouter.tsx
@@ -9,6 +9,7 @@ import FollowingPage from "./pages/FollowingPage";
import Nip05ProfilePage from "./pages/Nip05ProfilePage";
import ArticleByDTagPage from "./pages/ArticleByDTagPage";
import { NIP19Page } from "./pages/NIP19Page";
+import SettingsPage from "./pages/SettingsPage";
import NotFound from "./pages/NotFound";
import HomePage from "./pages/HomePage";
@@ -24,6 +25,7 @@ export function AppRouter() {
} />
} />
} />
+ } />
{/* NIP-05 profile route (e.g., /p/alice@example.com) */}
} />
{/* Article by d-tag route (e.g., /article/my-article-slug) */}
diff --git a/src/components/Header.tsx b/src/components/Header.tsx
index 9120bdf..90c2edf 100644
--- a/src/components/Header.tsx
+++ b/src/components/Header.tsx
@@ -2,7 +2,7 @@ import { Link } from 'react-router-dom';
import { useCurrentUser } from '@/hooks/useCurrentUser';
import { LoginArea } from '@/components/auth/LoginArea';
import { Button } from '@/components/ui/button';
-import { PenSquare, Bookmark, Users } from 'lucide-react';
+import { PenSquare, Bookmark, Users, Settings } from 'lucide-react';
import { ThemeToggle } from '@/components/ThemeToggle';
export function Header() {
@@ -46,12 +46,22 @@ export function Header() {
{/* Desktop Actions */}
+
{/* Mobile: show LoginArea in header (bottom nav is still used for nav) */}
-
+
+
diff --git a/src/pages/SettingsPage.tsx b/src/pages/SettingsPage.tsx
new file mode 100644
index 0000000..51df6d5
--- /dev/null
+++ b/src/pages/SettingsPage.tsx
@@ -0,0 +1,82 @@
+import { Settings, Palette, Wifi } from 'lucide-react';
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
+import { Label } from '@/components/ui/label';
+import { Switch } from '@/components/ui/switch';
+import { RelayListManager } from '@/components/RelayListManager';
+import { useTheme } from '@/hooks/useTheme';
+
+export function SettingsPage() {
+ const { theme, setTheme } = useTheme();
+
+ const isDarkMode = theme === 'dark';
+
+ const handleThemeToggle = () => {
+ setTheme(isDarkMode ? 'light' : 'dark');
+ };
+
+ return (
+
+ {/* Page Header */}
+
+
+
+
Settings
+
+
+ Manage your preferences and relay connections
+
+
+
+ {/* Settings Sections */}
+
+ {/* Appearance Settings */}
+
+
+
+
+ Customize how the application looks
+
+
+
+
+
+
+
+ Switch between light and dark themes
+
+
+
+
+
+
+
+ {/* Relay Settings */}
+
+
+
+
+ Relays
+
+
+ Manage your Nostr relay connections. Read relays are used to fetch content, while write relays receive your published events.
+
+
+
+
+
+
+
+
+ );
+}
+
+export default SettingsPage;