{
  "version": "1.0.0",
  "count": 33,
  "components": [
    {
      "id": "button",
      "version": "1.0.0",
      "name": "Button",
      "capabilities": [
        "action",
        "cta",
        "form-submit"
      ],
      "agentHints": "Primary actions, form submissions, CTAs. Variants: primary (gold), secondary (outlined), ghost, danger. Supports loading + fullWidth.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Button",
      "composition": {
        "textProp": "children",
        "contentText": true,
        "role": "an ACTION verb label (e.g. 'Get started', 'Contact sales') — never a price"
      },
      "enums": {
        "variant": [
          "primary",
          "secondary",
          "outline",
          "ghost",
          "danger",
          "link"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "variant",
        "size",
        "children",
        "loading",
        "fullWidth",
        "onClick"
      ]
    },
    {
      "id": "badge",
      "version": "1.0.0",
      "name": "Badge",
      "capabilities": [
        "status",
        "count",
        "pill"
      ],
      "agentHints": "Compact status/count pill shown next to a label. variant is one of: gold (highlight), neutral (default), success, warning, error, info.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Badge",
      "composition": {
        "textProp": "children",
        "contentText": true,
        "role": "a short STATUS LABEL only (e.g. 'Most popular') — never a price; omit if there is no label; variant gold=highlight, neutral=default"
      },
      "enums": {
        "variant": [
          "gold",
          "neutral",
          "success",
          "warning",
          "error",
          "info"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "variant",
        "size",
        "children"
      ]
    },
    {
      "id": "input",
      "version": "1.0.0",
      "name": "Input",
      "capabilities": [
        "form",
        "text-entry",
        "field"
      ],
      "agentHints": "Single-line text input. Place inside a FormField for label/validation.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Input",
      "composition": {},
      "enums": {
        "type": [
          "text",
          "email",
          "number",
          "password",
          "tel",
          "url"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "status": [
          "default",
          "error",
          "success"
        ]
      },
      "props": [
        "type",
        "value",
        "placeholder",
        "size",
        "status",
        "disabled",
        "onChange"
      ]
    },
    {
      "id": "avatar",
      "version": "1.0.0",
      "name": "Avatar",
      "capabilities": [
        "identity",
        "image",
        "user"
      ],
      "agentHints": "Circular identity image with initials fallback and presence status dot.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Avatar",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "status": [
          "online",
          "offline",
          "away"
        ]
      },
      "props": [
        "src",
        "alt",
        "initials",
        "size",
        "status"
      ]
    },
    {
      "id": "spinner",
      "version": "1.0.0",
      "name": "Spinner",
      "capabilities": [
        "loading",
        "feedback"
      ],
      "agentHints": "Indeterminate loading spinner for inline/button states.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Spinner",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "variant": [
          "gold",
          "white",
          "muted"
        ]
      },
      "props": [
        "size",
        "variant",
        "label"
      ]
    },
    {
      "id": "divider",
      "version": "1.0.0",
      "name": "Divider",
      "capabilities": [
        "layout",
        "separator"
      ],
      "agentHints": "Separator between sections; optional centered label; gold variant.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Divider",
      "composition": {
        "textProp": "label",
        "contentText": false,
        "role": "a thin separator; usually empty — do NOT put body text here"
      },
      "enums": {
        "variant": [
          "default",
          "gold",
          "strong"
        ],
        "orientation": [
          "horizontal",
          "vertical"
        ]
      },
      "props": [
        "variant",
        "orientation",
        "label"
      ]
    },
    {
      "id": "checkbox",
      "version": "1.0.0",
      "name": "Checkbox",
      "capabilities": [
        "form",
        "boolean"
      ],
      "agentHints": "Single checkbox with label + optional description. For groups use CheckboxGroup.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Checkbox",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "label",
        "description",
        "indeterminate",
        "size",
        "error",
        "onChange"
      ]
    },
    {
      "id": "radio",
      "version": "1.0.0",
      "name": "Radio",
      "capabilities": [
        "form",
        "choice"
      ],
      "agentHints": "Single radio option; use within RadioGroup for exclusive choices.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Radio",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "label",
        "description",
        "size",
        "error"
      ]
    },
    {
      "id": "select",
      "version": "1.0.0",
      "name": "Select",
      "capabilities": [
        "form",
        "dropdown",
        "choice"
      ],
      "agentHints": "Dropdown for one option from a list. options = [{label,value}]. For search use Typeahead.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Select",
      "composition": {
        "defaults": {
          "options": []
        },
        "role": "dropdown; REQUIRES an options array [{value,label}]"
      },
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "options",
        "value",
        "placeholder",
        "size",
        "disabled",
        "onChange"
      ]
    },
    {
      "id": "toggle",
      "version": "1.0.0",
      "name": "Toggle",
      "capabilities": [
        "form",
        "switch",
        "boolean"
      ],
      "agentHints": "On/off switch for instant-apply settings.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Toggle",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "labelPosition": [
          "left",
          "right"
        ]
      },
      "props": [
        "label",
        "description",
        "size",
        "labelPosition",
        "onChange"
      ]
    },
    {
      "id": "tag",
      "version": "1.0.0",
      "name": "Tag",
      "capabilities": [
        "label",
        "metadata",
        "removable"
      ],
      "agentHints": "Inline keyword/metadata chip, optionally removable.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Tag",
      "composition": {
        "textProp": "children",
        "contentText": true,
        "role": "a short keyword/metadata chip"
      },
      "enums": {
        "variant": [
          "default",
          "gold",
          "success",
          "warning",
          "error",
          "info"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "children",
        "variant",
        "size",
        "onRemove"
      ]
    },
    {
      "id": "typing-indicator",
      "version": "1.0.0",
      "name": "TypingIndicator",
      "capabilities": [
        "chat",
        "ai",
        "feedback"
      ],
      "agentHints": "Animated 'agent is typing' dots for chat/AI surfaces.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "TypingIndicator",
      "composition": {},
      "enums": {
        "variant": [
          "dots",
          "pulse",
          "bars"
        ],
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "variant",
        "size",
        "label"
      ]
    },
    {
      "id": "shimmer",
      "version": "1.0.0",
      "name": "Shimmer",
      "capabilities": [
        "loading",
        "skeleton",
        "placeholder"
      ],
      "agentHints": "Skeleton placeholder while content loads (ShimmerText/Avatar/Card/Message also exported).",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Shimmer",
      "composition": {},
      "enums": {},
      "props": [
        "width",
        "height",
        "radius"
      ]
    },
    {
      "id": "loading-scene",
      "version": "1.0.0",
      "name": "LoadingScene",
      "capabilities": [
        "loading",
        "full-screen"
      ],
      "agentHints": "Branded full-screen loading state with an optional message.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "LoadingScene",
      "composition": {},
      "enums": {
        "variant": [
          "machine",
          "brain",
          "canvas"
        ]
      },
      "props": [
        "variant",
        "label",
        "fullscreen"
      ]
    },
    {
      "id": "card",
      "version": "1.0.0",
      "name": "Card",
      "capabilities": [
        "container",
        "layout",
        "content"
      ],
      "agentHints": "Elevated content container. Put text/other components inside via children. Variants: default/elevated/outlined; gold accent.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Card",
      "composition": {
        "childrenAs": "children",
        "wrapper": "CardBody",
        "contentText": false,
        "role": "content/feature/pricing tile; nest content inside its children",
        "example": [
          "badge?",
          "h2 (name)",
          "p (description)",
          "h3 (price)",
          "button (action)"
        ]
      },
      "enums": {
        "variant": [
          "default",
          "compact",
          "stat",
          "feature"
        ]
      },
      "props": [
        "variant",
        "accent",
        "children",
        "onClick"
      ]
    },
    {
      "id": "toast",
      "version": "1.0.0",
      "name": "Toast",
      "capabilities": [
        "notification",
        "transient",
        "feedback"
      ],
      "agentHints": "Transient status notification. For persistent banners use Alert.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Toast",
      "composition": {
        "textProp": "title",
        "contentText": true,
        "role": "transient status toast"
      },
      "enums": {
        "variant": [
          "success",
          "warning",
          "error",
          "info"
        ]
      },
      "props": [
        "variant",
        "title",
        "description",
        "onDismiss"
      ]
    },
    {
      "id": "progress",
      "version": "1.0.0",
      "name": "Progress",
      "capabilities": [
        "feedback",
        "status",
        "determinate"
      ],
      "agentHints": "Determinate progress bar (value 0–100). Use for uploads, completion, quotas.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Progress",
      "composition": {
        "textProp": "label",
        "contentText": false,
        "defaults": {
          "value": 60
        },
        "role": "determinate progress bar; needs a numeric value"
      },
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ],
        "variant": [
          "gold",
          "success",
          "error",
          "info"
        ]
      },
      "props": [
        "value",
        "size",
        "variant",
        "label",
        "showValue"
      ]
    },
    {
      "id": "checkbox-group",
      "version": "1.0.0",
      "name": "CheckboxGroup",
      "capabilities": [
        "form",
        "multi-choice"
      ],
      "agentHints": "Group of checkboxes for selecting multiple options. options = [{label,value}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "CheckboxGroup",
      "composition": {
        "defaults": {
          "options": []
        },
        "role": "multi-select group; REQUIRES an options array"
      },
      "enums": {
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "props": [
        "legend",
        "options",
        "orientation",
        "required",
        "onChange"
      ]
    },
    {
      "id": "radio-group",
      "version": "1.0.0",
      "name": "RadioGroup",
      "capabilities": [
        "form",
        "single-choice"
      ],
      "agentHints": "Group of radios for a single exclusive choice. options = [{label,value}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "RadioGroup",
      "composition": {
        "defaults": {
          "options": []
        },
        "role": "single-choice group; REQUIRES an options array"
      },
      "enums": {
        "orientation": [
          "vertical",
          "horizontal"
        ]
      },
      "props": [
        "legend",
        "options",
        "value",
        "orientation",
        "required",
        "onChange"
      ]
    },
    {
      "id": "form-field",
      "version": "1.0.0",
      "name": "FormField",
      "capabilities": [
        "form",
        "label",
        "validation"
      ],
      "agentHints": "Wraps a control with label, hint, and error. Put an Input/Select in children.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "FormField",
      "composition": {
        "textProp": "label",
        "contentText": false,
        "role": "wraps ONE input/select/checkbox-group; ALWAYS set props.label to the field's visible label"
      },
      "enums": {},
      "props": [
        "label",
        "htmlFor",
        "hint",
        "error",
        "required",
        "children"
      ]
    },
    {
      "id": "tooltip",
      "version": "1.0.0",
      "name": "Tooltip",
      "capabilities": [
        "hint",
        "overlay"
      ],
      "agentHints": "Hover/focus tooltip; wraps a single child element. Keep content short.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Tooltip",
      "composition": {},
      "enums": {
        "placement": [
          "top",
          "bottom",
          "left",
          "right"
        ]
      },
      "props": [
        "content",
        "placement",
        "children"
      ]
    },
    {
      "id": "tabs",
      "version": "1.0.0",
      "name": "Tabs",
      "capabilities": [
        "navigation",
        "sections"
      ],
      "agentHints": "Tabbed navigation. items = [{key,label,content}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Tabs",
      "composition": {
        "defaults": {
          "items": []
        },
        "role": "tabbed navigation; REQUIRES an items array [{key,label,content}] — do not use without real tab data"
      },
      "enums": {
        "variant": [
          "line",
          "pill",
          "enclosed"
        ]
      },
      "props": [
        "items",
        "defaultActiveKey",
        "variant",
        "onChange"
      ]
    },
    {
      "id": "accordion",
      "version": "1.0.0",
      "name": "Accordion",
      "capabilities": [
        "disclosure",
        "collapsible"
      ],
      "agentHints": "Collapsible sections. items = [{key,label,content,disabled}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Accordion",
      "composition": {
        "defaults": {
          "items": []
        },
        "role": "collapsible sections; REQUIRES an items array [{key,label,content}]"
      },
      "enums": {
        "variant": [
          "default",
          "bordered",
          "ghost"
        ]
      },
      "props": [
        "items",
        "multiple",
        "variant",
        "onChange"
      ]
    },
    {
      "id": "typeahead",
      "version": "1.0.0",
      "name": "Typeahead",
      "capabilities": [
        "form",
        "search",
        "autocomplete",
        "single"
      ],
      "agentHints": "Single-select search-as-you-type. options = [{label,value}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Typeahead",
      "composition": {
        "defaults": {
          "options": []
        },
        "role": "search-as-you-type; REQUIRES an options array"
      },
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "options",
        "value",
        "placeholder",
        "size",
        "clearable",
        "onChange"
      ]
    },
    {
      "id": "typeahead-multi",
      "version": "1.0.0",
      "name": "TypeaheadMulti",
      "capabilities": [
        "form",
        "search",
        "autocomplete",
        "multi"
      ],
      "agentHints": "Multi-select search-as-you-type with chips. options = [{label,value}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "TypeaheadMulti",
      "composition": {
        "defaults": {
          "options": []
        },
        "role": "multi-select search; REQUIRES an options array"
      },
      "enums": {},
      "props": [
        "options",
        "placeholder",
        "onChange"
      ]
    },
    {
      "id": "date-picker",
      "version": "1.0.0",
      "name": "DatePicker",
      "capabilities": [
        "form",
        "date"
      ],
      "agentHints": "Single date selection. value/onChange use ISO date strings.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "DatePicker",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "value",
        "placeholder",
        "minDate",
        "maxDate",
        "size",
        "onChange"
      ]
    },
    {
      "id": "date-range-picker",
      "version": "1.0.0",
      "name": "DateRangePicker",
      "capabilities": [
        "form",
        "date-range"
      ],
      "agentHints": "Start/end date range. value/onChange use {start,end} ISO dates.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "DateRangePicker",
      "composition": {},
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "startPlaceholder",
        "endPlaceholder",
        "size",
        "onChange"
      ]
    },
    {
      "id": "agent-activity",
      "version": "1.0.0",
      "name": "AgentActivity",
      "capabilities": [
        "ai",
        "status",
        "agent"
      ],
      "agentHints": "Shows an AI agent's step progress. steps = [{label,state}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "AgentActivity",
      "composition": {
        "defaults": {
          "steps": []
        },
        "role": "AI agent step progress; REQUIRES a steps array [{label,state}]"
      },
      "enums": {},
      "props": [
        "steps",
        "label",
        "defaultExpanded",
        "collapsible"
      ]
    },
    {
      "id": "chat-message",
      "version": "1.0.0",
      "name": "ChatMessage",
      "capabilities": [
        "chat",
        "message",
        "ai"
      ],
      "agentHints": "A single chat bubble. role = user|assistant|system; content is the text.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "ChatMessage",
      "composition": {
        "textProp": "content",
        "contentText": true,
        "defaults": {
          "role": "assistant"
        },
        "role": "a single chat bubble"
      },
      "enums": {
        "role": [
          "user",
          "assistant",
          "system"
        ]
      },
      "props": [
        "role",
        "content",
        "name",
        "avatar",
        "streaming"
      ]
    },
    {
      "id": "modal",
      "version": "1.0.0",
      "name": "Modal",
      "capabilities": [
        "overlay",
        "dialog",
        "focus-trap"
      ],
      "agentHints": "Focus-trapping modal dialog. Set open=true to show; put content in children.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Modal",
      "composition": {
        "textProp": "title",
        "childrenAs": "children",
        "contentText": false,
        "defaults": {
          "open": true
        },
        "role": "focus-trapping dialog; nest content in children"
      },
      "enums": {
        "size": [
          "sm",
          "md",
          "lg"
        ]
      },
      "props": [
        "open",
        "title",
        "size",
        "children",
        "onClose"
      ]
    },
    {
      "id": "alert",
      "version": "1.0.0",
      "name": "Alert",
      "capabilities": [
        "feedback",
        "status",
        "banner"
      ],
      "agentHints": "Persistent inline banner. Variants map to status colors. For transient use Toast.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Alert",
      "composition": {
        "textProp": "title",
        "contentText": true,
        "role": "persistent inline status banner"
      },
      "enums": {
        "variant": [
          "success",
          "warning",
          "error",
          "info"
        ]
      },
      "props": [
        "variant",
        "title",
        "description",
        "onDismiss"
      ]
    },
    {
      "id": "hero",
      "version": "1.0.0",
      "name": "Hero",
      "capabilities": [
        "marketing",
        "landing",
        "header"
      ],
      "agentHints": "Large landing/section header: eyebrow + headline + description + CTA actions.",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Hero",
      "composition": {
        "textProp": "headline",
        "contentText": true,
        "childrenAs": "actions",
        "childShape": {
          "label": "children",
          "variant": "variant"
        },
        "defaults": {
          "actions": []
        },
        "role": "ONLY the main banner or a final call-to-action — NOT feature tiles; put CTA buttons in children"
      },
      "enums": {
        "align": [
          "left",
          "center",
          "right"
        ],
        "size": [
          "sm",
          "md",
          "lg",
          "full"
        ],
        "overlay": [
          "light",
          "medium",
          "heavy"
        ]
      },
      "props": [
        "eyebrow",
        "headline",
        "description",
        "align",
        "size",
        "overlay",
        "imageSrc"
      ]
    },
    {
      "id": "chat",
      "version": "1.0.0",
      "name": "Chat",
      "capabilities": [
        "ai",
        "conversation",
        "full"
      ],
      "agentHints": "Full chat surface (messages + input). messages = [{role,content}].",
      "moduleUrl": "https://aux-obsidian-ds.pages.dev/bundle",
      "export": "Chat",
      "composition": {
        "defaults": {
          "messages": []
        },
        "role": "full chat surface; messages = [{role,content}]"
      },
      "enums": {},
      "props": [
        "messages",
        "placeholder",
        "streaming",
        "onSend"
      ]
    }
  ]
}