Files
portfolio/services/nextjs/components/ui/mode-toggle.tsx
Mayne0213 913575ecc0 FIX(app): replace submodule with files
- Remove services/nextjs as git submodule
- Add complete Next.js application source code
- Include package.json and package-lock.json for npm cache
- This fixes the GitHub Actions cache error
2025-11-23 23:43:22 +09:00

39 lines
945 B
TypeScript

"use client"
import * as React from "react"
import { Moon, Sun } from "lucide-react"
import { useTheme } from "next-themes"
import { Button } from "./button"
export function ModeToggle() {
const [mounted, setMounted] = React.useState(false)
const { theme, setTheme } = useTheme()
// useEffect only runs on the client, so now we can safely show the UI
React.useEffect(() => {
setMounted(true)
}, [])
if (!mounted) {
return null
}
const toggleTheme = () => {
setTheme(theme === "dark" ? "light" : "dark")
}
return (
<Button
variant="ghost"
size="icon"
onClick={toggleTheme}
>
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
<span className="sr-only">Toggle theme</span>
</Button>
)
}