{
  "Accordion": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'secondary'",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'card' | 'list' | null",
      "default": "'card'",
      "required": false,
      "description": ""
    }
  ],
  "Alert": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'solid' | 'subtle' | 'surface' | 'outline' | 'default' | 'destructive' | 'success' | 'warning' | null",
      "default": "'solid'",
      "required": false,
      "description": ""
    }
  ],
  "Avatar": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'black'",
      "required": false,
      "description": ""
    },
    {
      "name": "shape",
      "type": "'circle' | 'square' | null",
      "default": "'circle'",
      "required": false,
      "description": "CBAR names these `shape` and `square`; the round one is the default."
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | '2xs' | 'xs' | 'xl' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'solid' | 'subtle' | 'outline' | null",
      "default": "'subtle'",
      "required": false,
      "description": ""
    }
  ],
  "Badge": [
    {
      "name": "asChild",
      "type": "boolean",
      "default": "false",
      "required": false,
      "description": "Render the child element instead of a `<span>` — e.g. to make it a link."
    },
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'secondary' | 'solid' | 'subtle' | 'surface' | 'outline' | 'default' | 'destructive' | 'success' | 'warning' | 'ghost' | null",
      "default": "'solid'",
      "required": false,
      "description": ""
    }
  ],
  "BreadcrumbLink": [
    {
      "name": "asChild",
      "type": "boolean",
      "required": false,
      "description": "Render the child element instead of an `<a>` — e.g. a router `<Link>`."
    }
  ],
  "BreadcrumbList": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'secondary'",
      "required": false,
      "description": "Only the separator takes palette colour; CBAR draws it turquoise."
    },
    {
      "name": "size",
      "type": "'md' | 'xs' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    }
  ],
  "Button": [
    {
      "name": "asChild",
      "type": "boolean",
      "default": "false",
      "required": false,
      "description": "Render the child element instead of a `<button>`, forwarding all styling and behaviour to it. Use it to make a router `<Link>` look like a button without nesting an anchor inside a button."
    },
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": "Which CBAR ramp the treatment draws from. Ignored by the three shorthand variants, which pin their own colour."
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | 'xl' | 'icon-xs' | 'icon-sm' | 'icon' | 'icon-lg' | null",
      "default": "'md'",
      "required": false,
      "description": "Height, padding, type size and glyph size. The icon steps 16 → 24px at `md`, matching CBAR's own set; the four `icon-*` rungs are square."
    },
    {
      "name": "variant",
      "type": "'secondary' | 'link' | 'solid' | 'subtle' | 'surface' | 'outline' | 'default' | 'destructive' | 'ghost' | null",
      "default": "'solid'",
      "required": false,
      "description": "How filled in the button is. Independent of colorPalettes — `variant` decides the treatment, `colorPalette` decides the hue."
    }
  ],
  "Calendar": [
    {
      "name": "month",
      "type": "Date",
      "required": true,
      "description": "Month the panel is showing. Controlled, so two panels can be linked."
    },
    {
      "name": "onMonthChange",
      "type": "(month: Date) => void",
      "required": true,
      "description": ""
    },
    {
      "name": "onSelect",
      "type": "(date: Date) => void",
      "required": true,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "disabledDate",
      "type": "(date: Date) => boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "hovered",
      "type": "Date | null",
      "default": "null",
      "required": false,
      "description": "Previewed while the pointer moves over the grid mid-range."
    },
    {
      "name": "label",
      "type": "string",
      "required": false,
      "description": "Accessible name of the grid, e.g. \"Start date\"."
    },
    {
      "name": "locale",
      "type": "string",
      "default": "'en-US'",
      "required": false,
      "description": ""
    },
    {
      "name": "onHoveredChange",
      "type": "(date: Date | null) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "picker",
      "type": "DateGranularity",
      "default": "'date'",
      "required": false,
      "description": "Granularity of the panel: days, months or years."
    },
    {
      "name": "range",
      "type": "[Date | null, Date | null]",
      "required": false,
      "description": "Both ends of the range, for highlighting the span."
    },
    {
      "name": "value",
      "type": "Date | null",
      "default": "null",
      "required": false,
      "description": "The selected date, or the range endpoints when `range` is set."
    }
  ],
  "Checkbox": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "default": "'sm'",
      "required": false,
      "description": ""
    }
  ],
  "Combobox": [
    {
      "name": "options",
      "type": "ComboboxOption[]",
      "required": true,
      "description": ""
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-labelledby",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": "Width of the trigger. The popover matches it."
    },
    {
      "name": "contentClassName",
      "type": "string",
      "required": false,
      "description": "Extra classes for the popover surface."
    },
    {
      "name": "defaultValue",
      "type": "string",
      "default": "''",
      "required": false,
      "description": ""
    },
    {
      "name": "disabled",
      "type": "boolean",
      "default": "false",
      "required": false,
      "description": ""
    },
    {
      "name": "emptyMessage",
      "type": "string",
      "default": "'No results found.'",
      "required": false,
      "description": ""
    },
    {
      "name": "id",
      "type": "string",
      "required": false,
      "description": "Put it on the trigger, so a `<Label htmlFor>` can point at it."
    },
    {
      "name": "onValueChange",
      "type": "(value: string) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "placeholder",
      "type": "string",
      "default": "'Select an option…'",
      "required": false,
      "description": "Shown on the trigger when nothing is selected."
    },
    {
      "name": "searchPlaceholder",
      "type": "string",
      "default": "'Search…'",
      "required": false,
      "description": ""
    },
    {
      "name": "value",
      "type": "string",
      "required": false,
      "description": "Controlled selection. Pass with `onValueChange`."
    }
  ],
  "Command": [
    {
      "name": "defaultValue",
      "type": "string",
      "default": "''",
      "required": false,
      "description": ""
    },
    {
      "name": "filter",
      "type": "CommandFilter",
      "default": "defaultFilter",
      "required": false,
      "description": "Replace the matching logic. Return 0 to hide an item."
    },
    {
      "name": "label",
      "type": "string",
      "default": "'Suggestions'",
      "required": false,
      "description": "Accessible name for the results list."
    },
    {
      "name": "loop",
      "type": "boolean",
      "default": "false",
      "required": false,
      "description": "Wrap around when arrowing past either end."
    },
    {
      "name": "onValueChange",
      "type": "(value: string) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "shouldFilter",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Turn off to filter the list yourself, e.g. against a server."
    },
    {
      "name": "value",
      "type": "string",
      "required": false,
      "description": "The highlighted item. Controlled — pair it with `onValueChange`."
    }
  ],
  "CommandDialog": [
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "description",
      "type": "string",
      "default": "'Search for a command to run…'",
      "required": false,
      "description": ""
    },
    {
      "name": "showCloseButton",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": ""
    },
    {
      "name": "title",
      "type": "string",
      "default": "'Command Palette'",
      "required": false,
      "description": "Announced to screen readers; visually hidden by default."
    }
  ],
  "CommandGroup": [
    {
      "name": "heading",
      "type": "React.ReactNode",
      "required": false,
      "description": ""
    }
  ],
  "CommandInput": [
    {
      "name": "onValueChange",
      "type": "(search: string) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "value",
      "type": "string",
      "required": false,
      "description": ""
    }
  ],
  "CommandItem": [
    {
      "name": "value",
      "type": "string",
      "required": true,
      "description": "The text this item is matched on, and its identity in the list."
    },
    {
      "name": "disabled",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "keywords",
      "type": "string[]",
      "required": false,
      "description": "Extra terms that should also match — synonyms, shortcuts, ids."
    },
    {
      "name": "onSelect",
      "type": "(value: string) => void",
      "required": false,
      "description": ""
    }
  ],
  "DataTable": [
    {
      "name": "columns",
      "type": "DataTableColumn<RecordType>[]",
      "required": true,
      "description": ""
    },
    {
      "name": "data",
      "type": "readonly RecordType[]",
      "required": true,
      "description": ""
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "emptyText",
      "type": "React.ReactNode",
      "default": "'No results.'",
      "required": false,
      "description": ""
    },
    {
      "name": "expandable",
      "type": "DataTableExpandable<RecordType>",
      "required": false,
      "description": ""
    },
    {
      "name": "id",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "onRow",
      "type": "(record: RecordType, index?: number) => React.HTMLAttributes<HTMLElement>",
      "required": false,
      "description": ""
    },
    {
      "name": "onSortChange",
      "type": "(sort: DataTableSort | null) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "rowClassName",
      "type": "string | ((record: RecordType, index: number) => string)",
      "required": false,
      "description": ""
    },
    {
      "name": "rowKey",
      "type": "string | ((record: RecordType, index?: number) => React.Key)",
      "default": "'key'",
      "required": false,
      "description": "Field name or function producing a stable key per row."
    },
    {
      "name": "scroll",
      "type": "{ x?: number | string | true; y?: number | string }",
      "required": false,
      "description": "`{ y }` makes the header sticky; `{ x }` enables horizontal scrolling."
    },
    {
      "name": "sort",
      "type": "DataTableSort | null",
      "required": false,
      "description": "Controlled sort. Pass it together with `onSortChange` when something else sorts the data (a server, a query hook). Leave both off and the table sorts its own rows."
    },
    {
      "name": "sticky",
      "type": "boolean",
      "required": false,
      "description": "Keep the header visible while the table's container scrolls."
    }
  ],
  "DatePicker": [
    {
      "name": "allowClear",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Show the clear button once something is selected."
    },
    {
      "name": "aria-invalid",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-labelledby",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultValue",
      "type": "Date | null",
      "default": "null",
      "required": false,
      "description": ""
    },
    {
      "name": "disabled",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "disabledDate",
      "type": "(date: Date) => boolean",
      "required": false,
      "description": "Reject a date. It stays visible but cannot be chosen."
    },
    {
      "name": "format",
      "type": "string",
      "required": false,
      "description": "Token pattern for the text field. Defaults to one matching `picker`."
    },
    {
      "name": "id",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "locale",
      "type": "string",
      "default": "'en-US'",
      "required": false,
      "description": "BCP 47 tag driving month names, weekday names and the week start."
    },
    {
      "name": "onChange",
      "type": "(date: Date | null) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "picker",
      "type": "DateGranularity",
      "default": "'date'",
      "required": false,
      "description": "Granularity of the panel and of the value it produces."
    },
    {
      "name": "placeholder",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "value",
      "type": "Date | null",
      "required": false,
      "description": ""
    }
  ],
  "DateRangePicker": [
    {
      "name": "allowClear",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Show the clear button once something is selected."
    },
    {
      "name": "aria-invalid",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-labelledby",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultValue",
      "type": "DateRange | null",
      "default": "null",
      "required": false,
      "description": ""
    },
    {
      "name": "disabled",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "disabledDate",
      "type": "(date: Date) => boolean",
      "required": false,
      "description": "Reject a date. It stays visible but cannot be chosen."
    },
    {
      "name": "format",
      "type": "string",
      "required": false,
      "description": "Token pattern for the text field. Defaults to one matching `picker`."
    },
    {
      "name": "id",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "labels",
      "type": "[string, string]",
      "default": "['Start date', 'End date']",
      "required": false,
      "description": "Names for the two fields, announced to assistive tech."
    },
    {
      "name": "locale",
      "type": "string",
      "default": "'en-US'",
      "required": false,
      "description": "BCP 47 tag driving month names, weekday names and the week start."
    },
    {
      "name": "onChange",
      "type": "(range: DateRange) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "picker",
      "type": "DateGranularity",
      "default": "'date'",
      "required": false,
      "description": "Granularity of the panel and of the value it produces."
    },
    {
      "name": "placeholder",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "value",
      "type": "DateRange | null",
      "required": false,
      "description": ""
    }
  ],
  "DialogContent": [
    {
      "name": "showCloseButton",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Show the X in the top-right corner. Keep it unless the dialog is blocking."
    }
  ],
  "Drawer": [
    {
      "name": "direction",
      "type": "DrawerDirection",
      "default": "'bottom'",
      "required": false,
      "description": "Edge the panel comes in from."
    },
    {
      "name": "dismissible",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Allow dragging and the overlay click to close it."
    }
  ],
  "DrawerContent": [
    {
      "name": "showHandle",
      "type": "boolean",
      "required": false,
      "description": "Show the grab bar. Defaults on for the top and bottom edges."
    }
  ],
  "DropdownMenuItem": [
    {
      "name": "inset",
      "type": "boolean",
      "required": false,
      "description": "Indent the label to line up with rows that have a check or radio marker."
    },
    {
      "name": "variant",
      "type": "'default' | 'destructive'",
      "default": "'default'",
      "required": false,
      "description": ""
    }
  ],
  "DropdownMenuLabel": [
    {
      "name": "inset",
      "type": "boolean",
      "required": false,
      "description": ""
    }
  ],
  "DropdownMenuSubTrigger": [
    {
      "name": "inset",
      "type": "boolean",
      "required": false,
      "description": ""
    }
  ],
  "Field": [
    {
      "name": "invalid",
      "type": "boolean",
      "required": false,
      "description": "Marks the whole group invalid, tinting the label and error text."
    },
    {
      "name": "orientation",
      "type": "'horizontal' | 'vertical' | null",
      "default": "'vertical'",
      "required": false,
      "description": ""
    }
  ],
  "FieldLabel": [
    {
      "name": "required",
      "type": "boolean",
      "required": false,
      "description": "Draws CBAR's required marker after the text — its `.isRequired?` slot. The marker is `aria-hidden`: an asterisk read aloud is noise, and the fact that the field is required belongs on the control. Set `required` (or `aria-required`) there as well — this prop only draws."
    }
  ],
  "FieldLegend": [
    {
      "name": "variant",
      "type": "'legend' | 'label'",
      "default": "'legend'",
      "required": false,
      "description": "`label` renders at control-label size instead of section-heading size."
    }
  ],
  "Input": [
    {
      "name": "classNames",
      "type": "{ input?: string }",
      "required": false,
      "description": "Classes for the inner `<input>` when an adornment is present. With a slot filled, `className` lands on the wrapper — that is the visible box, and `className=\"w-64\"` should size it. Same split as InputNumber."
    },
    {
      "name": "endElement",
      "type": "React.ReactNode",
      "required": false,
      "description": "Content pinned to the trailing edge — CBAR's `.rightElement?`. Stays interactive, so a clear button or a reveal-password toggle works here."
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "required": false,
      "description": ""
    },
    {
      "name": "startElement",
      "type": "React.ReactNode",
      "required": false,
      "description": "Content pinned to the leading edge — CBAR's `.leftElement?`. Inert by design: a click passes through to the field, which is what you want for the icon or currency symbol this slot is for. Put anything interactive in InputProps.endElement instead."
    },
    {
      "name": "variant",
      "type": "'outline' | 'flushed' | null",
      "required": false,
      "description": ""
    }
  ],
  "InputNumber": [
    {
      "name": "classNames",
      "type": "{ input?: string; controls?: string }",
      "required": false,
      "description": ""
    },
    {
      "name": "controls",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Show the stepper column."
    },
    {
      "name": "defaultValue",
      "type": "number | null",
      "required": false,
      "description": ""
    },
    {
      "name": "formatter",
      "type": "(value: number | null) => string",
      "required": false,
      "description": "Renders the value for display — currency symbols, units, thousands separators."
    },
    {
      "name": "keyboard",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Let ArrowUp/ArrowDown step the value."
    },
    {
      "name": "max",
      "type": "number",
      "default": "Infinity",
      "required": false,
      "description": ""
    },
    {
      "name": "min",
      "type": "number",
      "default": "-Infinity",
      "required": false,
      "description": ""
    },
    {
      "name": "onChange",
      "type": "(value: number | null) => void",
      "required": false,
      "description": "Fires with the parsed value, or `null` once the field is cleared."
    },
    {
      "name": "parser",
      "type": "(displayValue: string) => number",
      "required": false,
      "description": "Turns a typed string back into a number. Required whenever `formatter` is set."
    },
    {
      "name": "precision",
      "type": "number",
      "required": false,
      "description": "Decimal places to round to on commit. Defaults to whatever `step` implies."
    },
    {
      "name": "step",
      "type": "number",
      "default": "1",
      "required": false,
      "description": ""
    },
    {
      "name": "value",
      "type": "number | null",
      "required": false,
      "description": ""
    }
  ],
  "Pagination": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "required": false,
      "description": ""
    }
  ],
  "PaginationLink": [
    {
      "name": "isActive",
      "type": "boolean",
      "required": false,
      "description": ""
    }
  ],
  "PaginationNext": [
    {
      "name": "isActive",
      "type": "boolean",
      "required": false,
      "description": ""
    }
  ],
  "PaginationPrevious": [
    {
      "name": "isActive",
      "type": "boolean",
      "required": false,
      "description": ""
    }
  ],
  "Progress": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'md' | 'lg' | null",
      "default": "'md'",
      "required": false,
      "description": "CBAR draws the bar at two heights, 6px and 9px."
    }
  ],
  "ProgressCircle": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "formatValue",
      "type": "(value: number) => React.ReactNode",
      "required": false,
      "description": "Overrides the printed label. Receives the clamped 0–100 value."
    },
    {
      "name": "showValue",
      "type": "boolean",
      "required": false,
      "description": "Print the percentage in the middle. Defaults to on from `md` up and off below it: `xs` and `sm` leave 16px and 22px of clear space inside the ring, and \"100%\" at CBAR's 12px needs about 30px, so the label spills over its own stroke. Pass `true` to force it — with a `formatValue` that returns something short enough to fit."
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | 'xl' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    }
  ],
  "RadioGroupItem": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "default": "'sm'",
      "required": false,
      "description": ""
    }
  ],
  "RangeSlider": [
    {
      "name": "classNames",
      "type": "RangeSliderClassNames",
      "required": false,
      "description": ""
    },
    {
      "name": "marks",
      "type": "RangeSliderMark[]",
      "required": false,
      "description": "Ticks drawn under the track. Purely decorative — they are not selectable."
    },
    {
      "name": "thumbLabels",
      "type": "string[]",
      "required": false,
      "description": "Accessible name for each thumb, in order. A thumb carries `role=\"slider\"`, and that role takes **no** name from surrounding content — without one, a screen reader announces a bare number. Pass one name per thumb (`['Minimum', 'Maximum']`). For a single thumb an `aria-label` on the slider itself is enough; with several, each thumb falls back to that label suffixed with its position."
    }
  ],
  "SelectTrigger": [
    {
      "name": "classNames",
      "type": "{ trigger?: string }",
      "required": false,
      "description": "Classes for the trigger itself when `clearable` is on. With it on, the trigger gains a wrapper and `className` lands there — that is the element a parent lays out, so `className=\"w-56\"` should size it. Same split as Input's adornment wrapper."
    },
    {
      "name": "clearable",
      "type": "boolean",
      "default": "false",
      "required": false,
      "description": "Show a reset control once something is chosen — CBAR's `.isClearable?`. Clearing sets the value to `''`, which is how Radix returns a Select to its placeholder. That is also why an item may not use `''` as its own value."
    },
    {
      "name": "clearLabel",
      "type": "string",
      "default": "'Clear selection'",
      "required": false,
      "description": "Accessible name for that control."
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'outline' | 'flushed' | null",
      "required": false,
      "description": ""
    }
  ],
  "SheetContent": [
    {
      "name": "showCloseButton",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": ""
    },
    {
      "name": "side",
      "type": "'top' | 'right' | 'bottom' | 'left'",
      "default": "'right'",
      "required": false,
      "description": "Edge the panel slides in from."
    }
  ],
  "Spinner": [
    {
      "name": "label",
      "type": "string",
      "default": "'Loading'",
      "required": false,
      "description": "Announced to screen readers. Override it to describe what is loading."
    }
  ],
  "Switch": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'primary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    }
  ],
  "TabsList": [
    {
      "name": "colorPalette",
      "type": "'secondary' | 'primary' | 'tertiary' | 'black' | 'red' | 'green' | 'yellow' | 'third' | null",
      "default": "'secondary'",
      "required": false,
      "description": ""
    },
    {
      "name": "size",
      "type": "'md' | 'lg' | null",
      "default": "'md'",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'line' | 'subtle' | 'outline' | 'default' | 'plain' | null",
      "default": "'line'",
      "required": false,
      "description": ""
    }
  ],
  "Textarea": [
    {
      "name": "size",
      "type": "'sm' | 'md' | 'lg' | 'xs' | null",
      "required": false,
      "description": ""
    },
    {
      "name": "variant",
      "type": "'outline' | 'flushed' | null",
      "required": false,
      "description": ""
    }
  ],
  "Toaster": [
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "closeButton",
      "type": "boolean",
      "default": "false",
      "required": false,
      "description": "Show a dismiss button on every toast."
    },
    {
      "name": "duration",
      "type": "number",
      "default": "4000",
      "required": false,
      "description": "Default milliseconds on screen. A toast can override it."
    },
    {
      "name": "icons",
      "type": "Partial<Record<ToastKind, React.ReactNode>>",
      "required": false,
      "description": ""
    },
    {
      "name": "label",
      "type": "string",
      "default": "'Notifications'",
      "required": false,
      "description": "Accessible name for the notification region."
    },
    {
      "name": "position",
      "type": "ToastPosition",
      "default": "'bottom-right'",
      "required": false,
      "description": ""
    },
    {
      "name": "theme",
      "type": "'inherit' | 'light' | 'dark'",
      "default": "'inherit'",
      "required": false,
      "description": "Toasts render in a portal on `document.body`, which sits inside `<html>` — so a `dark` class on the root element reaches them, and the default, `'inherit'`, is right for most apps. Force it only when the app scopes dark mode to a wrapper the portal escapes."
    },
    {
      "name": "toastClassName",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "visibleToasts",
      "type": "number",
      "default": "3",
      "required": false,
      "description": "How many to show at once; older ones wait their turn."
    }
  ],
  "TooltipContent": [
    {
      "name": "showArrow",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Draw the arrow pointing back at the trigger. CBAR makes this a switch on its Tooltip, and it is worth having: an arrow is noise when the tooltip is already visually attached to a small target."
    }
  ],
  "Tree": [
    {
      "name": "treeData",
      "type": "TreeNode[]",
      "required": true,
      "description": ""
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": "Defines a string value that labels the current element."
    },
    {
      "name": "checkable",
      "type": "boolean",
      "required": false,
      "description": "Show checkboxes, with checked state propagating up and down."
    },
    {
      "name": "checkedKeys",
      "type": "readonly React.Key[]",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultCheckedKeys",
      "type": "readonly React.Key[]",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultExpandAll",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultExpandedKeys",
      "type": "readonly React.Key[]",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultSelectedKeys",
      "type": "readonly React.Key[]",
      "required": false,
      "description": ""
    },
    {
      "name": "expandedKeys",
      "type": "readonly React.Key[]",
      "required": false,
      "description": ""
    },
    {
      "name": "height",
      "type": "number",
      "required": false,
      "description": ""
    },
    {
      "name": "itemHeight",
      "type": "number",
      "default": "28",
      "required": false,
      "description": "Row height, only used when `virtual` is set."
    },
    {
      "name": "onCheck",
      "type": "(keys: React.Key[], info: TreeCheckInfo) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "onExpand",
      "type": "(keys: React.Key[], info: { node: TreeNode; expanded: boolean }) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "onSelect",
      "type": "(keys: React.Key[], info: { node: TreeNode; selected: boolean }) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "selectedKeys",
      "type": "readonly React.Key[]",
      "required": false,
      "description": ""
    },
    {
      "name": "switcherIcon",
      "type": "(node: { isLeaf: boolean; expanded: boolean }) => React.ReactNode",
      "required": false,
      "description": "Override the expand/collapse affordance."
    },
    {
      "name": "virtual",
      "type": "boolean",
      "required": false,
      "description": "Window the rows. Needs `height`; worth it past a few hundred nodes."
    }
  ],
  "TreeSelect": [
    {
      "name": "treeData",
      "type": "TreeSelectNode[]",
      "required": true,
      "description": ""
    },
    {
      "name": "allowClear",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "aria-labelledby",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "contentClassName",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "defaultValue",
      "type": "React.Key | React.Key[] | null",
      "default": "null",
      "required": false,
      "description": ""
    },
    {
      "name": "disabled",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "emptyText",
      "type": "React.ReactNode",
      "default": "'No results found.'",
      "required": false,
      "description": ""
    },
    {
      "name": "id",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "multiple",
      "type": "boolean",
      "required": false,
      "description": "Allow several selections, shown as removable chips."
    },
    {
      "name": "onChange",
      "type": "(value: React.Key | React.Key[] | null) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "placeholder",
      "type": "string",
      "default": "'Select…'",
      "required": false,
      "description": ""
    },
    {
      "name": "searchPlaceholder",
      "type": "string",
      "default": "'Search…'",
      "required": false,
      "description": ""
    },
    {
      "name": "showSearch",
      "type": "boolean",
      "required": false,
      "description": "Filter the tree from a search box above it."
    },
    {
      "name": "treeCheckable",
      "type": "boolean",
      "required": false,
      "description": "Checkboxes in the panel. Implies `multiple`."
    },
    {
      "name": "treeDefaultExpandAll",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "value",
      "type": "React.Key | React.Key[] | null",
      "required": false,
      "description": ""
    }
  ],
  "Upload": [
    {
      "name": "accept",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "action",
      "type": "string | ((file: UploadFile) => string | PromiseLike<string>)",
      "required": false,
      "description": "Where to send the file. A function is resolved per file, for signed URLs."
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "beforeUpload",
      "type": "(file: UploadFile, fileList: UploadFile[]) => BeforeUploadResult | Promise<BeforeUploadResult>",
      "required": false,
      "description": ""
    },
    {
      "name": "children",
      "type": "React.ReactNode",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "classNames",
      "type": "{ input?: string }",
      "required": false,
      "description": ""
    },
    {
      "name": "customRequest",
      "type": "(option: UploadRequestOption, info: { defaultRequest: (option: UploadRequestOption) => UploadRequestHandle }) => UploadRequestHandle | void",
      "required": false,
      "description": "Take over the transfer entirely — resumable uploads, SDK clients, S3."
    },
    {
      "name": "data",
      "type": "Record<string, unknown> | ((file: UploadFile) => Record<string, unknown> | PromiseLike<Record<string, unknown>>)",
      "required": false,
      "description": "Extra form fields. A function is resolved per file."
    },
    {
      "name": "directory",
      "type": "boolean",
      "required": false,
      "description": "Pick a whole folder rather than individual files."
    },
    {
      "name": "disabled",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "headers",
      "type": "Record<string, string>",
      "required": false,
      "description": ""
    },
    {
      "name": "id",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "method",
      "type": "UploadRequestMethod",
      "default": "'POST'",
      "required": false,
      "description": ""
    },
    {
      "name": "multiple",
      "type": "boolean",
      "required": false,
      "description": ""
    },
    {
      "name": "name",
      "type": "string",
      "default": "'file'",
      "required": false,
      "description": "Form field name the file is sent under."
    },
    {
      "name": "onError",
      "type": "(error: UploadRequestError | ProgressEvent, body: unknown, file: UploadFile) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "onProgress",
      "type": "(event: UploadProgressEvent, file: UploadFile) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "onStart",
      "type": "(file: UploadFile) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "onSuccess",
      "type": "(response: unknown, file: UploadFile, xhr?: XMLHttpRequest) => void",
      "required": false,
      "description": ""
    },
    {
      "name": "openFileDialogOnClick",
      "type": "boolean",
      "default": "true",
      "required": false,
      "description": "Set `false` to open the picker yourself, e.g. from a button elsewhere."
    },
    {
      "name": "variant",
      "type": "'button' | 'dropzone' | null",
      "default": "'dropzone'",
      "required": false,
      "description": ""
    },
    {
      "name": "withCredentials",
      "type": "boolean",
      "required": false,
      "description": ""
    }
  ],
  "UploadDropzone": [
    {
      "name": "hint",
      "type": "React.ReactNode",
      "default": "'Up to 10 MB each'",
      "required": false,
      "description": ""
    },
    {
      "name": "title",
      "type": "React.ReactNode",
      "default": "'Drop files here, or click to browse'",
      "required": false,
      "description": ""
    }
  ],
  "VirtualList": [
    {
      "name": "children",
      "type": "(item: T, index: number) => React.ReactElement",
      "required": true,
      "description": ""
    },
    {
      "name": "data",
      "type": "readonly T[]",
      "required": true,
      "description": "Rows to render. Only the visible slice is mounted."
    },
    {
      "name": "height",
      "type": "number",
      "required": true,
      "description": "Pixel height of the scroll viewport."
    },
    {
      "name": "itemHeight",
      "type": "number",
      "required": true,
      "description": "Pixel height of one row. Rows must all be this tall."
    },
    {
      "name": "itemKey",
      "type": "keyof T | ((item: T) => React.Key)",
      "required": true,
      "description": "Stable key per row — an index is not enough once the list reorders."
    },
    {
      "name": "aria-label",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "className",
      "type": "string",
      "required": false,
      "description": ""
    },
    {
      "name": "onScroll",
      "type": "React.UIEventHandler<HTMLElement>",
      "required": false,
      "description": "Fires when the viewport scrolls. Use it to trigger infinite loading."
    },
    {
      "name": "overscan",
      "type": "number",
      "default": "3",
      "required": false,
      "description": "Rows kept mounted above and below the viewport. A few rows of slack mean a fast scroll reveals content rather than blank space."
    }
  ]
}
