{
  "package": "ionbase-ui",
  "version": "0.138.1",
  "usage": "Pick a component here, then read dist/meta/<Name>.json for its full contract.",
  "hooks": [
    "useAgentRun",
    "useLocale",
    "useTableColumns",
    "useTableSelection",
    "useTableSort",
    "useToast"
  ],
  "helpers": [
    "agentRunFrom",
    "agentRunHasEnded",
    "agentRunLog",
    "agentRunReducer",
    "chartAxisProps",
    "chartGridProps",
    "chartSeriesClass",
    "chartTooltipProps",
    "initialAgentRunState",
    "replayAgentRun"
  ],
  "components": {
    "Accordion": {
      "summary": "Sections that collapse, with the document's heading structure intact. Holds the open set and the heading level.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Accordion.json",
      "hasIntent": true
    },
    "AccordionItem": {
      "summary": "One collapsible section: an always-visible title that toggles a region beneath it.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/AccordionItem.json",
      "hasIntent": true
    },
    "AgentActivity": {
      "summary": "An ordered, plain-language log of what the agent is doing. Status is text and shape, never colour alone.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/AgentActivity.json",
      "hasIntent": true
    },
    "AgentActivityStep": {
      "summary": "One step in an activity log: what happened, in the user's language, with a status carried by shape and text.",
      "status": "stable",
      "variants": {
        "status": [
          "pending",
          "active",
          "done",
          "failed",
          "skipped"
        ]
      },
      "detail": "dist/meta/AgentActivityStep.json",
      "hasIntent": true
    },
    "AgentStop": {
      "summary": "The always-visible way to end a running agent. Not optional, and not behind a menu.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/AgentStop.json",
      "hasIntent": true
    },
    "AILabel": {
      "summary": "Marks content as generated by AI, and opens what that means — what was generated, from what, and what to check. The explanation is required.",
      "status": "stable",
      "variants": {
        "placement": [
          "top",
          "bottom",
          "left",
          "right"
        ],
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/AILabel.json",
      "hasIntent": true
    },
    "Alert": {
      "summary": "A persistent, in-page status message. Intent picks the ARIA role for you.",
      "status": "stable",
      "variants": {
        "intent": [
          "neutral",
          "primary",
          "success",
          "warning",
          "error",
          "information"
        ],
        "emphasis": [
          "subtle",
          "solid"
        ],
        "layout": [
          "inline",
          "banner"
        ]
      },
      "detail": "dist/meta/Alert.json",
      "hasIntent": true
    },
    "ApprovalGate": {
      "summary": "A proposed action held until a person approves, rejects or amends it. It renders the decision; it does not enforce it.",
      "status": "stable",
      "variants": {
        "risk": [
          "low",
          "medium",
          "high"
        ],
        "status": [
          "pending",
          "approved",
          "rejected",
          "expired"
        ]
      },
      "detail": "dist/meta/ApprovalGate.json",
      "hasIntent": true
    },
    "AppSwitcher": {
      "summary": "The nine-dot button in a suite's header and the grid of products it opens — links, each to a product's home, with the one you are in marked.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/AppSwitcher.json",
      "hasIntent": true
    },
    "Avatar": {
      "summary": "A person or entity marker. Content is chosen by precedence — image, then initials, then icon — not by a type prop.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg",
          "mini"
        ],
        "shape": [
          "circle",
          "square"
        ],
        "topIndicator": [
          "neutral",
          "primary",
          "success",
          "warning",
          "error",
          "information"
        ],
        "bottomIndicator": [
          "neutral",
          "primary",
          "success",
          "warning",
          "error",
          "information"
        ]
      },
      "detail": "dist/meta/Avatar.json",
      "hasIntent": true
    },
    "AvatarGradient": {
      "summary": "Avatar's initials-only sibling: a tinted, bevelled disc in one of seven colours, for people with no photo.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg",
          "mini"
        ],
        "color": [
          "slate",
          "blue",
          "violet",
          "pink",
          "orange",
          "green",
          "red"
        ]
      },
      "detail": "dist/meta/AvatarGradient.json",
      "hasIntent": true
    },
    "AvatarGroup": {
      "summary": "Overlapping Avatars with a `+N` overflow, for showing several people in one row's width.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg",
          "mini"
        ],
        "shape": [
          "circle",
          "square"
        ]
      },
      "detail": "dist/meta/AvatarGroup.json",
      "hasIntent": true
    },
    "Badge": {
      "summary": "A small, non-interactive label that classifies the thing next to it. Presentational — no role, no live region.",
      "status": "stable",
      "variants": {
        "intent": [
          "neutral",
          "primary",
          "success",
          "warning",
          "error",
          "information"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "shape": [
          "pill",
          "rounded"
        ]
      },
      "detail": "dist/meta/Badge.json",
      "hasIntent": true
    },
    "Banner": {
      "summary": "A notice about the whole product, across the top of it — maintenance tonight, a trial ending, the workspace read-only or scheduled for deletion. Alert's banner layout on one line, in the app shell; a dismissal is remembered with `dismissKey`.",
      "status": "stable",
      "variants": {
        "intent": [
          "neutral",
          "primary",
          "success",
          "warning",
          "error",
          "information"
        ],
        "emphasis": [
          "subtle",
          "solid"
        ]
      },
      "detail": "dist/meta/Banner.json",
      "hasIntent": true
    },
    "Breadcrumb": {
      "summary": "Where this page sits in the hierarchy, and how to get back up. An ordered list inside a named landmark.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Breadcrumb.json",
      "hasIntent": true
    },
    "BreadcrumbItem": {
      "summary": "One crumb. A link to an ancestor, or the current page rendered as text.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/BreadcrumbItem.json",
      "hasIntent": true
    },
    "Button": {
      "summary": "Triggers an action in place. Never navigates.",
      "status": "stable",
      "variants": {
        "variant": [
          "success",
          "primary-brand",
          "primary-neutral",
          "primary-soft",
          "secondary",
          "tertiary",
          "destructive"
        ],
        "size": [
          "sm",
          "md",
          "lg",
          "xl"
        ]
      },
      "detail": "dist/meta/Button.json",
      "hasIntent": true
    },
    "ButtonGroup": {
      "summary": "A row of actions — a dialog's Cancel and Confirm, a form's Back, Save and Next, a record's header actions. Owns the gap, the order and what happens when the row runs out of room.",
      "status": "stable",
      "variants": {
        "align": [
          "start",
          "center",
          "end"
        ],
        "overflow": [
          "menu",
          "wrap"
        ]
      },
      "detail": "dist/meta/ButtonGroup.json",
      "hasIntent": true
    },
    "Calendar": {
      "summary": "One month in the page for a day chosen by where it falls — a day to resume on, a delivery day — taking and returning a YYYY-MM-DD string.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Calendar.json",
      "hasIntent": true
    },
    "Card": {
      "summary": "A bordered surface that groups one part of a page, with an optional title row. A titled card is a named region; an untitled one is a plain surface.",
      "status": "stable",
      "variants": {
        "intent": [
          "default",
          "danger"
        ]
      },
      "detail": "dist/meta/Card.json",
      "hasIntent": true
    },
    "ChartLegend": {
      "summary": "Which colour is which series, for a chart drawn with visx. The swatch reads the same token as the series.",
      "status": "stable",
      "variants": {
        "shape": [
          "square",
          "line"
        ]
      },
      "detail": "dist/meta/ChartLegend.json",
      "hasIntent": true
    },
    "ChartTooltip": {
      "summary": "The panel showing the values under the pointer on a visx chart. visx positions it; this draws it.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/ChartTooltip.json",
      "hasIntent": true
    },
    "ChatMessage": {
      "summary": "One turn in a transcript — who, when, what, and what can be done with it. An article named by its author and time; never a live region.",
      "status": "stable",
      "variants": {
        "from": [
          "person",
          "assistant"
        ]
      },
      "detail": "dist/meta/ChatMessage.json",
      "hasIntent": true
    },
    "Checkbox": {
      "summary": "A native checkbox with the system's styling, supporting an indeterminate state.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "intent": [
          "neutral",
          "danger",
          "brand"
        ]
      },
      "detail": "dist/meta/Checkbox.json",
      "hasIntent": true
    },
    "CheckboxGroup": {
      "summary": "A set of checkboxes answering one question. Owns the selected values, the group's label, help and error, and \"select at least one\".",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "intent": [
          "neutral",
          "danger",
          "brand"
        ],
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "detail": "dist/meta/CheckboxGroup.json",
      "hasIntent": true
    },
    "Citation": {
      "summary": "The inline source marker. The visible number is for the eye; the accessible name is the sentence.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Citation.json",
      "hasIntent": true
    },
    "CitationList": {
      "summary": "The footer list of sources, as an ordered list so the count and order are structural.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/CitationList.json",
      "hasIntent": true
    },
    "CitationListItem": {
      "summary": "One source row: its number, what it is, and the passage it supports.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/CitationListItem.json",
      "hasIntent": true
    },
    "Coachmark": {
      "summary": "A callout pointing at one thing on the page, to say what it is or what changed — anchored to its target by id or ref, which is ringed while it shows. Several in a row are a Tour.",
      "status": "stable",
      "variants": {
        "placement": [
          "top",
          "bottom",
          "start",
          "end"
        ]
      },
      "detail": "dist/meta/Coachmark.json",
      "hasIntent": true
    },
    "CodeSnippet": {
      "summary": "Code shown as code: a name in a sentence, a command to run, a block to paste. Commands and blocks scroll rather than wrap, are named regions a keyboard can scroll, and carry a CopyButton that copies all of it.",
      "status": "stable",
      "variants": {
        "type": [
          "inline",
          "single",
          "multi"
        ]
      },
      "detail": "dist/meta/CodeSnippet.json",
      "hasIntent": true
    },
    "ColorPicker": {
      "summary": "A colour chosen by a person — a brand accent, a label, a chart series — as a hex field with a swatch button that opens a saturation and brightness area, a hue strip and any preset swatches, taking and returning `#RRGGBB`.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/ColorPicker.json",
      "hasIntent": true
    },
    "Combobox": {
      "summary": "A text field that filters a list of options down to one selected value.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "menuTrigger": [
          "focus",
          "input",
          "manual"
        ]
      },
      "detail": "dist/meta/Combobox.json",
      "hasIntent": true
    },
    "CommandPalette": {
      "summary": "A searchable list of every command in the product, opened with ⌘K / Ctrl+K from anywhere, that runs the chosen command and closes.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/CommandPalette.json",
      "hasIntent": true
    },
    "ConfidenceIndicator": {
      "summary": "How much to trust the thing next to it — three levels with a required basis, never a percentage.",
      "status": "stable",
      "variants": {
        "level": [
          "low",
          "medium",
          "high"
        ]
      },
      "detail": "dist/meta/ConfidenceIndicator.json",
      "hasIntent": true
    },
    "ContextMenu": {
      "summary": "The menu a right-click opens on a thing — a row's actions, a file's. Shift+F10 and the Menu key open it from the keyboard, under the thing. A shortcut to actions that are also reachable some other way.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/ContextMenu.json",
      "hasIntent": true
    },
    "CopyButton": {
      "summary": "Copies a value — an ID, a key, a command — confirms in place with a check and \"Copied\" for two seconds, and announces it. When the clipboard refuses it says so, and hands over the text.",
      "status": "stable",
      "variants": {
        "variant": [
          "secondary",
          "tertiary"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/CopyButton.json",
      "hasIntent": true
    },
    "DatePicker": {
      "summary": "A segmented date field with a calendar attached, taking and returning a YYYY-MM-DD string.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/DatePicker.json",
      "hasIntent": true
    },
    "DateRangePicker": {
      "summary": "Two segmented date fields sharing one calendar, returning an inclusive { start, end } of YYYY-MM-DD strings.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/DateRangePicker.json",
      "hasIntent": true
    },
    "DateTimePicker": {
      "summary": "A date and a time of day as one field — day, month, year, hour and minute in segments, with the calendar and a time field in its popover — taking and returning a wall-clock YYYY-MM-DDTHH:MM string.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "granularity": [
          "minute",
          "second"
        ]
      },
      "detail": "dist/meta/DateTimePicker.json",
      "hasIntent": true
    },
    "DescriptionList": {
      "summary": "Label–value pairs as a real `<dl>` — a record's details, a settings summary, a wizard's review step. Three layouts; an empty value is shown as \"—\" and read as words.",
      "status": "stable",
      "variants": {
        "layout": [
          "horizontal",
          "stacked",
          "row"
        ]
      },
      "detail": "dist/meta/DescriptionList.json",
      "hasIntent": true
    },
    "DescriptionListItem": {
      "summary": "One term and its value inside a DescriptionList: a `<div>` holding a `<dt>` and a `<dd>`.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/DescriptionListItem.json",
      "hasIntent": true
    },
    "Divider": {
      "summary": "A semantic thematic break, rendered as a real <hr>.",
      "status": "stable",
      "variants": {
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "detail": "dist/meta/Divider.json",
      "hasIntent": true
    },
    "Drawer": {
      "summary": "A modal panel anchored to an edge. Modal behaviour — focus trap, Escape, scrim — with the shape of a side panel.",
      "status": "stable",
      "variants": {
        "placement": [
          "top",
          "bottom",
          "start",
          "end"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/Drawer.json",
      "hasIntent": true
    },
    "DualListbox": {
      "summary": "Choose some of many in two lists side by side — what is available, and what is chosen — with buttons that move options across, and optionally an order for what is chosen. A form field.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/DualListbox.json",
      "hasIntent": true
    },
    "EmptyState": {
      "summary": "The state a region shows when it has nothing to show, and why — first run, no results, no access, or a failed fetch.",
      "status": "stable",
      "variants": {
        "reason": [
          "error",
          "first-run",
          "no-results",
          "no-access"
        ],
        "size": [
          "inline",
          "page",
          "panel"
        ]
      },
      "detail": "dist/meta/EmptyState.json",
      "hasIntent": true
    },
    "Fieldset": {
      "summary": "A <fieldset>/<legend> that groups related fields under one label, one description and one error — an address, a pair of limits, a date typed as two fields.",
      "status": "stable",
      "variants": {
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "detail": "dist/meta/Fieldset.json",
      "hasIntent": true
    },
    "FileUpload": {
      "summary": "A drop target wrapped around a real file input, with client-side accept and size checks.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/FileUpload.json",
      "hasIntent": true
    },
    "FullCard": {
      "summary": "A full-bleed row: a text column beside a framed media panel, mirrored by `alignment`.",
      "status": "stable",
      "variants": {
        "alignment": [
          "left",
          "right"
        ]
      },
      "detail": "dist/meta/FullCard.json",
      "hasIntent": true
    },
    "Grid": {
      "summary": "Columns that line up across rows, with gaps from the spacing scale. Reach for it before writing grid CSS: cards and tiles, a main column beside its aside, a form in two columns.",
      "status": "stable",
      "variants": {
        "collapse": [
          "tablet",
          "mobile",
          "never"
        ],
        "align": [
          "start",
          "center",
          "end",
          "stretch"
        ],
        "as": [
          "form",
          "div",
          "span",
          "section",
          "nav",
          "ul",
          "ol",
          "li",
          "header",
          "footer",
          "fieldset"
        ]
      },
      "detail": "dist/meta/Grid.json",
      "hasIntent": true
    },
    "Header": {
      "summary": "The page header bar. Renders Figma's Desktop, Tablet, Mobile-Closed and Mobile-Open from one DOM tree.",
      "status": "stable",
      "variants": {
        "menuType": [
          "dialog",
          "panel"
        ]
      },
      "detail": "dist/meta/Header.json",
      "hasIntent": true
    },
    "I18nProvider": {
      "summary": "Sets the locale every IonBase component reads: react-aria's provider, re-exported. For right-to-left it is half the switch — arrow keys follow the locale, while the layout follows `dir` on the page.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/I18nProvider.json",
      "hasIntent": true
    },
    "Icon": {
      "summary": "Applies the system's icon sizing and accessibility defaults to any SVG component you hand it. The package ships no icon set.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Icon.json",
      "hasIntent": true
    },
    "InlineEdit": {
      "summary": "A value that becomes a field where it stands — an agent's purpose under its name, a row's label. The value is text with an Edit button beside it; editing shows the field with Save and Cancel. Enter saves, Escape cancels, focus goes in and comes back, and a failed or invalid save keeps what was typed.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/InlineEdit.json",
      "hasIntent": true
    },
    "InlineLoading": {
      "summary": "The pending → done → failed of one action, in place — \"Saving…\", \"Saved\", \"Not saved\" beside the switch that was flipped or the button that was pressed. A live region that is always mounted, around StatusIndicator's arc, check and octagon.",
      "status": "stable",
      "variants": {
        "status": [
          "active",
          "error",
          "inactive",
          "finished"
        ],
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/InlineLoading.json",
      "hasIntent": true
    },
    "Input": {
      "summary": "A single-line text field, together with its label, helper text and error message.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "autoCapitalize": [
          "none",
          "off",
          "on",
          "sentences",
          "words",
          "characters"
        ]
      },
      "detail": "dist/meta/Input.json",
      "hasIntent": true
    },
    "Kbd": {
      "summary": "A key, or a keyboard shortcut, drawn as keycaps in the reader's platform's own symbols and read aloud by name.",
      "status": "stable",
      "variants": {
        "platform": [
          "mac",
          "other"
        ]
      },
      "detail": "dist/meta/Kbd.json",
      "hasIntent": true
    },
    "Link": {
      "summary": "Navigation to somewhere else. Renders an <a> when given `href`, a <button> otherwise.",
      "status": "stable",
      "variants": {
        "variant": [
          "inline",
          "standalone"
        ]
      },
      "detail": "dist/meta/Link.json",
      "hasIntent": true
    },
    "List": {
      "summary": "Rows of records to open, pick or act on — an approval inbox, a list of files, \"choose one of these\" that is not a form field. One tab stop, arrow keys inside, a row can hold buttons.",
      "status": "stable",
      "variants": {
        "selectionMode": [
          "multiple",
          "single",
          "none"
        ],
        "density": [
          "default",
          "compact"
        ]
      },
      "detail": "dist/meta/List.json",
      "hasIntent": true
    },
    "Logo": {
      "summary": "The full IonBase lockup — mark plus wordmark.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "lg"
        ],
        "wordmark": [
          "text",
          "vector"
        ]
      },
      "detail": "dist/meta/Logo.json",
      "hasIntent": true
    },
    "LogoMark": {
      "summary": "The bare mark, no wordmark — what Header uses.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "lg"
        ]
      },
      "detail": "dist/meta/LogoMark.json",
      "hasIntent": true
    },
    "Menu": {
      "summary": "An ARIA menu: one tab stop, arrow keys, typeahead, and optional single or multiple selection. Children are MenuItem and MenuSection. Inside a MenuTrigger it floats, opens and closes, and can open submenus; on its own it renders in flow.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Menu.json",
      "hasIntent": true
    },
    "MenuItem": {
      "summary": "One row of a Menu. A collection element: Menu reads its props and draws the row as `menuitem`, `menuitemradio` or `menuitemcheckbox`.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/MenuItem.json",
      "hasIntent": true
    },
    "MenuSection": {
      "summary": "A named group of MenuItems. Re-exported from react-stately's collection Section — `title` is Figma's Menu Section Title.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/MenuSection.json",
      "hasIntent": true
    },
    "MenuTrigger": {
      "summary": "A Button that opens a Menu. The \"⋯\" overflow menu is this with an icon-only Button. Owns open state, positioning, focus, and the ARIA link between the two.",
      "status": "stable",
      "variants": {
        "placement": [
          "bottom start",
          "bottom end",
          "top start",
          "top end"
        ]
      },
      "detail": "dist/meta/MenuTrigger.json",
      "hasIntent": true
    },
    "Modal": {
      "summary": "A focus-trapping dialog. Renders nothing when closed and portals when open.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg",
          "fullscreen"
        ],
        "align": [
          "left",
          "center"
        ]
      },
      "detail": "dist/meta/Modal.json",
      "hasIntent": true
    },
    "MultiSelect": {
      "summary": "A text field that filters a list, with any number of values chosen. The choices show as removable tags beneath the field and are read with it.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/MultiSelect.json",
      "hasIntent": true
    },
    "NavItem": {
      "summary": "A primary navigation destination. Renders an <a> when given `href`, a <button> otherwise.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/NavItem.json",
      "hasIntent": true
    },
    "NotificationsPanel": {
      "summary": "What the bell opens: notifications grouped by day — Today, Yesterday, Earlier — with unread ones marked in words as well as a dot, a read toggle on each that never disappears, Mark all as read, an empty state and a loading state. Content for a Popover or a Drawer; the caller owns the data.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/NotificationsPanel.json",
      "hasIntent": true
    },
    "NumberInput": {
      "summary": "A quantity field: formats and parses in the user's locale, clamps to bounds, steps with − and + or the arrow keys, and never changes under the scroll wheel unless asked.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/NumberInput.json",
      "hasIntent": true
    },
    "PageHeader": {
      "summary": "The top of a page: breadcrumb, the page's h1, a description, the record's status, and the page's actions. Not a landmark — main is, named by this title.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/PageHeader.json",
      "hasIntent": true
    },
    "Pagination": {
      "summary": "Page navigation for a table or list. Renders prev/next arrows, a truncated run of page numbers, and an optional rows-per-page Select.",
      "status": "stable",
      "variants": {
        "type": [
          "numbered",
          "simple"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/Pagination.json",
      "hasIntent": true
    },
    "PasswordInput": {
      "summary": "A password field with a Show password toggle. The toggle keeps its name and says its state with `aria-pressed`, and a polite status says \"Password shown\" or \"Password hidden\". A shown password is never spellchecked, and is hidden again before its form is submitted.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "autoComplete": [
          "off",
          "current-password",
          "new-password"
        ]
      },
      "detail": "dist/meta/PasswordInput.json",
      "hasIntent": true
    },
    "PhoneInput": {
      "summary": "A dial-code block butted against an Input, sharing one outline. It does not pick countries.",
      "status": "stable",
      "variants": {
        "autoCapitalize": [
          "none",
          "off",
          "on",
          "sentences",
          "words",
          "characters"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/PhoneInput.json",
      "hasIntent": true
    },
    "Popover": {
      "summary": "An anchored panel that holds interactive content. Sits between Tooltip and Modal.",
      "status": "stable",
      "variants": {
        "placement": [
          "top",
          "bottom",
          "left",
          "right"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/Popover.json",
      "hasIntent": true
    },
    "ProgressBar": {
      "summary": "A determinate or indeterminate measure of work, with the name of the work attached. Omitting `value` is what makes it indeterminate.",
      "status": "stable",
      "variants": {
        "intent": [
          "primary",
          "success",
          "warning",
          "error"
        ],
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/ProgressBar.json",
      "hasIntent": true
    },
    "ProgressRing": {
      "summary": "How far a piece of work has got, as a ring that fills clockwise from the top: a value out of `max`, a required label, an intent for the thing measured. Determinate only.",
      "status": "stable",
      "variants": {
        "intent": [
          "primary",
          "success",
          "warning",
          "error"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/ProgressRing.json",
      "hasIntent": true
    },
    "PromptInput": {
      "summary": "Where a person writes to an agent: a growing text field, a send control that becomes the stop control while a run is going, and slots for attachments and tools.",
      "status": "stable",
      "variants": {
        "submitKey": [
          "enter",
          "mod-enter"
        ]
      },
      "detail": "dist/meta/PromptInput.json",
      "hasIntent": true
    },
    "Radio": {
      "summary": "One option inside a RadioGroup. Meaningless on its own — the group owns the name and the selected value.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "intent": [
          "neutral",
          "danger",
          "brand"
        ]
      },
      "detail": "dist/meta/Radio.json",
      "hasIntent": true
    },
    "RadioGroup": {
      "summary": "A <fieldset>/<legend> group of mutually exclusive options. Owns the shared name and the selected value, and the group's label, help and error.",
      "status": "stable",
      "variants": {
        "orientation": [
          "vertical",
          "horizontal"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "intent": [
          "neutral",
          "danger",
          "brand"
        ]
      },
      "detail": "dist/meta/RadioGroup.json",
      "hasIntent": true
    },
    "ScrollProgress": {
      "summary": "A compact progress rail that expands into a section list. A disclosure, not a menu — and it computes nothing itself.",
      "status": "stable",
      "variants": {
        "placement": [
          "left",
          "right"
        ]
      },
      "detail": "dist/meta/ScrollProgress.json",
      "hasIntent": true
    },
    "SearchField": {
      "summary": "A text field for a search query: role=\"searchbox\", Enter submits, Escape clears, and a clear button once there is something to clear. Input's box and sizes.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/SearchField.json",
      "hasIntent": true
    },
    "SegmentedControl": {
      "summary": "Pick one of two to five options, all visible at once. A radio group drawn as a segmented track — it sets a value and controls no panel.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/SegmentedControl.json",
      "hasIntent": true
    },
    "SegmentedControlItem": {
      "summary": "One segment: a radio drawn as part of the track, with an optional icon.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SegmentedControlItem.json",
      "hasIntent": true
    },
    "Select": {
      "summary": "A dropdown over a native <select>, with the same label and error wiring as Input.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/Select.json",
      "hasIntent": true
    },
    "SelectableTile": {
      "summary": "A choice the size of a card — a plan, a schedule, a template, each with a sentence. A real Radio inside a RadioGroup, a real Checkbox inside a CheckboxGroup or alone; its label is stretched over the tile, so the whole card is the target. The title is the name; the description is read after it.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SelectableTile.json",
      "hasIntent": true
    },
    "SettingRow": {
      "summary": "One setting: its name and description on the left, the control on the right — and the control named and described by them automatically.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SettingRow.json",
      "hasIntent": true
    },
    "Sidebar": {
      "summary": "An application's navigation as a column: pinned header and footer that take any component, a scrolling body of titled, collapsible sections, and nested items that expand.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Sidebar.json",
      "hasIntent": true
    },
    "SidebarItem": {
      "summary": "One sidebar row: a link or a button, with an icon, a count, actions revealed on hover or focus, and nested items that expand.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SidebarItem.json",
      "hasIntent": true
    },
    "SidebarSection": {
      "summary": "A group of sidebar items under an optional title, which can fold away and carry its own actions.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SidebarSection.json",
      "hasIntent": true
    },
    "SidePanel": {
      "summary": "Detail that opens beside the content and leaves it usable — pick a row, read it in the panel, pick the next. A labelled region in the page, not a dialog.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/SidePanel.json",
      "hasIntent": true
    },
    "SidePanelLayout": {
      "summary": "The row a SidePanel sits in: the content, then the panel. Gives the content column `min-width: 0` so wide content scrolls in place instead of pushing the panel off screen.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SidePanelLayout.json",
      "hasIntent": true
    },
    "Skeleton": {
      "summary": "The shape of content that has not arrived. Always hidden from assistive technology — the caller owns the announcement.",
      "status": "stable",
      "variants": {
        "variant": [
          "circle",
          "text",
          "rect"
        ]
      },
      "detail": "dist/meta/Skeleton.json",
      "hasIntent": true
    },
    "SkipLink": {
      "summary": "The first focusable thing on the page: a keyboard user's way past the header and navigation, straight to the content. Hidden until it has focus.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/SkipLink.json",
      "hasIntent": true
    },
    "Slider": {
      "summary": "A value, or a low–high range, picked along a track. For a rough value in a known range, where where-it-sits matters more than the exact number.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Slider.json",
      "hasIntent": true
    },
    "Spinner": {
      "summary": "An indeterminate wait, announced once. A ring plus a politely-announced label, sized off the icon ramp.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "detail": "dist/meta/Spinner.json",
      "hasIntent": true
    },
    "SplitButton": {
      "summary": "One main action with a menu of variations on it beside — Save, and Save as draft; Create agent, and Create and start. Two buttons, two tab stops, one shape.",
      "status": "stable",
      "variants": {
        "type": [
          "button",
          "submit"
        ],
        "variant": [
          "primary-brand",
          "primary-neutral",
          "secondary"
        ],
        "size": [
          "sm",
          "md",
          "lg",
          "xl"
        ]
      },
      "detail": "dist/meta/SplitButton.json",
      "hasIntent": true
    },
    "SplitPane": {
      "summary": "Two panes and a divider between them that a person moves — by dragging, or with the arrow keys — for two views read across, where which one needs the room depends on the reader.",
      "status": "stable",
      "variants": {
        "orientation": [
          "vertical",
          "horizontal"
        ],
        "collapse": [
          "tablet",
          "mobile",
          "never"
        ]
      },
      "detail": "dist/meta/SplitPane.json",
      "hasIntent": true
    },
    "Stack": {
      "summary": "Children in a column or a row with a gap from the spacing scale between them. Reach for it before writing flex CSS; `gap` takes the scale's steps and nothing else.",
      "status": "stable",
      "variants": {
        "direction": [
          "row",
          "column"
        ],
        "align": [
          "start",
          "center",
          "end",
          "stretch",
          "baseline"
        ],
        "justify": [
          "start",
          "center",
          "end",
          "between"
        ],
        "as": [
          "form",
          "div",
          "span",
          "section",
          "nav",
          "ul",
          "ol",
          "li",
          "header",
          "footer",
          "fieldset"
        ]
      },
      "detail": "dist/meta/Stack.json",
      "hasIntent": true
    },
    "StatGroup": {
      "summary": "A row of StatTiles, as a description list. Wraps on its own — no breakpoints in the caller's code.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/StatGroup.json",
      "hasIntent": true
    },
    "StatTile": {
      "summary": "One headline figure and how it moved against a comparison period. Good and bad come from `goodWhen`, never from the sign alone.",
      "status": "stable",
      "variants": {
        "changeUnit": [
          "points",
          "percent"
        ],
        "goodWhen": [
          "neutral",
          "up",
          "down"
        ]
      },
      "detail": "dist/meta/StatTile.json",
      "hasIntent": true
    },
    "StatusIndicator": {
      "summary": "A status as a shape, a colour and a word together — Running, Failing, Paused. Every intent has its own shape, so the status survives greyscale and colour blindness; only the shape is coloured, and the word keeps the text colour.",
      "status": "stable",
      "variants": {
        "intent": [
          "neutral",
          "success",
          "warning",
          "error",
          "information",
          "progress"
        ],
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/StatusIndicator.json",
      "hasIntent": true
    },
    "Stepper": {
      "summary": "Where the user is in a task that has an order. An ordered list of steps, each stating its position and status in text.",
      "status": "stable",
      "variants": {
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "detail": "dist/meta/Stepper.json",
      "hasIntent": true
    },
    "StepperStep": {
      "summary": "One step in a Stepper: a numbered indicator, a name, and a status carried by shape and text as well as colour.",
      "status": "stable",
      "variants": {
        "status": [
          "error",
          "incomplete",
          "complete"
        ]
      },
      "detail": "dist/meta/StepperStep.json",
      "hasIntent": true
    },
    "StreamingText": {
      "summary": "Model output arriving a token at a time, in a container that does not move. Deliberately not a live region.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/StreamingText.json",
      "hasIntent": true
    },
    "TabItem": {
      "summary": "One tab and its panel. Re-exported from react-stately's collection Item — `title` is the tab label, children are the panel.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/TabItem.json",
      "hasIntent": true
    },
    "Table": {
      "summary": "A data table. Table owns the scroll container and density; rows and cells are composed.",
      "status": "stable",
      "variants": {
        "density": [
          "default",
          "compact",
          "relaxed"
        ]
      },
      "detail": "dist/meta/Table.json",
      "hasIntent": true
    },
    "TableBatchBar": {
      "summary": "The count, \"Select all N\", the bulk actions and \"Clear selection\", shown above a table while any of its rows is selected. Pair it with useTableSelection.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/TableBatchBar.json",
      "hasIntent": true
    },
    "TableBody": {
      "summary": "The <tbody> section. Takes no props — it places the data rows and gives their cells body context.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/TableBody.json",
      "hasIntent": true
    },
    "TableCell": {
      "summary": "One cell, covering Figma's Table Cell and Cell Text together. `header` decides <th> versus <td>.",
      "status": "stable",
      "variants": {
        "scope": [
          "row",
          "rowgroup",
          "col",
          "colgroup"
        ],
        "align": [
          "center",
          "leading",
          "trailing"
        ],
        "variant": [
          "default",
          "link"
        ],
        "sortDirection": [
          "none",
          "ascending",
          "descending"
        ]
      },
      "detail": "dist/meta/TableCell.json",
      "hasIntent": true
    },
    "TableColumnsMenu": {
      "summary": "A Button that opens a checklist of a table's columns — checked is shown. Pair it with useTableColumns, which also gives resizable headers their handles.",
      "status": "stable",
      "variants": {
        "variant": [
          "success",
          "primary-brand",
          "primary-neutral",
          "primary-soft",
          "secondary",
          "tertiary",
          "destructive"
        ],
        "size": [
          "sm",
          "md",
          "lg",
          "xl"
        ]
      },
      "detail": "dist/meta/TableColumnsMenu.json",
      "hasIntent": true
    },
    "TableHead": {
      "summary": "The <thead> section. Takes no props — it places the header row and gives its cells their head-or-body context.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/TableHead.json",
      "hasIntent": true
    },
    "TableRow": {
      "summary": "A plain <tr>. Hover is CSS-only; a row is not itself interactive. With `expansion`, it opens to show more under it: a disclosure button in its first cell, and a detail row across every column.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/TableRow.json",
      "hasIntent": true
    },
    "Tabs": {
      "summary": "A tab list and its panels, built on react-aria's tab collection. Children are TabItem.",
      "status": "stable",
      "variants": {
        "type": [
          "pill",
          "underline"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "detail": "dist/meta/Tabs.json",
      "hasIntent": true
    },
    "Tag": {
      "summary": "One tag in a TagGroup. Re-exported from react-stately's collection Item — `key` identifies it, children are its label.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Tag.json",
      "hasIntent": true
    },
    "TagGroup": {
      "summary": "Labels a person applied and can take away: active filters, the labels on a record, recipients. Neutral and removable, unlike Badge.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/TagGroup.json",
      "hasIntent": true
    },
    "Textarea": {
      "summary": "A multi-line text field. Every size and state is Input's; it wraps and it resizes vertically.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "autoCapitalize": [
          "none",
          "off",
          "on",
          "sentences",
          "words",
          "characters"
        ]
      },
      "detail": "dist/meta/Textarea.json",
      "hasIntent": true
    },
    "ThemeZone": {
      "summary": "A part of the page in the other theme: a dark header on a light page, a light document preview in a dark app. Everything inside takes the zone's theme, including the menus, popovers, tooltips and dialogs opened from it.",
      "status": "stable",
      "variants": {
        "theme": [
          "light",
          "dark"
        ],
        "as": [
          "div",
          "section",
          "nav",
          "header",
          "footer",
          "aside"
        ]
      },
      "detail": "dist/meta/ThemeZone.json",
      "hasIntent": true
    },
    "TimeField": {
      "summary": "A time of day typed into hour, minute and AM/PM segments in the reader's own format, taking and returning a 24-hour HH:MM string.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "granularity": [
          "minute",
          "second",
          "hour"
        ]
      },
      "detail": "dist/meta/TimeField.json",
      "hasIntent": true
    },
    "Timeline": {
      "summary": "What happened to a record, in order — an audit log, a record's history, a ticket's activity. An ordered list of TimelineItems, each one sentence: what happened, who did it, and when, in a real `<time>`. History only: every event is done, so there is no status and nothing is announced.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Timeline.json",
      "hasIntent": true
    },
    "TimelineItem": {
      "summary": "One event in a Timeline: what happened, who did it, when — then the detail. An `<li>` with a decorative marker.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/TimelineItem.json",
      "hasIntent": true
    },
    "Toast": {
      "summary": "A transient notification on neutral chrome. Intent is carried by the icon, not by a tinted panel. Show one with `const { toast, dismiss } = useToast()` inside a ToastProvider: `toast({ intent, title, message, action, duration })` queues it and returns its id, and `dismiss(id)` removes it. You rarely render `<Toast>` yourself: the provider renders the queue.",
      "status": "stable",
      "variants": {
        "intent": [
          "neutral",
          "primary",
          "success",
          "warning",
          "error",
          "information"
        ]
      },
      "detail": "dist/meta/Toast.json",
      "hasIntent": true
    },
    "ToastProvider": {
      "summary": "Renders the toast queue and supplies the `useToast` hook. Mount once, near the app root.",
      "status": "stable",
      "variants": {
        "placement": [
          "top-left",
          "top-right",
          "bottom-left",
          "bottom-right"
        ]
      },
      "detail": "dist/meta/ToastProvider.json",
      "hasIntent": true
    },
    "Toggle": {
      "summary": "A switch — a checkbox with role=\"switch\", announced as on/off.",
      "status": "stable",
      "variants": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "intent": [
          "neutral",
          "danger",
          "brand"
        ]
      },
      "detail": "dist/meta/Toggle.json",
      "hasIntent": true
    },
    "Toggletip": {
      "summary": "An \"ⓘ\" button that opens a short explanation on click and keeps it open, so it can hold a link. Not modal, not hover.",
      "status": "stable",
      "variants": {
        "placement": [
          "top",
          "bottom",
          "left",
          "right"
        ],
        "size": [
          "sm",
          "md"
        ]
      },
      "detail": "dist/meta/Toggletip.json",
      "hasIntent": true
    },
    "Toolbar": {
      "summary": "A row of controls that act on one thing, reached as one tab stop: arrow keys between the controls, Tab out in one press, and back to the control used last.",
      "status": "stable",
      "variants": {
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "detail": "dist/meta/Toolbar.json",
      "hasIntent": true
    },
    "ToolCall": {
      "summary": "The evidence behind one step of an agent run: which tool, with what input, and what came back — collapsed by default, with any failure shown without a click.",
      "status": "stable",
      "variants": {
        "status": [
          "pending",
          "active",
          "done",
          "failed",
          "skipped"
        ]
      },
      "detail": "dist/meta/ToolCall.json",
      "hasIntent": true
    },
    "Tooltip": {
      "summary": "A text-only hint attached to a trigger. Opens on hover and on focus.",
      "status": "stable",
      "variants": {
        "placement": [
          "top",
          "bottom",
          "left",
          "right"
        ]
      },
      "detail": "dist/meta/Tooltip.json",
      "hasIntent": true
    },
    "Tour": {
      "summary": "Coachmarks in a sequence — one at a time, each pointing at its target, with \"2 of 4\", Back, Next, and Done on the last. Steps are data, naming their targets by id; a target not on the page is skipped.",
      "status": "stable",
      "variants": {},
      "detail": "dist/meta/Tour.json",
      "hasIntent": true
    },
    "TreeGrid": {
      "summary": "Rows that open to show the rows under them, in columns compared down — spend by agent and then by task, a budget by team and then by person. The WAI-ARIA treegrid, drawn as a Table.",
      "status": "stable",
      "variants": {
        "selectionMode": [
          "multiple",
          "single",
          "none"
        ],
        "density": [
          "default",
          "compact",
          "relaxed"
        ]
      },
      "detail": "dist/meta/TreeGrid.json",
      "hasIntent": true
    },
    "TreeView": {
      "summary": "A hierarchy opened level by level — folders, an org chart, nested categories. One tab stop, arrow keys inside, only open rows rendered; selectable one or many.",
      "status": "stable",
      "variants": {
        "selectionMode": [
          "multiple",
          "single",
          "none"
        ]
      },
      "detail": "dist/meta/TreeView.json",
      "hasIntent": true
    },
    "TruncatedText": {
      "summary": "Long text cut to its space — a line in a table cell, a paragraph under a heading — with the whole of it still reachable: a cut line is a tab stop with a tooltip on hover and focus, a cut paragraph has a Show more button. While the text fits it is plain text. The whole text is always in the DOM, so a screen reader reads all of it.",
      "status": "stable",
      "variants": {
        "overflow": [
          "tooltip",
          "expand"
        ],
        "placement": [
          "top",
          "bottom",
          "left",
          "right"
        ]
      },
      "detail": "dist/meta/TruncatedText.json",
      "hasIntent": true
    }
  }
}
