{
  "version": 1.1,
  "tags": [
    {
      "name": "catnip-alert",
      "description": "CatnipAlert custom element.",
      "attributes": [
        {
          "name": "intent",
          "description": "Semantic color treatment. Announcement urgency is controlled independently by `announcement`.\n\n\"neutral\" | \"informative\" | \"success\" | \"warning\" | \"danger\" | \"brand\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "informative"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            },
            {
              "name": "brand"
            }
          ]
        },
        {
          "name": "size",
          "description": "Controls icon and text size.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "appearance",
          "description": "Visual presentation. All appearances stay in document flow.\n\n\"banner\" | \"inline\" | \"inlineInverse\" | \"text\" | undefined",
          "values": [
            {
              "name": "banner"
            },
            {
              "name": "inline"
            },
            {
              "name": "inlineInverse"
            },
            {
              "name": "text"
            }
          ]
        },
        {
          "name": "title",
          "description": "Plain-text title. Displayed by the `banner` appearance.\n\nstring | undefined"
        },
        {
          "name": "description",
          "description": "Plain-text message. Ignored when the default slot has content.\n\nstring | undefined"
        },
        {
          "name": "left-icon",
          "description": "Icon override. An empty value uses the icon mapped to the current intent.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "show-close-button",
          "description": "Shows a close button for the `banner` appearance.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "announcement",
          "description": "Assistive-technology announcement level. Defaults to no live region; opt in to polite or assertive announcements.\n\n\"none\" | \"polite\" | \"assertive\" | undefined",
          "values": [
            {
              "name": "none"
            },
            {
              "name": "polite"
            },
            {
              "name": "assertive"
            }
          ]
        },
        {
          "name": "close-button-aria-label",
          "description": "Accessible label for the icon-only close button.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-badge",
      "description": "CatnipBadge custom element.",
      "attributes": [
        {
          "name": "intent",
          "description": "Semantic color treatment for the badge.\n\n\"disabled\" | \"neutral\" | \"informative\" | \"success\" | \"warning\" | \"danger\" | \"brand\" | undefined",
          "values": [
            {
              "name": "disabled"
            },
            {
              "name": "neutral"
            },
            {
              "name": "informative"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            },
            {
              "name": "brand"
            }
          ]
        },
        {
          "name": "appearance",
          "description": "`subtle` is the wash; `strong` is the solid surface.\n\n\"subtle\" | \"strong\" | undefined",
          "values": [
            {
              "name": "subtle"
            },
            {
              "name": "strong"
            }
          ]
        },
        {
          "name": "size",
          "description": "Controls height, typography, and icon size.\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "left-icon",
          "description": "Icon name for the leading icon position.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "right-icon",
          "description": "Icon name for the trailing icon position.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "aria-label",
          "description": "Accessible name — required when the default slot is empty (icon-only).\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-button",
      "description": "CatnipButton custom element.",
      "attributes": [
        {
          "name": "appearance",
          "description": "Visual weight of the button\n\n\"primary\" | \"secondary\" | \"ghost\" | \"tertiary\" | undefined",
          "values": [
            {
              "name": "primary"
            },
            {
              "name": "secondary"
            },
            {
              "name": "ghost"
            },
            {
              "name": "tertiary"
            }
          ]
        },
        {
          "name": "size",
          "description": "Controls dimensions, padding, and typography\n\n\"xs\" | \"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "xs"
            },
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "Semantic intent — changes the color scheme\n\n\"default\" | \"danger\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "purpose",
          "description": "Layout role: main (pill) or utility (squared corners)\n\n\"main\" | \"utility\" | undefined",
          "values": [
            {
              "name": "main"
            },
            {
              "name": "utility"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Disables the button and applies disabled styles\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "loading",
          "description": "Busy state: `aria-busy`, native `disabled`, and `catnip-button--loading`. Disabled look for loading is interim until UX finalizes design; semantics should stay.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "selected",
          "description": "Selected-on state for utility buttons (e.g. toggle groups). Only applies when `purpose` is `utility`. Interim: uses the same visuals as `:active` until UX finalizes dedicated selected styles.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "left-icon",
          "description": "Icon name for the left icon position. Use CatnipIconName for autocompletion.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "right-icon",
          "description": "Icon name for the right icon position. Use CatnipIconName for autocompletion.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "aria-label",
          "description": "Accessible label — required for icon-only buttons, optional otherwise\n\nstring | undefined"
        },
        {
          "name": "type",
          "description": "Native button type attribute\n\n\"button\" | \"submit\" | \"reset\" | undefined",
          "values": [
            {
              "name": "button"
            },
            {
              "name": "submit"
            },
            {
              "name": "reset"
            }
          ]
        },
        {
          "name": "name",
          "description": "Native `name` — included in form data for `type=\"submit\"` / `reset`, and useful for tests or progressive enhancement\n\nstring | undefined"
        },
        {
          "name": "value",
          "description": "Native `value` — submitted with `name` for `type=\"submit\"` / `reset`\n\nstring | undefined"
        },
        {
          "name": "form",
          "description": "Native `form` — id of a `<form>` to associate when the button sits outside that form\n\nstring | undefined"
        },
        {
          "name": "autofocus",
          "description": "Native `autofocus` — focus on mount (use sparingly; prefer moving focus in a dialog after open)\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-card",
      "description": "CatnipCard custom element.",
      "attributes": [
        {
          "name": "interactive",
          "description": "When true, the surface is one native control. A non-empty `href` renders an anchor; otherwise a native `button type=\"button\"` is used.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "Disables the card. Interactive cards leave the tab order and cannot activate; non-interactive cards expose `aria-disabled`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "href",
          "description": "Navigation URL. When `interactive` is true, a non-empty href renders a native anchor; otherwise a native `button type=\"button\"` is used.\n\nstring | undefined"
        },
        {
          "name": "target",
          "description": "Native anchor `target`, for example `_blank`. Used only by an interactive card with `href`.\n\nstring | undefined"
        },
        {
          "name": "rel",
          "description": "Native anchor `rel`. For `target=\"_blank\"`, `noopener` and `noreferrer` are appended when missing.\n\nstring | undefined"
        },
        {
          "name": "download",
          "description": "Native anchor `download` filename hint or boolean. Used only by an interactive card with `href`.\n\nstring | boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "hreflang",
          "description": "Native anchor `hreflang`. Used only by an interactive card with `href`.\n\nstring | undefined"
        },
        {
          "name": "referrer-policy",
          "description": "Native anchor `referrerpolicy`. Used only by an interactive card with `href`.\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "Accessible name override. Otherwise the native link/button name is calculated from the slotted content.\n\nstring | undefined"
        },
        {
          "name": "aria-current",
          "description": "Native `aria-current` for navigation cards: `true`, `page`, `step`, `location`, `date`, or `time`.\n\nstring | boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Override stable internal data-test hooks.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-checkbox",
      "description": "CatnipCheckbox custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "Checked state. Binds to attribute `model-value` for custom elements.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "indeterminate",
          "description": "Visual indeterminate state (e.g. partial selection in a group).\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "value",
          "description": "Form value when checked; default matches native checkbox convention.\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "Helper or validation copy below the option row (Figma info message).\n\nSupportingTextProp | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "Extra ids merged into `aria-describedby` on the input alongside generated supporting-text id.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-checklist",
      "description": "CatnipChecklist custom element.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "id",
          "description": "Optional `id` on the root `<label>`.\n\nstring | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "string | undefined"
        },
        {
          "name": "options",
          "description": "CatnipChecklistOptionData[] | undefined"
        },
        {
          "name": "model-value",
          "description": "CatnipChecklistModelValue | undefined"
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-chip",
      "description": "CatnipChip custom element.",
      "attributes": [
        {
          "name": "size",
          "description": "Controls dimensions, padding, and typography\n\n\"xs\" | \"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "xs"
            },
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "selectable",
          "description": "When true, the entire chip acts as a toggle button. Selection is controlled with `modelValue` / `update:modelValue` (or `v-model`). When false (default), the chip is removable — a trailing remove button is rendered and emits a `remove` event on click.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "model-value",
          "description": "Checked state when `selectable` is true. Drives the native checkbox's `checked` property. Binds to attribute `model-value` for custom elements and `v-model`. Ignored when `selectable` is false.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "Disables the chip and applies disabled styles. Events are not emitted when disabled.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "Sets the chip to a read-only state. Visuals become muted and interactions are prevented, but it remains focusable if applicable.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "remove-button-aria-label",
          "description": "Accessible label for the remove button icon. Default: \"Remove\". Only applies when the chip is in removable mode (selectable is false).\n\nstring | undefined"
        },
        {
          "name": "left-icon",
          "description": "Icon name for the left icon position. Use CatnipIconName for autocompletion.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-counter",
      "description": "CatnipCounter custom element.",
      "attributes": [
        {
          "name": "value",
          "description": "Count shown inside the badge. Numbers are stringified for display.\n\nstring | number | undefined"
        },
        {
          "name": "appearance",
          "description": "Visual chrome: **primary** or **secondary**.\n\n\"primary\" | \"secondary\" | undefined",
          "values": [
            {
              "name": "primary"
            },
            {
              "name": "secondary"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Visually mutes the count while preserving its appearance. Counter remains presentational.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "Density: **s**, **m** (default), or **l**.\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-dialog",
      "description": "CatnipDialog custom element.",
      "attributes": [
        {
          "name": "open",
          "description": "Controls whether the dialog is visible. Dismissal actions emit close requests; consumers must set this to `false` to close.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "Dialog width: s = 492px, m = 664px, l = 836px. Override with `--catnip-dialog-width` for a custom or content-sized width.\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "padding",
          "description": "Surface padding. `none` removes the inset. Override with `--catnip-dialog-padding` for a custom length.\n\n\"default\" | \"none\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "none"
            }
          ]
        },
        {
          "name": "role",
          "description": "ARIA role. Use `alertdialog` for urgent confirmation flows.\n\n\"dialog\" | \"alertdialog\" | \"alert dialog\" | undefined",
          "values": [
            {
              "name": "dialog"
            },
            {
              "name": "alertdialog"
            },
            {
              "name": "alert dialog"
            }
          ]
        },
        {
          "name": "title",
          "description": "Header title. Ignored when the `header` slot is used.\n\nstring | undefined"
        },
        {
          "name": "description",
          "description": "Header description. Ignored when the `header` slot is used.\n\nstring | undefined"
        },
        {
          "name": "icon",
          "description": "Header icon name rendered with CatnipIcon. Ignored when the `header` slot is used.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "icon-size",
          "description": "Header icon size in px. Ignored when the `header` slot is used.\n\nnumber | undefined"
        },
        {
          "name": "centered-header",
          "description": "Centers the prop-based header into icon, title, and description rows. Ignored when the `header` slot is used.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-close-button",
          "description": "Shows an icon-only close button in the header area.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "close-button-aria-label",
          "description": "Accessible name for the icon-only close button.\n\nstring | undefined"
        },
        {
          "name": "backdrop-blur",
          "description": "Applies backdrop-filter blur to the native dialog backdrop.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "close-on-backdrop-click",
          "description": "Emits `backdrop-click` on every backdrop click and requests dismissal when both `closable` and this prop are true.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "closable",
          "description": "Allows implicit dismissal requests through Escape and, together with `closeOnBackdropClick`, backdrop clicks. Explicit close still requests dismissal.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "Accessible name override. Use this when the header is slotted and does not provide `aria-labelledby`.\n\nstring | undefined"
        },
        {
          "name": "aria-labelledby",
          "description": "ID of an element that labels the dialog. Overrides the generated title ID.\n\nstring | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "ID of an element that describes the dialog. Overrides the generated description ID.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-divider",
      "description": "CatnipDivider custom element.",
      "attributes": [
        {
          "name": "decorative",
          "description": "When `true` (default), the rule is hidden from assistive technology. Set `false` for a meaningful separator; use `ariaLabel` if it needs a name.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "Only when `decorative` is `false`: accessible name for the separator.\n\nstring | undefined"
        },
        {
          "name": "size",
          "description": "\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "orientation",
          "description": "\"horizontal\" | \"vertical\" | undefined",
          "values": [
            {
              "name": "horizontal"
            },
            {
              "name": "vertical"
            }
          ]
        },
        {
          "name": "shape",
          "description": "\"round\" | \"square\" | undefined",
          "values": [
            {
              "name": "round"
            },
            {
              "name": "square"
            }
          ]
        },
        {
          "name": "appearance",
          "description": "\"solid\" | \"dashed\" | \"dotted\" | \"double\" | undefined",
          "values": [
            {
              "name": "solid"
            },
            {
              "name": "dashed"
            },
            {
              "name": "dotted"
            },
            {
              "name": "double"
            }
          ]
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-drawer",
      "description": "CatnipDrawer custom element.",
      "attributes": [
        {
          "name": "open",
          "description": "Controls whether the drawer is visible. Dismissal actions emit close requests; consumers must set this to `false` to close.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "Drawer width: s = 492px, m = 578px, l = 664px. Use `--catnip-drawer-width` for a custom desktop width.\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "show-close-button",
          "description": "Shows an icon-only close button in the header area.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "close-button-aria-label",
          "description": "Accessible name for the icon-only close button.\n\nstring | undefined"
        },
        {
          "name": "backdrop-blur",
          "description": "Applies backdrop-filter blur to the native dialog backdrop.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "close-on-backdrop-click",
          "description": "Emits `backdrop-click` on every backdrop click and requests dismissal when both `closable` and this prop are true.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "closable",
          "description": "Allows implicit dismissal requests through Escape and, together with `closeOnBackdropClick`, backdrop clicks. The explicit close button still requests dismissal.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "Accessible name for the drawer. Required unless `ariaLabelledby` supplies one.\n\nstring | undefined"
        },
        {
          "name": "aria-labelledby",
          "description": "ID of an element that labels the drawer. Takes precedence over `ariaLabel`.\n\nstring | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "ID of an element that describes the drawer.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-dropdown",
      "description": "CatnipDropdown custom element.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "string | undefined"
        },
        {
          "name": "options",
          "description": "Plain option rows. When set, `<catnip-dropdown-option>` children are ignored.\n\nCatnipDropdownOptionData[] | undefined"
        },
        {
          "name": "model-value",
          "description": "CatnipDropdownModelValue"
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "placeholder",
          "description": "string | undefined"
        },
        {
          "name": "multiple",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "select-all",
          "description": "Multi-select only. Shows a select-all row above options; toggles visible enabled rows.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "select-all-label",
          "description": "Accessible label for the built-in select-all row; defaults to bundled `dropdown.selectAll`.\n\nstring | undefined"
        },
        {
          "name": "display-mode",
          "description": "\"value\" | \"chips\" | \"count\" | undefined",
          "values": [
            {
              "name": "value"
            },
            {
              "name": "chips"
            },
            {
              "name": "count"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "open",
          "description": "boolean | null | undefined",
          "valueSet": "v"
        },
        {
          "name": "list-max-height",
          "description": "string | number | undefined"
        },
        {
          "name": "list-max-width",
          "description": "string | number | undefined"
        },
        {
          "name": "filterable",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "filter-locally",
          "description": "When false, parent controls visible options (e.g. via `v-for`); built-in label filtering is skipped.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "filter-placeholder",
          "description": "string | undefined"
        },
        {
          "name": "filter-value",
          "description": "string | undefined"
        },
        {
          "name": "catnip-input",
          "description": "Partial<CatnipInputControlProps> | undefined"
        },
        {
          "name": "show-clear-button",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "clear-button-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "selected-count-label",
          "description": "string | undefined"
        },
        {
          "name": "max-visible-chips",
          "description": "number | undefined"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-dropdown-option",
      "description": "CatnipDropdownOption custom element.",
      "attributes": [
        {
          "name": "value",
          "description": "Stable option id; included in dropdown `modelValue`.\n\nstring | number | false | true"
        },
        {
          "name": "label",
          "description": "Display and typeahead text. Falls back to default slot text when empty.\n\nstring | undefined"
        },
        {
          "name": "disabled",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "intent",
          "description": "\"default\" | \"danger\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "hidden",
          "description": "When true, the option is omitted from the panel and keyboard navigation.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-field-label",
      "description": "CatnipFieldLabel custom element.",
      "attributes": [
        {
          "name": "html-for",
          "description": "Associates the label with a control (`for` attribute). HTML attribute: `html-for`.\n\nstring | undefined"
        },
        {
          "name": "id",
          "description": "Optional `id` on the root `<label>`.\n\nstring | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "size",
          "description": "Label typography: **m** → text-m medium; **l** → text-l medium.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). Pair with `required` on the control.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional screen-reader-only supplement when non-empty after trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint.\n\nstring | undefined"
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually when the control is disabled.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "flush",
          "description": "When true, removes default `margin-block-end` so the parent supplies vertical spacing.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "info",
          "description": "When non-empty, renders a trailing `catnip-tooltip`. Wins over the `#suffix` slot.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-file-item",
      "description": "CatnipFileItem custom element.",
      "attributes": [
        {
          "name": "file-name",
          "description": "Display name of the file.\n\nstring"
        },
        {
          "name": "file-size",
          "description": "Human-readable file size (e.g. `4.1 MB`). Shown for `ready`, `inProgress`, and `done`.\n\nstring | undefined"
        },
        {
          "name": "size",
          "description": "Visual size of the file item row.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "status",
          "description": "Upload or validation status that drives layout, colors, and available actions.\n\n\"warning\" | \"danger\" | \"ready\" | \"inProgress\" | \"done\" | undefined",
          "values": [
            {
              "name": "warning"
            },
            {
              "name": "danger"
            },
            {
              "name": "ready"
            },
            {
              "name": "inProgress"
            },
            {
              "name": "done"
            }
          ]
        },
        {
          "name": "progress",
          "description": "Upload progress percentage (0–100) when `status` is `inProgress`.\n\nnumber | undefined"
        },
        {
          "name": "message",
          "description": "Helper or error message shown below the file name for `warning` and `danger`.\n\nstring | undefined"
        },
        {
          "name": "show-download",
          "description": "Whether to show the download action in `ready` and `done`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-delete",
          "description": "Whether to show the delete action in `ready` and `done`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "download-aria-label",
          "description": "Accessible label for the download action button.\n\nstring | undefined"
        },
        {
          "name": "delete-aria-label",
          "description": "Accessible label for the delete action button.\n\nstring | undefined"
        },
        {
          "name": "cancel-aria-label",
          "description": "Accessible label for the cancel action button.\n\nstring | undefined"
        },
        {
          "name": "retry-aria-label",
          "description": "Accessible label for the retry action button.\n\nstring | undefined"
        },
        {
          "name": "dismiss-aria-label",
          "description": "Accessible label for the dismiss action button.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Record<string, string> | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-graphic",
      "description": "CatnipGraphic custom element.",
      "attributes": [
        {
          "name": "name",
          "description": "Path under `illustrations/` in `@signicat/catnip-assets` without `.svg` (e.g. `products/eid-hub`, `pictograms/folder`, `hero/onboarding`).\n\nCatnipIllustrationName"
        },
        {
          "name": "width",
          "description": "Display width in pixels. Omit or use ≤0 for automatic sizing from viewBox / height.\n\nnumber | undefined"
        },
        {
          "name": "height",
          "description": "Display height in pixels. Omit or use ≤0 for automatic sizing from viewBox / width.\n\nnumber | undefined"
        },
        {
          "name": "aria-label",
          "description": "If set, exposes the graphic as a named image for assistive tech. Omit when decorative.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-icon",
      "description": "CatnipIcon custom element.",
      "attributes": [
        {
          "name": "name",
          "description": "CatnipIconName"
        },
        {
          "name": "size",
          "description": "number | undefined"
        },
        {
          "name": "aria-label",
          "description": "If set, exposes the icon to assistive tech (`role=\"img\"`). Leave unset for decorative icons (next to text or inside a named control).\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-input",
      "description": "CatnipInput custom element.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "model-value",
          "description": "string | number | undefined"
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "placeholder",
          "description": "string | undefined"
        },
        {
          "name": "autocomplete",
          "description": "string | undefined"
        },
        {
          "name": "type",
          "description": "\"text\" | \"email\" | \"password\" | \"textarea\" | undefined",
          "values": [
            {
              "name": "text"
            },
            {
              "name": "email"
            },
            {
              "name": "password"
            },
            {
              "name": "textarea"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "autofocus",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "spellcheck",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "left-icon",
          "description": "\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "right-icon",
          "description": "\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "right-icon-clickable",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "right-icon-button-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "show-clear-button",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "clear-button-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "rows",
          "description": "number | undefined"
        },
        {
          "name": "resizable",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "maxlength",
          "description": "number | undefined"
        },
        {
          "name": "pattern",
          "description": "string | undefined"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-input-chip",
      "description": "CatnipInputChip custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "string[] | undefined"
        },
        {
          "name": "draft-value",
          "description": "Custom `draftInput` slot only — parent-controlled draft for Add/commit. Ignored with the default embedded input.\n\nstring | undefined"
        },
        {
          "name": "catnip-input",
          "description": "Partial<CatnipInputControlProps> | undefined"
        },
        {
          "name": "min-chips",
          "description": "number | undefined"
        },
        {
          "name": "max-chips",
          "description": "number | undefined"
        },
        {
          "name": "max-visible-chips",
          "description": "number | undefined"
        },
        {
          "name": "show-more-chips-label",
          "description": "string | undefined"
        },
        {
          "name": "show-less-chips-label",
          "description": "string | undefined"
        },
        {
          "name": "show-add-button",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "add-button",
          "description": "CatnipInputChipAddButtonProps | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-input-date",
      "description": "CatnipInputDate custom element.",
      "attributes": [
        {
          "name": "mode",
          "description": "\"single\" | \"range\" | undefined",
          "values": [
            {
              "name": "single"
            },
            {
              "name": "range"
            }
          ]
        },
        {
          "name": "model-value",
          "description": "CatnipInputDateModelValue | undefined"
        },
        {
          "name": "show-time",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-actions",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-presets",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "period-presets",
          "description": "CatnipInputDatePeriodPresetConfig[] | undefined"
        },
        {
          "name": "show-clear-button",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "clear-button-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "display-format",
          "description": "string | undefined"
        },
        {
          "name": "display-date-time-format",
          "description": "string | undefined"
        },
        {
          "name": "open",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "min",
          "description": "string | undefined"
        },
        {
          "name": "max",
          "description": "string | undefined"
        },
        {
          "name": "disabled-dates",
          "description": "string[] | undefined"
        },
        {
          "name": "max-range-days",
          "description": "number | undefined"
        },
        {
          "name": "first-day-of-week",
          "description": "0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined"
        },
        {
          "name": "locale",
          "description": "string | undefined"
        },
        {
          "name": "panel-orientation",
          "description": "\"horizontal\" | \"vertical\" | undefined",
          "values": [
            {
              "name": "horizontal"
            },
            {
              "name": "vertical"
            }
          ]
        },
        {
          "name": "panel-placement",
          "description": "\"top\" | \"bottom\" | undefined",
          "values": [
            {
              "name": "top"
            },
            {
              "name": "bottom"
            }
          ]
        },
        {
          "name": "panel-align",
          "description": "\"start\" | \"end\" | undefined",
          "values": [
            {
              "name": "start"
            },
            {
              "name": "end"
            }
          ]
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "placeholder",
          "description": "string | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "autofocus",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "start-label",
          "description": "string | undefined"
        },
        {
          "name": "end-label",
          "description": "string | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-input-file",
      "description": "CatnipInputFile custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "Selected files. Bind with `.modelValue` and handle `update:modelValue`.\n\nFile[] | undefined"
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "orientation",
          "description": "Drop zone orientation.\n\n\"horizontal\" | \"vertical\" | undefined",
          "values": [
            {
              "name": "horizontal"
            },
            {
              "name": "vertical"
            }
          ]
        },
        {
          "name": "size",
          "description": "Drop zone size (`m` or `l`).\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "Field intent — `danger` switches the drop zone to the inline error presentation.\n\n\"neutral\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "accept",
          "description": "Native `accept` attribute forwarded to the hidden file input.\n\nstring | undefined"
        },
        {
          "name": "multiple",
          "description": "Allow selecting multiple files.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "accept-hint",
          "description": "Hint shown below the primary copy (e.g. allowed types and max size). Fallback for the `acceptHint` slot.\n\nstring | undefined"
        },
        {
          "name": "upload-link-text",
          "description": "Primary link-style call to action inside the drop zone. Fallback for the `uploadLink` slot.\n\nstring | undefined"
        },
        {
          "name": "drag-drop-text",
          "description": "Secondary copy after the upload link. Fallback for the `dragDrop` slot.\n\nstring | undefined"
        },
        {
          "name": "drag-active-text",
          "description": "Copy shown while files are dragged over the drop zone. Fallback for the `dragActive` slot.\n\nstring | undefined"
        },
        {
          "name": "drop-zone-error-title",
          "description": "Bold error line when `intent` is `danger`. Fallback for the `errorTitle` slot.\n\nstring | undefined"
        },
        {
          "name": "drop-zone-error-hint",
          "description": "Secondary error hint when `intent` is `danger`. Fallback for the `errorHint` slot.\n\nstring | undefined"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-input-number",
      "description": "CatnipInputNumber custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "number | null | undefined"
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "placeholder",
          "description": "string | undefined"
        },
        {
          "name": "min",
          "description": "number | undefined"
        },
        {
          "name": "max",
          "description": "number | undefined"
        },
        {
          "name": "step",
          "description": "number | undefined"
        },
        {
          "name": "separate-at",
          "description": "number | undefined"
        },
        {
          "name": "separator",
          "description": "\",\" | \".\" | \" \" | undefined",
          "values": [
            {
              "name": ","
            },
            {
              "name": "."
            },
            {
              "name": " "
            }
          ]
        },
        {
          "name": "decimal-separator",
          "description": "\",\" | \".\" | undefined",
          "values": [
            {
              "name": ","
            },
            {
              "name": "."
            }
          ]
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "autofocus",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-input-phone",
      "description": "CatnipInputPhone custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "CatnipInputPhoneModelValue | undefined"
        },
        {
          "name": "default-country-code",
          "description": "string | undefined"
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "placeholder",
          "description": "string | undefined"
        },
        {
          "name": "autocomplete",
          "description": "string | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "autofocus",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-clear-button",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "clear-button-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "country-button-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "filter-placeholder",
          "description": "string | undefined"
        },
        {
          "name": "open",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "filter-value",
          "description": "string | undefined"
        },
        {
          "name": "list-max-height",
          "description": "string | number | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-link",
      "description": "CatnipLink custom element.",
      "attributes": [
        {
          "name": "href",
          "description": "Destination URL. Ignored when `disabled` is true (renders as non-navigable text).\n\nstring | undefined"
        },
        {
          "name": "appearance",
          "description": "Visual treatment: primary (brand), secondary (neutral), tertiary (muted), or underline (inline text).\n\n\"primary\" | \"secondary\" | \"tertiary\" | \"underline\" | undefined",
          "values": [
            {
              "name": "primary"
            },
            {
              "name": "secondary"
            },
            {
              "name": "tertiary"
            },
            {
              "name": "underline"
            }
          ]
        },
        {
          "name": "size",
          "description": "Small (s): 12px / 16px. Medium (m): 14px / 20px. Large (l): 16px / 24px.\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "left-icon",
          "description": "Icon name for the left icon position. Use CatnipIconName for autocompletion.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "right-icon",
          "description": "Icon name for the right icon position. Empty by default.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "disabled",
          "description": "When true, renders a `span` with `role=\"link\"`, `aria-disabled`, and `tabindex=\"-1\"` instead of an anchor (not in the tab order).\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "target",
          "description": "Native `target`, e.g. `_blank` for a new tab.\n\nstring | undefined"
        },
        {
          "name": "rel",
          "description": "Native `rel`. When `target` is `_blank`, `noopener` and `noreferrer` are appended if missing.\n\nstring | undefined"
        },
        {
          "name": "download",
          "description": "Native `download` — filename hint or boolean.\n\nstring | boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "Accessible name when the default slot has no visible text (rare for links).\n\nstring | undefined"
        },
        {
          "name": "aria-current",
          "description": "Native `aria-current`: `true` or one of `page`, `step`, `location`, `date`, `time` (case-insensitive). Other strings are ignored.\n\nstring | boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-list",
      "description": "CatnipList custom element.",
      "attributes": [
        {
          "name": "size",
          "description": "Row density passed to embedded {@link ListItem } instances.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "selection-appearance",
          "description": "How selection is presented for all rows in this list.\n\n\"default\" | \"checkmark\" | \"checkbox\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "checkmark"
            },
            {
              "name": "checkbox"
            }
          ]
        },
        {
          "name": "max-height",
          "description": "Max height of the scrollable body (header/footer stay visible).\n\nstring | number | undefined"
        },
        {
          "name": "role",
          "description": "ARIA role on the body list element.\n\n\"listbox\" | \"menu\" | undefined",
          "values": [
            {
              "name": "listbox"
            },
            {
              "name": "menu"
            }
          ]
        },
        {
          "name": "body-class",
          "description": "Extra class(es) on the scrollable list body `<ul>`.\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "Accessible name when the list is not labelled by a visible element.\n\nstring | undefined"
        },
        {
          "name": "aria-labelledby",
          "description": "ID of the element that labels the list body.\n\nstring | undefined"
        },
        {
          "name": "body-id",
          "description": "DOM id for the scrollable list body (`<ul>`).\n\nstring | undefined"
        },
        {
          "name": "aria-multiselectable",
          "description": "Sets `aria-multiselectable` on the list body.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.List` defaults. Keys: `root`, `header`, `body`, `footer`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-list-item",
      "description": "CatnipListItem custom element.",
      "attributes": [
        {
          "name": "id",
          "description": "DOM id for the option control (listbox `aria-activedescendant`).\n\nstring | undefined"
        },
        {
          "name": "active",
          "description": "Keyboard highlight (combobox `aria-activedescendant`); distinct from `selected`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "selected",
          "description": "Selected column visuals; pairs with parent {@link ListSelectionAppearance}.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "indeterminate",
          "description": "Partial selection for checkbox rows (e.g. select-all header).\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "Muted visuals; suppresses click emit.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "intent",
          "description": "Row intent. `danger` applies Figma error styling (text, hover fill, and selected-state chrome).\n\n\"default\" | \"danger\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.ListItem` defaults. Keys: `root`, `control`, `checkbox`, `checkmark`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-pagination",
      "description": "CatnipPagination custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "Current page (1-based).\n\nnumber | undefined"
        },
        {
          "name": "total-pages",
          "description": "Total number of pages. When omitted, derived from `totalItems` / `pageSize`\n(at least 1).\n\nnumber | undefined"
        },
        {
          "name": "total-items",
          "description": "Total item count for the default-layout range summary (`21-30 of 86 items`).\n\nnumber | undefined"
        },
        {
          "name": "page-size",
          "description": "Items per page — used for the range summary and to derive `totalPages` when needed.\n\nnumber | undefined"
        },
        {
          "name": "layout",
          "description": "`default` = range + page list; `compact` = first/prev/current/of N/next/last.\n\n\"default\" | \"compact\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "compact"
            }
          ]
        },
        {
          "name": "sibling-count",
          "description": "Pages shown on each side of the current page in default layout.\n\nnumber | undefined"
        },
        {
          "name": "disabled",
          "description": "Disables all controls.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "previous-label",
          "description": "Visible Previous label (default layout).\n\nstring | undefined"
        },
        {
          "name": "next-label",
          "description": "Visible Next label (default layout).\n\nstring | undefined"
        },
        {
          "name": "of-label",
          "description": "Connector word in summaries (`of`).\n\nstring | undefined"
        },
        {
          "name": "items-label",
          "description": "Suffix after total items in default layout (`items`).\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "Accessible name for the navigation landmark.\n\nstring | undefined"
        },
        {
          "name": "first-page-aria-label",
          "description": "Accessible label for first-page control (compact).\n\nstring | undefined"
        },
        {
          "name": "last-page-aria-label",
          "description": "Accessible label for last-page control (compact).\n\nstring | undefined"
        },
        {
          "name": "previous-page-aria-label",
          "description": "Accessible label for previous-page control.\n\nstring | undefined"
        },
        {
          "name": "next-page-aria-label",
          "description": "Accessible label for next-page control.\n\nstring | undefined"
        },
        {
          "name": "page-aria-label",
          "description": "Accessible label for a page-number control. Use `{page}` as the page placeholder\n(e.g. `Page {page}`).\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-progress",
      "description": "CatnipProgress custom element.",
      "attributes": [
        {
          "name": "progress",
          "description": "Determinate completion percentage. Values outside 0–100 are clamped.\n\nnumber | undefined"
        },
        {
          "name": "label",
          "description": "Visible progress description and accessible-name fallback. Empty uses bundled `progress.label`.\n\nstring | undefined"
        },
        {
          "name": "hide-label",
          "description": "Hides the complete visual label row, including percentage and intent icon.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-percentage",
          "description": "Shows the normalized percentage in the visual label row.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-icon",
          "description": "Shows the intent icon in the visual label row for success, warning, and danger.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-zero-indicator",
          "description": "Shows a thickness-sized fill marker when progress is 0. File Item turns this off for an empty upload track.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "intent",
          "description": "Semantic colour treatment. Does not change or infer the progress value.\n\n\"default\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "size",
          "description": "Visual scale for label typography, intent icon, and bar thickness.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "aria-label",
          "description": "Accessible name for the native progress element. Falls back to `label`, then bundled `progress.label`.\n\nstring | undefined"
        },
        {
          "name": "aria-value-text",
          "description": "Human-readable alternative to the numeric value, for example `Step 2 of 4`.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-radio",
      "description": "CatnipRadio custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "Checked state. Binds to attribute `model-value` for custom elements.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "value",
          "description": "Form value when checked.\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "Helper or validation copy below the option row (Figma info message).\n\nSupportingTextProp | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "Extra ids merged into `aria-describedby` on the input alongside generated supporting-text id.\n\nstring | undefined"
        },
        {
          "name": "tabindex",
          "description": "number | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-radio-group",
      "description": "CatnipRadioGroup custom element.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "size",
          "description": "Label typography matches field size: **s** and **m** use text-m medium; **l** uses text-l medium\n(Figma: `catnip-text-m` / `catnip-text-l` at weight medium).\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "id",
          "description": "Optional `id` on the root `<label>`.\n\nstring | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "string | undefined"
        },
        {
          "name": "options",
          "description": "CatnipRadioGroupOptionData[] | undefined"
        },
        {
          "name": "model-value",
          "description": "null | string | number | false | true | undefined"
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "Shared `name` on each native radio input; auto-generated when empty.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-range-input",
      "description": "CatnipRangeInput custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "number | undefined"
        },
        {
          "name": "id",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "string | undefined"
        },
        {
          "name": "min",
          "description": "number | undefined"
        },
        {
          "name": "max",
          "description": "number | undefined"
        },
        {
          "name": "step",
          "description": "number | undefined"
        },
        {
          "name": "size",
          "description": "Component dimensions and typography. Range Input supports only the M and L variants defined in Figma.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "autofocus",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-min-max-labels",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "min-label",
          "description": "string | undefined"
        },
        {
          "name": "max-label",
          "description": "string | undefined"
        },
        {
          "name": "show-value-tooltip",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-input-field",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "value-input-aria-label",
          "description": "string | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "Visible label text. Fallback for the `label` slot when no light-DOM content is projected.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-spinner",
      "description": "CatnipSpinner custom element.",
      "attributes": [
        {
          "name": "arc",
          "description": "\"quarter\" | \"three-quarter\" | undefined",
          "values": [
            {
              "name": "quarter"
            },
            {
              "name": "three-quarter"
            }
          ]
        },
        {
          "name": "inverse",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "number | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-split-button",
      "description": "CatnipSplitButton custom element.",
      "attributes": [
        {
          "name": "appearance",
          "description": "Visual weight of the button\n\n\"primary\" | \"secondary\" | \"ghost\" | undefined",
          "values": [
            {
              "name": "primary"
            },
            {
              "name": "secondary"
            },
            {
              "name": "ghost"
            }
          ]
        },
        {
          "name": "size",
          "description": "Size dimension of the button\n\n\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "intent",
          "description": "Visual intent (e.g., danger)\n\n\"default\" | \"danger\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "disabled",
          "description": "Disables both buttons\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "loading",
          "description": "Loading state disables both buttons\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "open",
          "description": "Consumer-controlled open state for the suffix button. Applies selected styling and `aria-expanded`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "left-icon",
          "description": "Icon to display on the left side of the main button\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "aria-label",
          "description": "Accessible name for the main button when there is no text content\n\nstring | undefined"
        },
        {
          "name": "aria-label-suffix",
          "description": "Accessible name for the suffix button (defaults to 'More options')\n\nstring | undefined"
        },
        {
          "name": "aria-haspopup",
          "description": "Popup type announced by the suffix button. Defaults to `true`; set `false` to omit `aria-haspopup`.\n\nfalse | true | \"dialog\" | \"listbox\" | \"menu\" | \"true\" | \"false\" | \"tree\" | \"grid\" | undefined",
          "values": [
            {
              "name": "dialog"
            },
            {
              "name": "listbox"
            },
            {
              "name": "menu"
            },
            {
              "name": "true"
            },
            {
              "name": "false"
            },
            {
              "name": "tree"
            },
            {
              "name": "grid"
            }
          ]
        },
        {
          "name": "aria-controls",
          "description": "ID of the consumer-rendered popup controlled by the suffix button.\n\nstring | undefined"
        },
        {
          "name": "type",
          "description": "Type attribute for the main button\n\n\"button\" | \"submit\" | \"reset\" | undefined",
          "values": [
            {
              "name": "button"
            },
            {
              "name": "submit"
            },
            {
              "name": "reset"
            }
          ]
        },
        {
          "name": "name",
          "description": "Name attribute for the main button\n\nstring | undefined"
        },
        {
          "name": "value",
          "description": "Value attribute for the main button\n\nstring | undefined"
        },
        {
          "name": "form",
          "description": "Form id that the main button belongs to\n\nstring | undefined"
        },
        {
          "name": "autofocus",
          "description": "Automatically focus the main button on mount\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into testSelectors.CatnipSplitButton defaults\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-status",
      "description": "CatnipStatus custom element.",
      "attributes": [
        {
          "name": "intent",
          "description": "Semantic color for the dot, label, and filled chrome.\n\n\"disabled\" | \"neutral\" | \"informative\" | \"success\" | \"warning\" | \"danger\" | \"brand\" | undefined",
          "values": [
            {
              "name": "disabled"
            },
            {
              "name": "neutral"
            },
            {
              "name": "informative"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            },
            {
              "name": "brand"
            }
          ]
        },
        {
          "name": "filled",
          "description": "Pill background. Off is indicator + label only.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "Density: **m** (default) or **l**.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "left-icon",
          "description": "Icon name for the leading indicator. When set, it replaces the status dot.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "aria-label",
          "description": "Accessible name — required when the default slot is empty (icon-only).\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-stepper",
      "description": "CatnipStepper custom element.",
      "attributes": [
        {
          "name": "steps",
          "description": "Step definitions. HTML attributes may supply a JSON array string.\n\nstring | CatnipStepperStep[] | undefined"
        },
        {
          "name": "orientation",
          "description": "Horizontal or vertical flow.\n\n\"horizontal\" | \"vertical\" | undefined",
          "values": [
            {
              "name": "horizontal"
            },
            {
              "name": "vertical"
            }
          ]
        },
        {
          "name": "step-name-position",
          "description": "Label placement in horizontal steppers. Vertical steppers always resolve to `horizontal`.\n\n\"horizontal\" | \"vertical\" | undefined",
          "values": [
            {
              "name": "horizontal"
            },
            {
              "name": "vertical"
            }
          ]
        },
        {
          "name": "show-steps-name",
          "description": "Shows step names using `stepNamePosition`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "interactive",
          "description": "Renders enabled steps as native buttons and emits `step-click`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "Accessible name for the step group or step navigation landmark.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-table",
      "description": "CatnipTable custom element.",
      "attributes": [
        {
          "name": "size",
          "description": "Row density passed to descendant rows and cells.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "striped",
          "description": "Alternating body-row background (uses primary subtler token).\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "sticky-header",
          "description": "Stick header row group to the top of the scroll container.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "Accessible name when there is no visible caption.\n\nstring | undefined"
        },
        {
          "name": "aria-labelledby",
          "description": "ID of an element that labels the table.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-table-cell",
      "description": "CatnipTableCell custom element.",
      "attributes": [
        {
          "name": "header",
          "description": "When true, styles and roles the cell as a column header.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "align",
          "description": "Horizontal alignment of cell content.\n\n\"center\" | \"start\" | \"end\" | undefined",
          "values": [
            {
              "name": "center"
            },
            {
              "name": "start"
            },
            {
              "name": "end"
            }
          ]
        },
        {
          "name": "numeric",
          "description": "Body cells: use code typography (Figma Number). Pair with `align=\"end\"` for numeric columns.\nHeader cells keep table-header type; still use `align=\"end\"` when the column is numeric.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "sortable",
          "description": "Show sort affordance (header cells only). Presentational — does not sort data.\nConsumer binds `activeSort` and handles `sort-click`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "active-sort",
          "description": "Active sort direction for this column. Empty / unset = sortable but not the active column.\nOnly applies when `sortable` is true.\n\n\"\" | \"asc\" | \"desc\" | undefined",
          "values": [
            {
              "name": ""
            },
            {
              "name": "asc"
            },
            {
              "name": "desc"
            }
          ]
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-table-row",
      "description": "CatnipTableRow custom element.",
      "attributes": [
        {
          "name": "selected",
          "description": "Selected row chrome (primary/subtler background). Consumer owns selection state.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-tabs",
      "description": "CatnipTabs custom element.",
      "attributes": [
        {
          "name": "items",
          "description": "Tab definitions (`value`, `label`, optional `icon`, `count`, optional `menu`).\nFrom HTML attributes, values may arrive as a JSON string until normalized in the component.\n\nstring | CatnipTabItem[] | undefined"
        },
        {
          "name": "model-value",
          "description": "Selected tab or submenu row `value` — drives active styling and `aria-selected`.\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "Accessible name for the tab navigation region.\n\nstring | undefined"
        },
        {
          "name": "size",
          "description": "Visual scale — **m** = compact rail (14px, 32px gap); **l** = large rail (16px, 40px gap, 24px icons).\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-toast",
      "description": "CatnipToast custom element.",
      "attributes": [
        {
          "name": "intent",
          "description": "Semantic color treatment. Announcement urgency is controlled independently by `announcement`.\n\n\"neutral\" | \"informative\" | \"success\" | \"warning\" | \"danger\" | \"brand\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "informative"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            },
            {
              "name": "brand"
            }
          ]
        },
        {
          "name": "size",
          "description": "Controls icon and text size.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "title",
          "description": "Plain-text title.\n\nstring | undefined"
        },
        {
          "name": "description",
          "description": "Plain-text message. Ignored when the default slot has content.\n\nstring | undefined"
        },
        {
          "name": "left-icon",
          "description": "Icon override. An empty value uses the icon mapped to the current intent.\n\n\"\" | CatnipIconName | undefined",
          "values": [
            {
              "name": ""
            }
          ]
        },
        {
          "name": "duration",
          "description": "Milliseconds before dismissal, or `persistent` to disable automatic dismissal.\n\nnumber | \"persistent\" | undefined",
          "values": [
            {
              "name": "persistent"
            }
          ]
        },
        {
          "name": "show-close-button",
          "description": "Shows a close button.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "horizontal-position",
          "description": "Horizontal viewport position.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "vertical-position",
          "description": "Vertical viewport position.\n\n\"top\" | \"bottom\" | undefined",
          "values": [
            {
              "name": "top"
            },
            {
              "name": "bottom"
            }
          ]
        },
        {
          "name": "announcement",
          "description": "Assistive-technology announcement level. Defaults to no live region; opt in to polite or assertive announcements.\n\n\"none\" | \"polite\" | \"assertive\" | undefined",
          "values": [
            {
              "name": "none"
            },
            {
              "name": "polite"
            },
            {
              "name": "assertive"
            }
          ]
        },
        {
          "name": "close-button-aria-label",
          "description": "Accessible label for the icon-only close button.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-toggle",
      "description": "CatnipToggle custom element.",
      "attributes": [
        {
          "name": "model-value",
          "description": "When true, the switch is in the on position. Binds to attribute `model-value` for custom elements and `v-catnip-model`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "Disables the switch and applies disabled styling (including muted on-state track).\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "readonly",
          "description": "Prevents changes while keeping the switch keyboard-focusable and exposing `aria-readonly`.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "Regular (m): 36×20px track, 20px thumb. Large (l): 52×28px track, 28px thumb.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "name",
          "description": "Submitted with the form when the toggle is on (`ElementInternals`).\n\nstring | undefined"
        },
        {
          "name": "value",
          "description": "Form value when on; default matches native checkbox convention.\n\nstring | undefined"
        },
        {
          "name": "aria-label",
          "description": "Accessible name when there is no visible label in the default slot.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override data-test attributes for testing\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-toggle-group",
      "description": "CatnipToggleGroup custom element.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Mutes the label visually (`pointer-events: none`) for coordination with a disabled control.\nDoes **not** replace `disabled` on the control — set that on the input (or equivalent) for accessibility.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "Merged into `testSelectors.FieldLabel` defaults. Keys: `root` (label), `main` (title slot),\n`optional`, `required` (visual marker), `suffix`, `action`.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "id",
          "description": "Optional `id` on the root `<label>`.\n\nstring | undefined"
        },
        {
          "name": "alignment",
          "description": "Horizontal alignment of the label block.\n\n\"left\" | \"center\" | \"right\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "center"
            },
            {
              "name": "right"
            }
          ]
        },
        {
          "name": "required",
          "description": "When true, shows a trailing required marker (visual). The associated control must expose\n`required` and/or `aria-required=\"true\"` for assistive technology — do not rely on the label alone.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "required-screen-reader-text",
          "description": "Optional extra text for screen readers **only** when you need a supplement beyond `aria-required`\non the control (rare). Empty by default — no hidden span is rendered unless this is non-empty\nafter trim.\n\nstring | undefined"
        },
        {
          "name": "required-marker",
          "description": "Visual marker for required fields (default asterisk).\n\nstring | undefined"
        },
        {
          "name": "optional",
          "description": "When true (and not `required`), shows optional hint text.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "optional-text",
          "description": "Overrides `locale(\"fieldLabel.optional\")` for the optional hint when `optional` is true.\n\nstring | undefined"
        },
        {
          "name": "info",
          "description": "When non-empty (after trim), renders a trailing `catnip-tooltip` **before** the `#suffix` slot.\nIf both **`info`** and **`#suffix`** are provided, **`info`** wins and **`#suffix`** is omitted.\n\nstring | undefined"
        },
        {
          "name": "label",
          "description": "string | undefined"
        },
        {
          "name": "options",
          "description": "CatnipToggleGroupOptionData[] | undefined"
        },
        {
          "name": "model-value",
          "description": "null | string | number | false | true | undefined"
        },
        {
          "name": "size",
          "description": "Component dimensions and typography. Toggle Group supports only the M and L variants.\n\n\"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "appearance",
          "description": "\"default\" | \"accent\" | undefined",
          "values": [
            {
              "name": "default"
            },
            {
              "name": "accent"
            }
          ]
        },
        {
          "name": "intent",
          "description": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | undefined",
          "values": [
            {
              "name": "neutral"
            },
            {
              "name": "success"
            },
            {
              "name": "warning"
            },
            {
              "name": "danger"
            }
          ]
        },
        {
          "name": "supporting-text",
          "description": "SupportingTextProp | undefined"
        },
        {
          "name": "hide-label",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "aria-label",
          "description": "string | undefined"
        },
        {
          "name": "aria-describedby",
          "description": "string | undefined"
        },
        {
          "name": "name",
          "description": "Form field name; submitted value is the selected option `value`.\n\nstring | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-tooltip",
      "description": "CatnipTooltip custom element.",
      "attributes": [
        {
          "name": "trigger",
          "description": "\"hover\" | \"click\" | undefined",
          "values": [
            {
              "name": "hover"
            },
            {
              "name": "click"
            }
          ]
        },
        {
          "name": "subtle",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "size",
          "description": "\"s\" | \"m\" | \"l\" | undefined",
          "values": [
            {
              "name": "s"
            },
            {
              "name": "m"
            },
            {
              "name": "l"
            }
          ]
        },
        {
          "name": "placement",
          "description": "\"left\" | \"right\" | \"top\" | \"bottom\" | undefined",
          "values": [
            {
              "name": "left"
            },
            {
              "name": "right"
            },
            {
              "name": "top"
            },
            {
              "name": "bottom"
            }
          ]
        },
        {
          "name": "alignment",
          "description": "\"center\" | \"start\" | \"end\" | undefined",
          "values": [
            {
              "name": "center"
            },
            {
              "name": "start"
            },
            {
              "name": "end"
            }
          ]
        },
        {
          "name": "max-width",
          "description": "string | undefined"
        },
        {
          "name": "offset",
          "description": "number | undefined"
        },
        {
          "name": "disabled",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "open",
          "description": "boolean | null | undefined",
          "valueSet": "v"
        },
        {
          "name": "show-delay",
          "description": "number | undefined"
        },
        {
          "name": "hide-delay",
          "description": "number | undefined"
        },
        {
          "name": "show-on-focus",
          "description": "boolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "test-selectors",
          "description": "TestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    },
    {
      "name": "catnip-user",
      "description": "CatnipUser custom element.",
      "attributes": [
        {
          "name": "name",
          "description": "Visible person name. Empty shows the unassigned state. Also used to derive initials when `initials` is empty.\n\nstring | undefined"
        },
        {
          "name": "initials",
          "description": "Overrides derived initials. Displayed length is at most two characters.\n\nstring | undefined"
        },
        {
          "name": "color",
          "description": "Avatar background CSS color. Empty uses the default purple data color. Ignored when Unassigned. Custom fills get AA-safe initials ink.\n\nstring | undefined"
        },
        {
          "name": "interactive",
          "description": "When true, the chip is a native button. Pair with `interaction` for click vs expand chrome.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "interaction",
          "description": "How an interactive chip behaves. Ignored when `interactive` is false.\n`click` — pill button, no chevron.\n`expand` — pill + chevron (Dropdown `trigger`).\n\n\"click\" | \"expand\" | undefined",
          "values": [
            {
              "name": "click"
            },
            {
              "name": "expand"
            }
          ]
        },
        {
          "name": "selected",
          "description": "Open / pressed appearance when interactive. Use when a menu is open; Dropdown’s `aria-expanded` on the host also applies this.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "hide-name",
          "description": "Hides the name and shows only the avatar circle. `name` still drives initials and the accessible name.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "disabled",
          "description": "Disabled presentation. Native `disabled` when the root is a button.\n\nboolean | undefined",
          "valueSet": "v"
        },
        {
          "name": "unassigned-label",
          "description": "Overrides bundled `user.unassigned` when `name` is empty.\n\nstring | undefined"
        },
        {
          "name": "test-selectors",
          "description": "Override stable internal data-test hooks.\n\nTestSelectorsProp | undefined"
        },
        {
          "name": "class",
          "description": "unknown"
        },
        {
          "name": "style",
          "description": "unknown"
        }
      ]
    }
  ]
}