1+ "use client"
12import {
23 Card ,
34 CardHeader ,
@@ -14,8 +15,17 @@ import {
1415 SelectItem ,
1516} from "@/components/ui/select" ;
1617import { Slider } from "@/components/ui/slider" ;
18+ import { useTheme } from "next-themes" ;
19+ import { useEffect , useState } from "react" ;
1720
1821export default function Component ( ) {
22+ const { setTheme, theme } = useTheme ( ) ;
23+ const [ isClient , setIsClient ] = useState ( false ) ;
24+
25+ useEffect ( ( ) => {
26+ setIsClient ( true ) ;
27+ } , [ ] ) ;
28+
1929 return (
2030 < div className = "grid gap-6" >
2131 < Card >
@@ -26,31 +36,25 @@ export default function Component() {
2636 </ CardDescription >
2737 </ CardHeader >
2838 < CardContent >
29- < form className = "grid gap-4" >
30- < div className = "grid gap-2" >
31- < Label htmlFor = "theme" > Theme</ Label >
32- < Select name = "theme" >
33- < SelectTrigger >
34- < SelectValue placeholder = "Select a theme" />
35- </ SelectTrigger >
36- < SelectContent >
37- < SelectItem value = "light" > Light</ SelectItem >
38- < SelectItem value = "dark" > Dark</ SelectItem >
39- < SelectItem value = "system" > System</ SelectItem >
40- </ SelectContent >
41- </ Select >
42- </ div >
43- < div className = "grid gap-2" >
44- < Label htmlFor = "font-size" > Font Size</ Label >
45- < Slider
46- id = "font-size"
47- defaultValue = { [ 16 ] }
48- min = { 12 }
49- max = { 24 }
50- step = { 2 }
51- />
52- </ div >
53- </ form >
39+ { ! isClient ? (
40+ < > Loading...</ >
41+ ) :
42+ < form className = "grid gap-4" >
43+ < div className = "grid gap-2" >
44+ < Label htmlFor = "theme" > Theme</ Label >
45+ < Select name = "theme" value = { theme } onValueChange = { ( v ) => setTheme ( v ) } >
46+ < SelectTrigger >
47+ < SelectValue placeholder = "Select a theme" />
48+ </ SelectTrigger >
49+ < SelectContent >
50+ < SelectItem value = "light" > Light</ SelectItem >
51+ < SelectItem value = "dark" > Dark</ SelectItem >
52+ < SelectItem value = "system" > System</ SelectItem >
53+ </ SelectContent >
54+ </ Select >
55+ </ div >
56+ </ form >
57+ }
5458 </ CardContent >
5559 </ Card >
5660 </ div >
0 commit comments