{
  "package": "ionbase-ui",
  "version": "0.138.1",
  "usage": "A pattern is a documented composition of components, not a component. Read one here, then read the contracts of what it composes.",
  "patterns": {
    "AgentRun": {
      "summary": "A single agent task from start to finish: what it is doing, what it produced, and a way to stop it at any point.",
      "composes": [
        "AgentActivity",
        "AgentActivityStep",
        "AgentStop",
        "PromptInput",
        "ToolCall",
        "StreamingText",
        "Alert",
        "Badge",
        "ProgressRing"
      ],
      "drivenBy": "useAgentRun",
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/AgentRun.json"
    },
    "AssistantAnswer": {
      "summary": "A generated answer presented so the reader can check it: the text, what it was drawn from, and how far to trust it.",
      "composes": [
        "ChatMessage",
        "StreamingText",
        "Citation",
        "CitationList",
        "CitationListItem",
        "ConfidenceIndicator",
        "Alert",
        "Link",
        "AILabel"
      ],
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/AssistantAnswer.json"
    },
    "DataTable": {
      "summary": "A table of records with a toolbar, selection, and the three states everyone forgets.",
      "composes": [
        "Table",
        "TableHead",
        "TableBody",
        "TableRow",
        "TableCell",
        "Checkbox",
        "TableBatchBar",
        "Button",
        "Badge",
        "Alert",
        "SearchField",
        "MultiSelect",
        "Slider",
        "TagGroup",
        "Tag",
        "EmptyState",
        "Skeleton",
        "Pagination",
        "Menu",
        "MenuItem",
        "MenuTrigger",
        "SidePanel",
        "SidePanelLayout",
        "ContextMenu",
        "CopyButton",
        "StatusIndicator",
        "TruncatedText",
        "Timeline",
        "TimelineItem",
        "TableColumnsMenu",
        "TreeGrid"
      ],
      "drivenBy": "useTableSort",
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/DataTable.json",
      "example": "dist/meta/patterns/examples/DataTable.tsx"
    },
    "DestructiveConfirm": {
      "summary": "A confirmation the user cannot pass through by reflex, for actions that cannot be undone.",
      "composes": [
        "Modal",
        "Button",
        "ButtonGroup",
        "Input",
        "Alert",
        "Badge",
        "PasswordInput"
      ],
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/DestructiveConfirm.json"
    },
    "FilteredDataTable": {
      "summary": "The DataTable pattern with its filters, search, sort and page kept in the address — so a reload, a shared link and Back show the same listing — and a refilter that keeps the rows on screen until the new ones land.",
      "composes": [
        "Table",
        "TableHead",
        "TableBody",
        "TableRow",
        "TableCell",
        "SearchField",
        "Select",
        "MultiSelect",
        "TagGroup",
        "Tag",
        "Button",
        "Pagination",
        "TableBatchBar",
        "ProgressBar",
        "EmptyState",
        "Alert",
        "Skeleton",
        "StatusIndicator"
      ],
      "drivenBy": "useTableSort",
      "states": [
        "loading",
        "empty",
        "error"
      ],
      "detail": "dist/meta/patterns/FilteredDataTable.json",
      "example": "dist/meta/patterns/examples/FilteredDataTable.tsx"
    },
    "Form": {
      "summary": "A form that validates, reports errors where the user can act on them, and survives a failed submit.",
      "composes": [
        "Input",
        "Select",
        "Checkbox",
        "CheckboxGroup",
        "TreeView",
        "Fieldset",
        "Radio",
        "RadioGroup",
        "Toggletip",
        "Toggle",
        "DateTimePicker",
        "Calendar",
        "PhoneInput",
        "NumberInput",
        "Button",
        "ButtonGroup",
        "Alert",
        "Divider",
        "InlineEdit",
        "SelectableTile",
        "Grid"
      ],
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/Form.json"
    },
    "FullPageError": {
      "summary": "When a whole page cannot be shown — it does not exist, this account may not see it, it failed to load or render, or there is no connection — the page says which, inside the shell, with a way forward.",
      "composes": [
        "PageHeader",
        "EmptyState",
        "Button",
        "Link",
        "CopyButton",
        "Banner",
        "Spinner"
      ],
      "states": [
        "loading",
        "empty",
        "error"
      ],
      "detail": "dist/meta/patterns/FullPageError.json"
    },
    "HumanApproval": {
      "summary": "An agent stops and asks before doing something consequential, and a person approves, rejects or edits it.",
      "composes": [
        "ApprovalGate",
        "AgentActivity",
        "AgentActivityStep",
        "AgentStop",
        "Alert",
        "List"
      ],
      "drivenBy": "useAgentRun",
      "states": [
        "loading",
        "empty",
        "error",
        "expired"
      ],
      "detail": "dist/meta/patterns/HumanApproval.json"
    },
    "ListDetail": {
      "summary": "A list of records beside the one selected — people, tickets, messages, files. Arrow down the list and the detail beside it follows, without anything to open or close; the selection is in the address.",
      "composes": [
        "PageHeader",
        "SearchField",
        "List",
        "SidePanelLayout",
        "SidePanel",
        "Avatar",
        "Badge",
        "DescriptionList",
        "DescriptionListItem",
        "CopyButton",
        "Link",
        "Button",
        "Skeleton",
        "Alert",
        "EmptyState",
        "StatusIndicator"
      ],
      "states": [
        "loading",
        "empty",
        "error"
      ],
      "detail": "dist/meta/patterns/ListDetail.json",
      "example": "dist/meta/patterns/examples/ListDetail.tsx"
    },
    "PageShell": {
      "summary": "The frame every screen sits in: header, navigation, a named content region.",
      "composes": [
        "SkipLink",
        "Header",
        "NavItem",
        "Sidebar",
        "SidebarSection",
        "SidebarItem",
        "Drawer",
        "Logo",
        "LogoMark",
        "Avatar",
        "PageHeader",
        "Button",
        "Divider",
        "ToastProvider",
        "CommandPalette",
        "Kbd",
        "Banner",
        "Popover",
        "Tooltip",
        "NotificationsPanel",
        "Stack",
        "Grid",
        "ThemeZone",
        "I18nProvider",
        "Tour",
        "AppSwitcher"
      ],
      "states": [
        "loading",
        "empty",
        "error"
      ],
      "detail": "dist/meta/patterns/PageShell.json"
    },
    "SettingsPanel": {
      "summary": "Grouped settings that either apply immediately or are saved together — never both in one panel.",
      "composes": [
        "SettingRow",
        "Toggle",
        "Checkbox",
        "RadioGroup",
        "Radio",
        "Select",
        "Input",
        "Button",
        "Alert",
        "Divider",
        "Badge",
        "Tabs",
        "TabItem",
        "CodeSnippet",
        "InlineLoading",
        "ColorPicker",
        "SplitPane"
      ],
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/SettingsPanel.json"
    },
    "Wizard": {
      "summary": "A sequence of steps with per-step validation, where progress survives leaving.",
      "composes": [
        "Stepper",
        "StepperStep",
        "Button",
        "ButtonGroup",
        "SplitButton",
        "Input",
        "Select",
        "Checkbox",
        "RadioGroup",
        "Radio",
        "Alert",
        "Badge",
        "Divider",
        "Modal",
        "DescriptionList",
        "DescriptionListItem"
      ],
      "states": [
        "loading",
        "empty",
        "error",
        "partial"
      ],
      "detail": "dist/meta/patterns/Wizard.json"
    }
  }
}
