import { Card, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Switch } from '@/components/ui/switch' import { FeatureToggles } from '@/types/project' import { BookOpen, Code, Cube, Database, FileText, Flask, FlowArrow, Image, Lightbulb, PaintBrush, Play, Tree, Wrench, } from '@phosphor-icons/react' import { ScrollArea } from '@/components/ui/scroll-area' import featureToggleSettings from '@/config/feature-toggle-settings.json' import type { ComponentType } from 'react' interface FeatureToggleSettingsProps { features: FeatureToggles onFeaturesChange: (features: FeatureToggles) => void } type FeatureToggleIconKey = | 'BookOpen' | 'Code' | 'Cube' | 'Database' | 'FileText' | 'Flask' | 'FlowArrow' | 'Image' | 'Lightbulb' | 'PaintBrush' | 'Play' | 'Tree' | 'Wrench' const iconMap: Record> = { BookOpen, Code, Cube, Database, FileText, Flask, FlowArrow, Image, Lightbulb, PaintBrush, Play, Tree, Wrench, } type FeatureToggleItem = { key: keyof FeatureToggles label: string description: string icon: FeatureToggleIconKey } const featuresList = featureToggleSettings as FeatureToggleItem[] function FeatureToggleHeader({ enabledCount, totalCount }: { enabledCount: number; totalCount: number }) { return (

Feature Toggles

Enable or disable features to customize your workspace. {enabledCount} of {totalCount} features enabled.

) } function FeatureToggleCard({ item, enabled, onToggle, }: { item: FeatureToggleItem enabled: boolean onToggle: (value: boolean) => void }) { const Icon = iconMap[item.icon] return (
{item.label} {item.description}
) } function FeatureToggleGrid({ items, features, onToggle, }: { items: FeatureToggleItem[] features: FeatureToggles onToggle: (key: keyof FeatureToggles, value: boolean) => void }) { return (
{items.map((item) => ( onToggle(item.key, checked)} /> ))}
) } export function FeatureToggleSettings({ features, onFeaturesChange }: FeatureToggleSettingsProps) { const handleToggle = (key: keyof FeatureToggles, value: boolean) => { onFeaturesChange({ ...features, [key]: value, }) } const enabledCount = Object.values(features).filter(Boolean).length const totalCount = Object.keys(features).length return (
) }