"use client" import * as React from "react" import { useQueryState } from "nuqs" import { dataTableConfig, type DataTableConfig } from "@/config/data-table" import { cn } from "@/lib/utils" import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip" type FeatureFlagValue = DataTableConfig["featureFlags"][number]["value"] interface FeatureFlagsContextProps { featureFlags: FeatureFlagValue[] setFeatureFlags: (value: FeatureFlagValue[]) => void } const FeatureFlagsContext = React.createContext({ featureFlags: [], setFeatureFlags: () => {}, }) export function useFeatureFlags() { const context = React.useContext(FeatureFlagsContext) if (!context) { throw new Error( "useFeatureFlags must be used within a FeatureFlagsProvider" ) } return context } interface FeatureFlagsProviderProps { children: React.ReactNode } export function FeatureFlagsProvider({ children }: FeatureFlagsProviderProps) { const [featureFlags, setFeatureFlags] = useQueryState( "flags", { defaultValue: [], parse: (value) => value.split(",") as FeatureFlagValue[], serialize: (value) => value.join(","), eq: (a, b) => a.length === b.length && a.every((value, index) => value === b[index]), clearOnDefault: true, shallow: false, } ) return ( void setFeatureFlags(value), }} >
setFeatureFlags(value)} className="w-fit gap-0" > {dataTableConfig.featureFlags.map((flag, index) => (
{flag.tooltipTitle}
{flag.tooltipDescription}
))}
{children}
) }