{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "settings-advanced",
  "title": "Settings Advanced",
  "description": "Developer tools and experimental features configuration.",
  "registryDependencies": [
    "alert-dialog",
    "badge",
    "button",
    "card",
    "field",
    "input-group",
    "select",
    "separator",
    "switch"
  ],
  "files": [
    {
      "path": "registry/new-york/blocks/settings/settings-advanced.tsx",
      "content": "\"use client\";\n\nimport {\n  Code,\n  Database,\n  Loader2,\n  Save,\n  Settings,\n  TestTube,\n  Trash2,\n} from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from \"@/registry/new-york/ui/alert-dialog\";\nimport { Badge } from \"@/registry/new-york/ui/badge\";\nimport { Button } from \"@/registry/new-york/ui/button\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/registry/new-york/ui/card\";\nimport { FieldDescription, FieldLabel } from \"@/registry/new-york/ui/field\";\nimport {\n  InputGroup,\n  InputGroupInput,\n} from \"@/registry/new-york/ui/input-group\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/new-york/ui/select\";\nimport { Separator } from \"@/registry/new-york/ui/separator\";\nimport { Switch } from \"@/registry/new-york/ui/switch\";\n\nexport interface FeatureFlag {\n  id: string;\n  name: string;\n  description: string;\n  enabled: boolean;\n  experimental?: boolean;\n}\n\nexport interface SettingsAdvancedProps {\n  featureFlags?: FeatureFlag[];\n  debugMode?: boolean;\n  apiRateLimit?: number;\n  loggingLevel?: \"error\" | \"warn\" | \"info\" | \"debug\";\n  onToggleFeature?: (id: string, enabled: boolean) => Promise<void>;\n  onUpdateSettings?: (settings: {\n    debugMode?: boolean;\n    apiRateLimit?: number;\n    loggingLevel?: \"error\" | \"warn\" | \"info\" | \"debug\";\n  }) => Promise<void>;\n  onClearCache?: () => Promise<void>;\n  className?: string;\n}\n\nexport default function SettingsAdvanced({\n  featureFlags = [],\n  debugMode = false,\n  apiRateLimit = 1000,\n  loggingLevel = \"info\",\n  onToggleFeature,\n  onUpdateSettings,\n  onClearCache,\n  className,\n}: SettingsAdvancedProps) {\n  const [isSaving, setIsSaving] = useState(false);\n  const [localSettings, setLocalSettings] = useState({\n    debugMode,\n    apiRateLimit,\n    loggingLevel,\n  });\n\n  const handleSave = async () => {\n    setIsSaving(true);\n    try {\n      await onUpdateSettings?.(localSettings);\n    } finally {\n      setIsSaving(false);\n    }\n  };\n\n  return (\n    <Card className={cn(\"w-full shadow-xs\", className)}>\n      <CardHeader>\n        <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n          <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n            <CardTitle className=\"wrap-break-word\">Advanced Settings</CardTitle>\n            <CardDescription className=\"wrap-break-word\">\n              Developer tools and experimental features\n            </CardDescription>\n          </div>\n          <Button\n            className=\"w-full sm:w-auto\"\n            disabled={isSaving}\n            onClick={handleSave}\n            type=\"button\"\n          >\n            {isSaving ? (\n              <>\n                <Loader2 className=\"size-4 animate-spin\" />\n                Saving…\n              </>\n            ) : (\n              <>\n                <Save className=\"size-4\" />\n                Save Changes\n              </>\n            )}\n          </Button>\n        </div>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex flex-col gap-6\">\n          {/* Developer Settings */}\n          <div className=\"grid gap-4 md:grid-cols-2\">\n            <div className=\"flex flex-col gap-4 rounded-lg border p-4\">\n              <div className=\"flex items-center gap-2\">\n                <div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n                  <Code className=\"size-4\" />\n                </div>\n                <FieldLabel className=\"mb-0\">Debug Mode</FieldLabel>\n              </div>\n              <div className=\"flex items-center justify-between\">\n                <FieldDescription>\n                  Enable debug logging and diagnostics\n                </FieldDescription>\n                <Switch\n                  checked={localSettings.debugMode}\n                  onCheckedChange={(checked) =>\n                    setLocalSettings((prev) => ({\n                      ...prev,\n                      debugMode: checked,\n                    }))\n                  }\n                />\n              </div>\n            </div>\n\n            <div className=\"flex flex-col gap-4 rounded-lg border p-4\">\n              <div className=\"flex items-center gap-2\">\n                <div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n                  <Settings className=\"size-4\" />\n                </div>\n                <FieldLabel className=\"mb-0\" htmlFor=\"logging-level\">\n                  Logging Level\n                </FieldLabel>\n              </div>\n              <Select\n                onValueChange={(value: \"error\" | \"warn\" | \"info\" | \"debug\") =>\n                  setLocalSettings((prev) => ({ ...prev, loggingLevel: value }))\n                }\n                value={localSettings.loggingLevel}\n              >\n                <SelectTrigger id=\"logging-level\">\n                  <SelectValue />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"error\">Error</SelectItem>\n                  <SelectItem value=\"warn\">Warning</SelectItem>\n                  <SelectItem value=\"info\">Info</SelectItem>\n                  <SelectItem value=\"debug\">Debug</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n\n            <div className=\"flex flex-col gap-4 rounded-lg border p-4\">\n              <div className=\"flex items-center gap-2\">\n                <div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n                  <Database className=\"size-4\" />\n                </div>\n                <FieldLabel className=\"mb-0\" htmlFor=\"rate-limit\">\n                  API Rate Limit\n                </FieldLabel>\n              </div>\n              <InputGroup>\n                <InputGroupInput\n                  id=\"rate-limit\"\n                  onChange={(e) =>\n                    setLocalSettings((prev) => ({\n                      ...prev,\n                      apiRateLimit: Number.parseInt(e.target.value) || 1000,\n                    }))\n                  }\n                  type=\"number\"\n                  value={localSettings.apiRateLimit}\n                />\n              </InputGroup>\n              <FieldDescription>Requests per hour</FieldDescription>\n            </div>\n          </div>\n\n          <Separator />\n\n          {/* Feature Flags */}\n          <div className=\"flex flex-col gap-4\">\n            <div className=\"flex items-center gap-2\">\n              <TestTube className=\"size-5 text-muted-foreground\" />\n              <h3 className=\"font-semibold text-base\">Feature Flags</h3>\n            </div>\n            {featureFlags.length === 0 ? (\n              <p className=\"text-muted-foreground text-sm\">\n                No feature flags available\n              </p>\n            ) : (\n              <div className=\"grid gap-3 md:grid-cols-2\">\n                {featureFlags.map((flag) => (\n                  <div\n                    className=\"flex items-center justify-between rounded-lg border p-4\"\n                    key={flag.id}\n                  >\n                    <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n                      <div className=\"flex items-center gap-2\">\n                        <span className=\"font-medium text-sm\">{flag.name}</span>\n                        {flag.experimental && (\n                          <Badge className=\"text-xs\" variant=\"secondary\">\n                            Experimental\n                          </Badge>\n                        )}\n                      </div>\n                      <FieldDescription className=\"text-xs\">\n                        {flag.description}\n                      </FieldDescription>\n                    </div>\n                    <Switch\n                      checked={flag.enabled}\n                      onCheckedChange={(checked) =>\n                        onToggleFeature?.(flag.id, checked)\n                      }\n                    />\n                  </div>\n                ))}\n              </div>\n            )}\n          </div>\n\n          <Separator />\n\n          {/* Cache Management */}\n          <div className=\"flex flex-col gap-4 rounded-lg border p-4\">\n            <div className=\"flex items-center gap-2\">\n              <div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n                <Trash2 className=\"size-4\" />\n              </div>\n              <FieldLabel className=\"mb-0\">Cache Management</FieldLabel>\n            </div>\n            <AlertDialog>\n              <AlertDialogTrigger asChild>\n                <Button\n                  className=\"w-full sm:w-auto\"\n                  type=\"button\"\n                  variant=\"outline\"\n                >\n                  <Trash2 className=\"size-4\" />\n                  Clear Cache\n                </Button>\n              </AlertDialogTrigger>\n              <AlertDialogContent>\n                <AlertDialogHeader>\n                  <AlertDialogTitle>Clear Cache?</AlertDialogTitle>\n                  <AlertDialogDescription>\n                    This will clear all cached data. The application may be\n                    slower on the next load as it rebuilds the cache.\n                  </AlertDialogDescription>\n                </AlertDialogHeader>\n                <AlertDialogFooter>\n                  <AlertDialogCancel>Cancel</AlertDialogCancel>\n                  <AlertDialogAction onClick={onClearCache}>\n                    Clear Cache\n                  </AlertDialogAction>\n                </AlertDialogFooter>\n              </AlertDialogContent>\n            </AlertDialog>\n            <FieldDescription>\n              Clear cached data to free up memory and refresh content\n            </FieldDescription>\n          </div>\n        </div>\n      </CardContent>\n    </Card>\n  );\n}\n",
      "type": "registry:ui"
    }
  ],
  "categories": [
    "block",
    "settings"
  ],
  "type": "registry:ui"
}