{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "settings-form",
  "title": "Settings Form",
  "description": "A responsive workspace settings form composed from Rivet form controls.",
  "registryDependencies": [
    "@rivetui/button",
    "@rivetui/field",
    "@rivetui/input",
    "@rivetui/number-field",
    "@rivetui/select",
    "@rivetui/switch"
  ],
  "files": [
    {
      "path": "registry/rivetui/blocks/settings-form/settings-form.tsx",
      "content": "\"use client\";\n\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/registry/rivetui/components/button/button\";\nimport { Field, FieldDescription, FieldLabel } from \"@/registry/rivetui/components/field/field\";\nimport { Input } from \"@/registry/rivetui/components/input/input\";\nimport {\n  NumberField,\n  NumberFieldDecrement,\n  NumberFieldGroup,\n  NumberFieldIncrement,\n  NumberFieldInput,\n} from \"@/registry/rivetui/components/number-field/number-field\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/registry/rivetui/components/select/select\";\nimport { Switch } from \"@/registry/rivetui/components/switch/switch\";\n\nconst regions = [\n  { label: \"Frankfurt · eu-central-1\", value: \"fra\" },\n  { label: \"London · eu-west-2\", value: \"lhr\" },\n  { label: \"Virginia · us-east-1\", value: \"iad\" },\n] as const;\n\ntype SettingsFormProps = Omit<React.ComponentProps<\"form\">, \"children\">;\n\nfunction SettingsForm({ className, onSubmit, ...props }: SettingsFormProps) {\n  return (\n    <form\n      aria-labelledby=\"workspace-settings-title\"\n      className={cn(\"w-full max-w-3xl border border-border bg-background\", className)}\n      onSubmit={onSubmit}\n      {...props}\n    >\n      <header className=\"border-b border-border p-5 sm:p-6\">\n        <p className=\"font-mono text-[0.625rem] uppercase tracking-[0.14em] text-muted-foreground\">\n          Workspace / General\n        </p>\n        <h2\n          id=\"workspace-settings-title\"\n          className=\"mt-3 text-xl font-semibold tracking-[-0.035em]\"\n        >\n          Workspace settings\n        </h2>\n        <p className=\"mt-2 max-w-xl text-sm leading-6 text-muted-foreground\">\n          Configure the defaults used for new deployments and operational data.\n        </p>\n      </header>\n\n      <div className=\"grid gap-6 p-5 sm:p-6\">\n        <div className=\"grid gap-6 sm:grid-cols-2\">\n          <Field>\n            <FieldLabel htmlFor=\"workspace-name\">Workspace name</FieldLabel>\n            <Input id=\"workspace-name\" name=\"workspaceName\" defaultValue=\"Northstar Systems\" />\n            <FieldDescription>Shown to every member of the workspace.</FieldDescription>\n          </Field>\n\n          <Field>\n            <FieldLabel htmlFor=\"default-region\">Default region</FieldLabel>\n            <Select items={regions} defaultValue=\"fra\" name=\"region\">\n              <SelectTrigger id=\"default-region\" aria-describedby=\"default-region-description\">\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                {regions.map((region) => (\n                  <SelectItem key={region.value} value={region.value}>\n                    {region.label}\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n            <FieldDescription id=\"default-region-description\">\n              New services start in this region.\n            </FieldDescription>\n          </Field>\n        </div>\n\n        <div className=\"grid gap-6 border-t border-border pt-6 sm:grid-cols-2\">\n          <Field>\n            <FieldLabel htmlFor=\"retention-days\">Log retention</FieldLabel>\n            <NumberField\n              id=\"retention-days\"\n              defaultValue={30}\n              min={7}\n              max={90}\n              step={1}\n              name=\"retentionDays\"\n            >\n              <NumberFieldGroup>\n                <NumberFieldDecrement />\n                <NumberFieldInput aria-describedby=\"retention-description\" />\n                <NumberFieldIncrement />\n              </NumberFieldGroup>\n            </NumberField>\n            <FieldDescription id=\"retention-description\">Between 7 and 90 days.</FieldDescription>\n          </Field>\n\n          <div className=\"flex min-h-24 items-start justify-between gap-6 border border-border p-4\">\n            <div className=\"min-w-0\">\n              <label htmlFor=\"preview-features\" className=\"text-sm font-medium\">\n                Preview features\n              </label>\n              <p\n                id=\"preview-features-description\"\n                className=\"mt-1 text-sm leading-5 text-muted-foreground\"\n              >\n                Enable qualified beta capabilities for this workspace.\n              </p>\n            </div>\n            <Switch\n              id=\"preview-features\"\n              name=\"previewFeatures\"\n              defaultChecked\n              aria-describedby=\"preview-features-description\"\n            />\n          </div>\n        </div>\n      </div>\n\n      <footer className=\"flex flex-col-reverse gap-2 border-t border-border p-5 sm:flex-row sm:justify-end sm:p-6\">\n        <Button type=\"reset\" variant=\"outline\">\n          Reset\n        </Button>\n        <Button type=\"submit\">Save changes</Button>\n      </footer>\n    </form>\n  );\n}\n\nexport type { SettingsFormProps };\nexport { SettingsForm };\n",
      "type": "registry:component",
      "target": "components/blocks/settings-form.tsx"
    }
  ],
  "categories": [
    "forms",
    "settings"
  ],
  "type": "registry:block"
}