deepwiki-open / src /components /theme-toggle.tsx
bhavinmatariya's picture
Initial complete codebase with Git LFS for binary files
8e0dd55
"use client";
import { useTheme } from "next-themes";
export default function ThemeToggle() {
const { theme, setTheme } = useTheme();
return (
<button
type="button"
className="theme-toggle-button cursor-pointer bg-transparent border border-[var(--border-color)] text-[var(--foreground)] hover:border-[var(--accent-primary)] active:bg-[var(--accent-secondary)]/10 rounded-md p-2 transition-all duration-300"
title="Toggle theme"
aria-label="Toggle theme"
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
>
{/* Japanese-inspired sun and moon icons */}
<div className="relative w-5 h-5">
{/* Sun icon (light mode) */}
<div className={`absolute inset-0 transition-opacity duration-300 ${theme === 'dark' ? 'opacity-0' : 'opacity-100'}`}>
<svg viewBox="0 0 24 24" fill="none" className="w-5 h-5" aria-label="Light Mode">
<circle cx="12" cy="12" r="5" stroke="currentColor" strokeWidth="2" />
<path d="M12 2V4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M12 20V22" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M4 12L2 12" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M22 12L20 12" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M19.778 4.22183L17.6569 6.34315" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M6.34309 17.6569L4.22177 19.7782" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M19.778 19.7782L17.6569 17.6569" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
<path d="M6.34309 6.34315L4.22177 4.22183" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
</svg>
</div>
{/* Moon icon (dark mode) */}
<div className={`absolute inset-0 transition-opacity duration-300 ${theme === 'dark' ? 'opacity-100' : 'opacity-0'}`}>
<svg viewBox="0 0 24 24" fill="none" className="w-5 h-5" aria-label="Dark Mode">
<path
d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
fill="none"
/>
</svg>
</div>
</div>
</button>
);
}