diff --git a/app/apple-icon.tsx b/app/apple-icon.tsx
new file mode 100644
index 0000000..f1926a0
--- /dev/null
+++ b/app/apple-icon.tsx
@@ -0,0 +1,54 @@
+import { ImageResponse } from 'next/og'
+
+export const size = {
+ width: 180,
+ height: 180,
+}
+export const contentType = 'image/png'
+
+export default function AppleIcon() {
+ return new ImageResponse(
+ (
+
+
+
diff --git a/components/theme-toggle.tsx b/components/theme-toggle.tsx
new file mode 100644
index 0000000..8f9062f
--- /dev/null
+++ b/components/theme-toggle.tsx
@@ -0,0 +1,54 @@
+'use client'
+
+import { useEffect, useState } from 'react'
+import { useTheme } from 'next-themes'
+import { Button } from '@/components/ui/button'
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from '@/components/ui/dropdown-menu'
+import { Sun, Moon, Monitor } from 'lucide-react'
+import { cn } from '@/lib/utils'
+
+const OPTIONS = [
+ { value: 'light', label: 'Light', icon: Sun },
+ { value: 'dark', label: 'Dark', icon: Moon },
+ { value: 'system', label: 'System', icon: Monitor },
+] as const
+
+export function ThemeToggle() {
+ const { theme, setTheme } = useTheme()
+ // Avoid rendering an icon that doesn't match the persisted theme before hydration
+ const [mounted, setMounted] = useState(false)
+ useEffect(() => setMounted(true), [])
+
+ const current = OPTIONS.find((o) => o.value === theme) ?? OPTIONS[2]
+ const CurrentIcon = current.icon
+
+ return (
+
+
+
+
+
+ {OPTIONS.map((option) => {
+ const Icon = option.icon
+ return (
+ setTheme(option.value)}
+ className={cn('gap-2', theme === option.value && 'font-medium')}
+ >
+
+ {option.label}
+
+ )
+ })}
+
+
+ )
+}
diff --git a/components/ui/switch.tsx b/components/ui/switch.tsx
index 3c4cfa3..70d5118 100644
--- a/components/ui/switch.tsx
+++ b/components/ui/switch.tsx
@@ -13,7 +13,7 @@ function Switch({
",
"homepage": "https://codeplans.ai",
diff --git a/public/apple-icon.png b/public/apple-icon.png
deleted file mode 100644
index f9418b4..0000000
Binary files a/public/apple-icon.png and /dev/null differ
diff --git a/public/icon-dark-32x32.png b/public/icon-dark-32x32.png
deleted file mode 100644
index 12c825a..0000000
Binary files a/public/icon-dark-32x32.png and /dev/null differ
diff --git a/public/icon-light-32x32.png b/public/icon-light-32x32.png
deleted file mode 100644
index a3462cc..0000000
Binary files a/public/icon-light-32x32.png and /dev/null differ
diff --git a/public/icon.svg b/public/icon.svg
deleted file mode 100644
index 5c11e6c..0000000
--- a/public/icon.svg
+++ /dev/null
@@ -1,26 +0,0 @@
-
\ No newline at end of file