1- "use client" ;
21import Card from "@/components/card" ;
3- import {
4- useFeatureFlagsStore ,
5- useHydratedFeatureFlags ,
6- type FeatureFlagKey ,
7- } from "@/stores/featureFlags" ;
2+ import { getFlagsFromServerCookie } from "../actions" ;
3+ import { ToggleFeature } from "./_toggleFeature" ;
4+
5+ const Page = async ( ) => {
6+ const flags = await getFlagsFromServerCookie ( ) ;
87
9- const Page = ( ) => {
108 return (
119 < >
1210 < h1 className = "text-4xl" > Instellingen</ h1 >
@@ -21,18 +19,22 @@ const Page = () => {
2119
2220 < div className = "space-y-5" >
2321 < ToggleFeature
22+ flags = { flags }
2423 featureLabel = { "Mijn Zaken" }
2524 featureName = "feature_MijnZaken"
2625 />
2726 < ToggleFeature
27+ flags = { flags }
2828 featureLabel = { "Mijn Taken" }
2929 featureName = "feature_MijnTaken"
3030 />
3131 < ToggleFeature
32+ flags = { flags }
3233 featureLabel = { "Mijn Producten" }
3334 featureName = "feature_MijnProducten"
3435 />
3536 < ToggleFeature
37+ flags = { flags }
3638 featureLabel = { "RegelRecht" }
3739 featureName = "feature_RegelRecht"
3840 />
@@ -42,48 +44,4 @@ const Page = () => {
4244 ) ;
4345} ;
4446
45- const ToggleFeature = ( {
46- featureLabel,
47- featureName,
48- } : {
49- featureLabel : string ;
50- featureName : FeatureFlagKey ;
51- } ) => {
52- const isHydrated = useHydratedFeatureFlags ( ) ;
53- const isToggled = useFeatureFlagsStore ( ( s ) => s . flags [ featureName ] ) ;
54- console . log ( isToggled ) ;
55- const toggleFlag = useFeatureFlagsStore ( ( s ) => s . toggleFlag ) ;
56-
57- const handleToggle = ( ) => toggleFlag ( featureName ) ;
58-
59- if ( ! isHydrated ) return null ;
60-
61- return (
62- < div className = "flex items-center gap-3" >
63- < label className = "text-base font-medium" > { featureLabel } </ label >
64-
65- < div
66- className = { `flex h-6 w-12 cursor-pointer items-center rounded-full border border-gray-300 shadow-2xl transition-all duration-100 ${
67- isToggled ? "bg-blue-100" : "bg-gray-100"
68- } `}
69- onClick = { handleToggle }
70- role = "switch"
71- aria-checked = { isToggled }
72- tabIndex = { 0 }
73- onKeyDown = { ( e ) => {
74- if ( e . key === "Enter" || e . key === " " ) handleToggle ( ) ;
75- } }
76- >
77- < div
78- className = { `flex h-6 w-6 transform items-center justify-center rounded-full shadow-lg transition-transform duration-400 ${
79- isToggled
80- ? "bg-primary translate-x-[22px]"
81- : "translate-x-0 bg-gray-600"
82- } `}
83- />
84- </ div >
85- </ div >
86- ) ;
87- } ;
88-
8947export default Page ;
0 commit comments