"use client"; interface FeatureFlagCardProps { flag: { key: string; label: string; description: string; category: "security" | "network" | "policies" | "runtime" | "cli" | "health"; type: "boolean" | "enum"; enumValues?: string[] | null; effectiveValue: string; source: "db" | "env" | "default"; requiresRestart: boolean; warningLevel?: "info" | "caution" | "danger"; }; onToggle: (key: string, newValue: string) => void; onReset: (key: string) => void; saving?: boolean; } const CATEGORY_STYLES: Record< FeatureFlagCardProps["flag"]["category"], { bg: string; border: string; text: string; label: string } > = { security: { bg: "bg-red-50 dark:bg-red-500/15", border: "border-red-200 dark:border-red-500/20", text: "text-red-700 dark:text-red-300", label: "Security", }, network: { bg: "bg-sky-50 dark:bg-blue-500/15", border: "border-sky-200 dark:border-blue-500/20", text: "text-sky-700 dark:text-blue-300", label: "Network", }, policies: { bg: "bg-amber-50 dark:bg-amber-500/15", border: "border-amber-200 dark:border-amber-500/20", text: "text-amber-700 dark:text-amber-300", label: "Policies", }, runtime: { bg: "bg-violet-50 dark:bg-purple-500/15", border: "border-violet-200 dark:border-purple-500/20", text: "text-violet-700 dark:text-purple-300", label: "Runtime", }, cli: { bg: "bg-emerald-50 dark:bg-green-500/15", border: "border-emerald-200 dark:border-green-500/20", text: "text-emerald-700 dark:text-green-300", label: "CLI", }, health: { bg: "bg-cyan-50 dark:bg-cyan-500/15", border: "border-cyan-200 dark:border-cyan-500/20", text: "text-cyan-700 dark:text-cyan-300", label: "Health", }, }; const SOURCE_STYLES: Record< FeatureFlagCardProps["flag"]["source"], { bg: string; border: string; text: string; label: string } > = { db: { bg: "bg-sky-50 dark:bg-blue-500/20", border: "border-sky-200 dark:border-blue-500/30", text: "text-sky-700 dark:text-blue-300", label: "DB", }, env: { bg: "bg-amber-50 dark:bg-amber-500/20", border: "border-amber-200 dark:border-amber-500/30", text: "text-amber-700 dark:text-amber-300", label: "ENV", }, default: { bg: "bg-slate-100 dark:bg-slate-500/20", border: "border-slate-200 dark:border-slate-500/30", text: "text-slate-600 dark:text-slate-300", label: "DEF", }, }; function isEnabled(value: string): boolean { return value === "true" || value === "1" || value === "yes"; } function Spinner() { return (