{
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
  "name": "@arclux/arc-ui",
  "version": "4.2.2",
  "description-markup": "markdown",
  "contributions": {
    "html": {
      "elements": [
        {
          "name": "arc-accordion-item",
          "description": "An individual collapsible section inside an Accordion. The question attribute supplies the\nclickable header text, and slotted children become the expandable body content.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "question",
              "description": "The heading text displayed on the trigger button. Should be a concise, scannable label or question.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "answer",
                "description": "Answer content from slotted children"
              },
              {
                "name": "question",
                "description": "The heading text displayed on the trigger button. Should be a concise, scannable label or question.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-accordion",
          "description": "Expandable content sections with smooth height animations. Ideal for FAQs, settings panels, and\nany UI that benefits from progressive disclosure.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **accordion**",
          "doc-url": "",
          "attributes": [
            {
              "name": "multiple",
              "description": "When true, allows multiple accordion panels to be open simultaneously. When false (default), opening one panel closes any other open panel.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "multiple",
                "description": "When true, allows multiple accordion panels to be open simultaneously. When false (default), opening one panel closes any other open panel.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-aspect-ratio",
          "description": "Container that enforces a consistent width-to-height ratio on its content, ideal for images,\nvideos, and embedded media.\n---\n\n\n### **Methods:**\n - **parseRatio(value)** - `W/H` if the string is a usable ratio, else null.\n\nA zero on either side is rejected rather than passed through: `0/5` matched\nthe old format check, reached the CSS as `aspect-ratio: 0 / 5`, and\ncollapsed the box. The guard for exactly that (`if (w === 0) …`) existed —\ninside `_paddingFallback`, a getter the render never called, so the check\nhad been written and then stranded. That getter is gone; its docstring\npromised a padding-top fallback \"for browsers that don't support the\naspect-ratio CSS property\" and nothing rendered one, which is the same\ndoc/code drift as the rest of this batch.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **inner**",
          "doc-url": "",
          "attributes": [
            {
              "name": "ratio",
              "description": "Aspect ratio as a `W/H` string. Supports integers and decimals. An unparseable value, or one with a zero on either side, is normalised **on the property** to `16/9` — so reading `ratio` back always gives the ratio the component is actually using.",
              "value": {
                "type": "string",
                "default": "'16/9'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "ratio",
                "description": "Aspect ratio as a `W/H` string. Supports integers and decimals. An unparseable value, or one with a zero on either side, is normalised **on the property** to `16/9` — so reading `ratio` back always gives the ratio the component is actually using.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-avatar-group",
          "description": "Stack of avatars with overflow count badge.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **group**\n- **overflow**",
          "doc-url": "",
          "attributes": [
            {
              "name": "max",
              "description": "Maximum number of avatars to display. Excess avatars are hidden and a \"+N\" overflow badge is shown.",
              "value": {
                "type": "number",
                "default": "Infinity"
              }
            },
            {
              "name": "overlap",
              "description": "Overlap density preset. sm = -8px, md = -12px, lg = -16px negative margin between avatars.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "max",
                "description": "Maximum number of avatars to display. Excess avatars are hidden and a \"+N\" overflow badge is shown.",
                "type": "number"
              },
              {
                "name": "overlap",
                "description": "Overlap density preset. sm = -8px, md = -12px, lg = -16px negative margin between avatars.",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-avatar",
          "description": "User avatar with image or initials fallback.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **img**\n- **initials**\n- **avatar**\n- **status**",
          "doc-url": "",
          "attributes": [
            {
              "name": "src",
              "description": "Image URL for the avatar. When provided, renders an `<img>` element. When empty, displays initials derived from the `name` prop.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "User name used to generate initials (first letter, uppercased) and as the `alt` text / `aria-label` for the avatar.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Controls avatar dimensions: `sm` (32px), `md` (40px), `lg` (56px).",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "shape",
              "description": "Controls the avatar shape. Options: 'circle', 'square', 'rounded'.",
              "value": {
                "type": "'circle' | 'square' | 'rounded'",
                "default": "'circle'"
              }
            },
            {
              "name": "status",
              "description": "Shows a status indicator dot. Empty (the default) shows none. An unrecognised value falls back to empty rather than rendering an uncoloured dot that screen readers announce by its bogus name.",
              "value": {
                "type": "'' | 'online' | 'offline' | 'busy' | 'away'",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "src",
                "description": "Image URL for the avatar. When provided, renders an `<img>` element. When empty, displays initials derived from the `name` prop.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "User name used to generate initials (first letter, uppercased) and as the `alt` text / `aria-label` for the avatar.",
                "type": "string"
              },
              {
                "name": "size",
                "description": "Controls avatar dimensions: `sm` (32px), `md` (40px), `lg` (56px).",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "status",
                "description": "Shows a status indicator dot. Empty (the default) shows none. An unrecognised value falls back to empty rather than rendering an uncoloured dot that screen readers announce by its bogus name.",
                "type": "'' | 'online' | 'offline' | 'busy' | 'away'"
              },
              {
                "name": "shape",
                "description": "Controls the avatar shape. Options: 'circle', 'square', 'rounded'.",
                "type": "'circle' | 'square' | 'rounded'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-card",
          "description": "Content container with subtle border styling and hover effects. Links the entire card surface\nwhen an href is provided, creating a seamless clickable area with an animated gradient border.\n---\n\n\n### **Slots:**\n - _default_ - Default content. Wrapping the content in a single `<a>` adopts it as the card's link — the recommended form for cards that must work before hydration or without JavaScript. The anchor fills the padded surface; the `footer` slot stays outside it so footer actions remain separately clickable.\n- **footer**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **body**\n- **footer**\n- **card**\n- **inner**",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "When set, renders the card as an anchor element, making the entire card surface a clickable link. On hover, the border transitions to a blue-to-violet gradient and the inner surface gains a lift shadow.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "padding",
              "description": "Controls internal spacing. Options: 'none', 'sm', 'md', 'lg'.",
              "value": {
                "type": "'none' | 'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "interactive",
              "description": "Enables hover effects for clickable cards that trigger JS instead of navigating via href.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content. Wrapping the content in a single `<a>` adopts it as the card's link — the recommended form for cards that must work before hydration or without JavaScript. The anchor fills the padded surface; the `footer` slot stays outside it so footer actions remain separately clickable."
            },
            {
              "name": "footer"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "href",
                "description": "When set, renders the card as an anchor element, making the entire card surface a clickable link. On hover, the border transitions to a blue-to-violet gradient and the inner surface gains a lift shadow.",
                "type": "string"
              },
              {
                "name": "padding",
                "description": "Controls internal spacing. Options: 'none', 'sm', 'md', 'lg'.",
                "type": "'none' | 'sm' | 'md' | 'lg'"
              },
              {
                "name": "interactive",
                "description": "Enables hover effects for clickable cards that trigger JS instead of navigating via href.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-carousel",
          "description": "A scrollable slide container with navigation arrows, dot indicators, auto-play, looping, and\nkeyboard controls.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the active slide changes\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **carousel**\n- **viewport**\n- **arrow-prev**\n- **arrow-next**\n- **dots**\n- **dot**",
          "doc-url": "",
          "attributes": [
            {
              "name": "autoPlay",
              "description": "Enables automatic slide advancement on a timer. Pauses on hover and focus, respects prefers-reduced-motion.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "interval",
              "description": "Auto-play interval in milliseconds between slide transitions.",
              "value": {
                "type": "number",
                "default": "5000"
              }
            },
            {
              "name": "loop",
              "description": "Enables wrapping at the edges so the last slide connects to the first and vice versa.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "showDots",
              "description": "Shows dot indicators below the viewport for direct slide navigation.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "showArrows",
              "description": "Shows previous/next arrow buttons on the left and right edges of the viewport.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when the active slide changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "autoPlay",
                "description": "Enables automatic slide advancement on a timer. Pauses on hover and focus, respects prefers-reduced-motion.",
                "type": "boolean"
              },
              {
                "name": "interval",
                "description": "Auto-play interval in milliseconds between slide transitions.",
                "type": "number"
              },
              {
                "name": "loop",
                "description": "Enables wrapping at the edges so the last slide connects to the first and vice versa.",
                "type": "boolean"
              },
              {
                "name": "showDots",
                "description": "Shows dot indicators below the viewport for direct slide navigation.",
                "type": "boolean"
              },
              {
                "name": "showArrows",
                "description": "Shows previous/next arrow buttons on the left and right edges of the viewport.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when the active slide changes"
              }
            ]
          }
        },
        {
          "name": "arc-collapsible",
          "description": "A disclosure widget with a clickable heading that toggles the visibility of its slotted content\nusing a smooth CSS grid animation.\n---\n\n\n### **Events:**\n - **arc-toggle** - Fired when the collapsible expands or collapses\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **collapsible**\n- **trigger**\n- **heading**\n- **body**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls whether the content is visible. Reflected as an attribute and toggleable by clicking the heading.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "heading",
              "description": "Text displayed in the clickable trigger row. Also used as the ARIA label for the content region.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-toggle",
              "type": "CustomEvent<{ open: boolean }>",
              "description": "Fired when the collapsible expands or collapses"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Text displayed in the clickable trigger row. Also used as the ARIA label for the content region.",
                "type": "string"
              },
              {
                "name": "open",
                "description": "Controls whether the content is visible. Reflected as an attribute and toggleable by clicking the heading.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-toggle",
                "type": "CustomEvent<{ open: boolean }>",
                "description": "Fired when the collapsible expands or collapses"
              }
            ]
          }
        },
        {
          "name": "arc-color-swatch",
          "description": "Color sample square with label — useful for token docs.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **swatch**\n- **color**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "color",
              "description": "Any valid CSS color value applied as the swatch background",
              "value": {
                "type": "string",
                "default": "'#4d7ef7'"
              }
            },
            {
              "name": "label",
              "description": "Display label below the swatch; falls back to the color value if empty",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Controls swatch dimensions: sm (32px), md (48px), lg (64px)",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "color",
                "description": "Any valid CSS color value applied as the swatch background",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Display label below the swatch; falls back to the color value if empty",
                "type": "string"
              },
              {
                "name": "size",
                "description": "Controls swatch dimensions: sm (32px), md (48px), lg (64px)",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-cta-banner",
          "description": "Full-width call-to-action banner with gradient background, eyebrow text, headline, body copy,\nand action buttons. Ideal for landing page CTAs, marketing sections, and page closers.\n---\n\n\n### **Slots:**\n - **eyebrow**\n- **headline**\n- _default_ - Default content.\n- **actions**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **background**\n- **inner**\n- **eyebrow**\n- **headline**\n- **body**\n- **actions**",
          "doc-url": "",
          "attributes": [
            {
              "name": "eyebrow",
              "description": "Small label text displayed above the headline. Typically a short phrase like \"Ready to build?\" that sets context.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "headline",
              "description": "Main headline text rendered with gradient display styling. Keep it concise and action-oriented.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "nogradient",
              "description": "When true, disables the radial gradient background effect for quieter contexts.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "eyebrow"
            },
            {
              "name": "headline"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "actions"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "eyebrow",
                "description": "Small label text displayed above the headline. Typically a short phrase like \"Ready to build?\" that sets context.",
                "type": "string"
              },
              {
                "name": "headline",
                "description": "Main headline text rendered with gradient display styling. Keep it concise and action-oriented.",
                "type": "string"
              },
              {
                "name": "nogradient",
                "description": "When true, disables the radial gradient background effect for quieter contexts.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-divider",
          "description": "Horizontal rule with multiple visual styles from subtle to glowing.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **divider**\n- **line**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Visual style. `subtle`, `glow` and the three `line-*` styles are the illuminated set. `dashed`, `dotted` and `fade` are the plain rule styles absorbed from `arc-separator` when it was merged here, along with `line`, its flat single-color rule. `fade` is the flat edge-to-edge fade, as distinct from `subtle`, which is the token gradient; `line` is the flat rule with no fade at all.",
              "value": {
                "type": "'subtle' | 'glow' | 'line-white' | 'line-primary' | 'line-gradient' | 'dashed' | 'dotted' | 'fade' | 'line'",
                "default": "'subtle'"
              }
            },
            {
              "name": "align",
              "description": "Shifts the gradient origin so it fades from one edge instead of both. Empty (the default) fades from both edges. Useful for asymmetric layouts where the divider should visually connect to content on one side.",
              "value": {
                "type": "'' | 'left' | 'right'",
                "default": "''"
              }
            },
            {
              "name": "vertical",
              "description": "Renders the divider as a vertical line. Switches to `inline-flex` display and rotates gradient directions to run top-to-bottom. Use inside flex rows to separate inline content.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Text displayed in the center of the divider, splitting it into two lines. Common use: 'OR' between form options. Only applies to horizontal dividers.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Text displayed in the center of the divider, splitting it into two lines. Common use: 'OR' between form options. Only applies to horizontal dividers.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Visual style. `subtle`, `glow` and the three `line-*` styles are the illuminated set. `dashed`, `dotted` and `fade` are the plain rule styles absorbed from `arc-separator` when it was merged here, along with `line`, its flat single-color rule. `fade` is the flat edge-to-edge fade, as distinct from `subtle`, which is the token gradient; `line` is the flat rule with no fade at all.",
                "type": "'subtle' | 'glow' | 'line-white' | 'line-primary' | 'line-gradient' | 'dashed' | 'dotted' | 'fade' | 'line'"
              },
              {
                "name": "align",
                "description": "Shifts the gradient origin so it fades from one edge instead of both. Empty (the default) fades from both edges. Useful for asymmetric layouts where the divider should visually connect to content on one side.",
                "type": "'' | 'left' | 'right'"
              },
              {
                "name": "vertical",
                "description": "Renders the divider as a vertical line. Switches to `inline-flex` display and rotates gradient directions to run top-to-bottom. Use inside flex rows to separate inline content.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-empty-state",
          "description": "Placeholder for empty lists or search results.\n---\n\n\n### **Slots:**\n - **icon**\n- **actions**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **icon**\n- **heading**\n- **description**\n- **actions**",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "Main heading text displayed below the icon",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "description",
              "description": "Supporting text displayed below the heading, max-width 360px",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "icon"
            },
            {
              "name": "actions"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Main heading text displayed below the icon",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Supporting text displayed below the heading, max-width 360px",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-feature-card",
          "description": "Card with icon, heading, description, and animated hover effects.\n---\n\n\n### **Slots:**\n - **icon**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **inner**\n- **icon**\n- **title**\n- **description**\n- **action**\n- **card**",
          "doc-url": "",
          "attributes": [
            {
              "name": "icon",
              "description": "Icon text or emoji displayed in the icon box",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "heading",
              "description": "Card title",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "description",
              "description": "Card body text",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "href",
              "description": "Makes the card a link",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "action",
              "description": "Action label (e.g. \"Learn more\") shown at the bottom of the card when href is set. Hidden when empty or when no href is provided.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "icon"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "icon",
                "description": "Icon text or emoji displayed in the icon box",
                "type": "string"
              },
              {
                "name": "heading",
                "description": "Card title",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Card body text",
                "type": "string"
              },
              {
                "name": "href",
                "description": "Makes the card a link",
                "type": "string"
              },
              {
                "name": "action",
                "description": "Action label (e.g. \"Learn more\") shown at the bottom of the card when href is set. Hidden when empty or when no href is provided.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-hotspot",
          "description": "A single glowing pin inside an Image Hotspots surface. The pin sits at percentage coordinates\nover the slotted image and opens a small anchored popover holding the slotted detail content.\nInside an arc-image-hotspots parent, opening one pin closes any other open pin.\n---\n\n\n### **Events:**\n - **arc-open** - Fired when the popover opens. detail.value carries the label, or the pin's index within its parent when no label is set.\n- **arc-close** - Fired before the popover closes and cancelable — preventDefault() vetoes the close. detail.value matches arc-open.\n\n### **Methods:**\n - **close(restoreFocus: _boolean_): _void_** - Close the popover, firing the cancelable `arc-close` first — so a listener\nthat calls `preventDefault()` keeps it open, whoever asked for the close.\n\narc-image-hotspots calls this to enforce one-open-at-a-time, which is why\na consumer's veto is honoured there too and not only on a manual close.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **pin**\n- **panel**",
          "doc-url": "",
          "attributes": [
            {
              "name": "x",
              "description": "Horizontal position of the pin as a percentage of the image width, from 0 (left edge) to 100 (right edge). Values outside the range are clamped; a non-numeric value falls back to 50.",
              "value": {
                "type": "number",
                "default": "50"
              }
            },
            {
              "name": "y",
              "description": "Vertical position of the pin as a percentage of the image height, from 0 (top edge) to 100 (bottom edge). Values outside the range are clamped; a non-numeric value falls back to 50.",
              "value": {
                "type": "number",
                "default": "50"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the pin button, repeated as the heading of the popover. Always set it — without a label the pin announces nothing useful to a screen reader.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "open",
              "description": "Whether the pin's popover is currently visible. Reflected as an attribute. Opens on click; closes on Escape, outside click, or a second click on the pin.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-open",
              "type": "CustomEvent<{value: string | number}>",
              "description": "Fired when the popover opens. detail.value carries the label, or the pin's index within its parent when no label is set."
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<{value: string | number}>",
              "description": "Fired before the popover closes and cancelable — preventDefault() vetoes the close. detail.value matches arc-open."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Accessible name for the pin button, repeated as the heading of the popover. Always set it — without a label the pin announces nothing useful to a screen reader.",
                "type": "string"
              },
              {
                "name": "x",
                "description": "Horizontal position of the pin as a percentage of the image width, from 0 (left edge) to 100 (right edge). Values outside the range are clamped; a non-numeric value falls back to 50.",
                "type": "number"
              },
              {
                "name": "y",
                "description": "Vertical position of the pin as a percentage of the image height, from 0 (top edge) to 100 (bottom edge). Values outside the range are clamped; a non-numeric value falls back to 50.",
                "type": "number"
              },
              {
                "name": "open",
                "description": "Whether the pin's popover is currently visible. Reflected as an attribute. Opens on click; closes on Escape, outside click, or a second click on the pin.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-open",
                "type": "CustomEvent<{value: string | number}>",
                "description": "Fired when the popover opens. detail.value carries the label, or the pin's index within its parent when no label is set."
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<{value: string | number}>",
                "description": "Fired before the popover closes and cancelable — preventDefault() vetoes the close. detail.value matches arc-open."
              }
            ]
          }
        },
        {
          "name": "arc-icon-library",
          "description": "Switches the icon set every arc-icon on the page resolves against. Renders nothing itself —\nput one anywhere in the document and it applies globally.\n---\n",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "Which registered icon library to resolve names against — `phosphor` or `lucide` from `@arclux/arc-ui-icons`, or the name a custom library was registered under.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "Which registered icon library to resolve names against — `phosphor` or `lucide` from `@arclux/arc-ui-icons`, or the name a custom library was registered under.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-icon",
          "description": "Renders icons by name from any registered library — Phosphor (1,500+) and Lucide (1,900+) ship in\n`@arclux/arc-ui-icons` — with one-line library switching and custom icon registration.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **icon**",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "Icon name to look up in the icon registry. When provided, renders the matching SVG. When empty, falls back to slotted content.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Icon dimensions: `xs` (12px), `sm` (16px), `md` (20px), `lg` (24px), `xl` (32px).",
              "value": {
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl'",
                "default": "'sm'"
              }
            },
            {
              "name": "label",
              "description": "Accessibility label. When provided, sets `role=\"img\"` and `aria-label`. When empty, sets `role=\"presentation\"` and `aria-hidden=\"true\"`.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "Icon name to look up in the icon registry. When provided, renders the matching SVG. When empty, falls back to slotted content.",
                "type": "string"
              },
              {
                "name": "size",
                "description": "Icon dimensions: `xs` (12px), `sm` (16px), `md` (20px), `lg` (24px), `xl` (32px).",
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl'"
              },
              {
                "name": "label",
                "description": "Accessibility label. When provided, sets `role=\"img\"` and `aria-label`. When empty, sets `role=\"presentation\"` and `aria-hidden=\"true\"`.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-image-compare",
          "description": "Before/after image comparison: two layered images with a draggable divider revealing one over\nthe other. The `before` layer sits on top, clipped to the region between the start edge and the\ndivider; dragging the handle (or pressing arrow keys on it) moves the reveal line.\n\nThe clip is pure CSS driven by a private custom property, so the component server-renders at\nits initial position with no client-side measurement.\n\n`orientation` is named for the axis the divider *moves* along: `horizontal` (the default)\nslides a vertical divider line left and right; `vertical` slides a horizontal divider line up\nand down.\n\nThe position axis is logical: 0 is the inline-start edge (left in LTR, right in RTL) for\nhorizontal orientation, and the block-start edge (top) for vertical. Before/after has no\ninherent screen direction — unlike an audio timeline there is no convention fixing it — so the\ncontrol mirrors with the document like the rest of the reading order. Arrow keys follow the\ndivider's visible motion.\n---\n\n\n### **Events:**\n - **arc-input** - Fired continuously while dragging (every pointer move) and on each keyboard nudge. `value` is the position, 0-100. Use for live readouts.\n- **arc-change** - Fired once when the position commits: on pointer release, or with each keyboard nudge. Use for persisting the position.\n\n### **Slots:**\n - **before** - The \"before\" image (`<img>` or `<arc-image>`), revealed between the start edge and the divider.\n- **after** - The \"after\" image (`<img>` or `<arc-image>`). Sits underneath and sizes the component.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container** - The clipping frame wrapping both layers.\n- **before** - The clipped before layer.\n- **after** - The base after layer.\n- **divider** - The hairline divider.\n- **handle** - The circular grab handle (the focusable slider).\n- **label-before** - The before caption chip.\n- **label-after** - The after caption chip.",
          "doc-url": "",
          "attributes": [
            {
              "name": "position",
              "description": "Divider position as a percentage, 0 to 100. 0 shows only the after layer, 100 only the before layer. Clamped, reflected, and updated as the user drags.",
              "value": {
                "type": "number",
                "default": "50"
              }
            },
            {
              "name": "orientation",
              "description": "Axis the divider moves along. `horizontal` (default) moves a vertical divider line left-right; `vertical` moves a horizontal line up-down.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "before-label",
              "description": "Optional caption for the before layer, rendered as a floating chip in the start corner.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "after-label",
              "description": "Optional caption for the after layer, rendered as a floating chip in the end corner.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the divider handle, announced as the slider label.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "before",
              "description": "The \"before\" image (`<img>` or `<arc-image>`), revealed between the start edge and the divider."
            },
            {
              "name": "after",
              "description": "The \"after\" image (`<img>` or `<arc-image>`). Sits underneath and sizes the component."
            }
          ],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired continuously while dragging (every pointer move) and on each keyboard nudge. `value` is the position, 0-100. Use for live readouts."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired once when the position commits: on pointer release, or with each keyboard nudge. Use for persisting the position."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "beforeLabel",
                "description": "Optional caption for the before layer, rendered as a floating chip in the start corner.",
                "type": "string"
              },
              {
                "name": "afterLabel",
                "description": "Optional caption for the after layer, rendered as a floating chip in the end corner.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible name for the divider handle, announced as the slider label.",
                "type": "string"
              },
              {
                "name": "position",
                "description": "Divider position as a percentage, 0 to 100. 0 shows only the after layer, 100 only the before layer. Clamped, reflected, and updated as the user drags.",
                "type": "number"
              },
              {
                "name": "orientation",
                "description": "Axis the divider moves along. `horizontal` (default) moves a vertical divider line left-right; `vertical` moves a horizontal line up-down.",
                "type": "'horizontal' | 'vertical'"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired continuously while dragging (every pointer move) and on each keyboard nudge. `value` is the position, 0-100. Use for live readouts."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired once when the position commits: on pointer release, or with each keyboard nudge. Use for persisting the position."
              }
            ]
          }
        },
        {
          "name": "arc-image-hotspots",
          "description": "An annotated image: glowing pins positioned over a slotted picture, each opening a small\npopover of detail content. Built for product-feature callouts, annotated screenshots, and\nsimple maps. Slot the image and the arc-hotspot pins together as children — the pins position\nthemselves by percentage coordinates, so source order never matters. The parent keeps one\npopover open at a time; open and close activity arrives as the arc-open and arc-close events\nbubbling up from each arc-hotspot child, with detail.value naming the hotspot.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**",
          "doc-url": "",
          "attributes": [],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [],
            "events": []
          }
        },
        {
          "name": "arc-image",
          "description": "Enhanced image component with shimmer loading skeleton, smooth fade-in transition, error\nfallback, and aspect ratio presets.\n---\n\n\n### **Events:**\n - **arc-load** - Fired when the image successfully loads.\n- **arc-error** - Fired when the image fails to load.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper**\n- **fallback**\n- **image**",
          "doc-url": "",
          "attributes": [
            {
              "name": "src",
              "description": "Image source URL.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "alt",
              "description": "Alt text for the image. Used as the accessible description.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "aspect",
              "description": "Constrains the container to a fixed aspect ratio, preventing layout shift during loading. Empty (the default) leaves the container unconstrained; an unrecognised ratio falls back to it.",
              "value": {
                "type": "'' | '1/1' | '4/3' | '16/9' | '21/9' | '3/4' | '9/16'",
                "default": "''"
              }
            },
            {
              "name": "fit",
              "description": "CSS object-fit mode controlling how the image fills its container.",
              "value": {
                "type": "'cover' | 'contain' | 'fill' | 'none' | 'scale-down'",
                "default": "'cover'"
              }
            },
            {
              "name": "loading",
              "description": "Native loading strategy. Lazy defers off-screen images until they approach the viewport.",
              "value": {
                "type": "'lazy' | 'eager'",
                "default": "'lazy'"
              }
            },
            {
              "name": "fallback",
              "description": "URL of a fallback image to display if the primary `src` fails to load.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-load",
              "type": "CustomEvent<void>",
              "description": "Fired when the image successfully loads."
            },
            {
              "name": "arc-error",
              "type": "CustomEvent<void>",
              "description": "Fired when the image fails to load."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "src",
                "description": "Image source URL.",
                "type": "string"
              },
              {
                "name": "alt",
                "description": "Alt text for the image. Used as the accessible description.",
                "type": "string"
              },
              {
                "name": "fallback",
                "description": "URL of a fallback image to display if the primary `src` fails to load.",
                "type": "string"
              },
              {
                "name": "aspect",
                "description": "Constrains the container to a fixed aspect ratio, preventing layout shift during loading. Empty (the default) leaves the container unconstrained; an unrecognised ratio falls back to it.",
                "type": "'' | '1/1' | '4/3' | '16/9' | '21/9' | '3/4' | '9/16'"
              },
              {
                "name": "fit",
                "description": "CSS object-fit mode controlling how the image fills its container.",
                "type": "'cover' | 'contain' | 'fill' | 'none' | 'scale-down'"
              },
              {
                "name": "loading",
                "description": "Native loading strategy. Lazy defers off-screen images until they approach the viewport.",
                "type": "'lazy' | 'eager'"
              }
            ],
            "events": [
              {
                "name": "arc-load",
                "type": "CustomEvent<void>",
                "description": "Fired when the image successfully loads."
              },
              {
                "name": "arc-error",
                "type": "CustomEvent<void>",
                "description": "Fired when the image fails to load."
              }
            ]
          }
        },
        {
          "name": "arc-infinite-scroll",
          "description": "Intersection Observer-powered container that fires a load event when the user scrolls near the\nbottom, with built-in loading spinner and end-of-list state.\n---\n\n\n### **Events:**\n - **arc-load-more** - Fired when the scroll sentinel enters the viewport, signaling more content should load\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **content**\n- **footer**\n- **end-text**\n- **spinner**",
          "doc-url": "",
          "attributes": [
            {
              "name": "threshold",
              "description": "Distance in pixels from the bottom of the content at which `arc-load-more` fires. Controls how eagerly new data is requested.",
              "value": {
                "type": "number",
                "default": "200"
              }
            },
            {
              "name": "loading",
              "description": "When true, displays a spinner in the footer and suppresses additional `arc-load-more` events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "finished",
              "description": "When true, disconnects the observer and displays \"No more items\" text in the footer.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the component, disconnects the observer, and reduces opacity to 40%.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-load-more",
              "type": "CustomEvent<void>",
              "description": "Fired when the scroll sentinel enters the viewport, signaling more content should load"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "threshold",
                "description": "Distance in pixels from the bottom of the content at which `arc-load-more` fires. Controls how eagerly new data is requested.",
                "type": "number"
              },
              {
                "name": "loading",
                "description": "When true, displays a spinner in the footer and suppresses additional `arc-load-more` events.",
                "type": "boolean"
              },
              {
                "name": "finished",
                "description": "When true, disconnects the observer and displays \"No more items\" text in the footer.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the component, disconnects the observer, and reduces opacity to 40%.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-load-more",
                "type": "CustomEvent<void>",
                "description": "Fired when the scroll sentinel enters the viewport, signaling more content should load"
              }
            ]
          }
        },
        {
          "name": "arc-lightbox",
          "description": "Full-screen image viewer on the overlay stack: open from a thumbnail, step through a gallery\nwith wrapping prev/next navigation, zoom to 2x with drag-to-pan, and dismiss with Escape or a\nbackdrop click.\n\nThe gallery is data, not layout: images are supplied through the `images` property rather than\nslotted children, so the closed component renders nothing. Entries may be plain `src` strings or\n`{ src, alt, caption }` objects; the two forms mix freely. The server render stays empty either\nway — a property is one it never sees, and the static JSON attribute form it does see is skipped\nas a closed overlay, which is what keeps a full-size photograph from being fetched for a first\npaint that cannot show it.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the displayed image changes. `detail.value` is the new index.\n- **arc-close** - Fired when the lightbox closes. Cancelable: call `preventDefault()` to veto the close.\n- **arc-open** - Fired when the lightbox opens\n\n### **Methods:**\n - **show(index: _number_): _void_** - Open the viewer, optionally jumping to a specific image first.\n- **close(): _void_** - Closes the viewer through the cancelable arc-close contract.\n- **next(): _void_** - Advances to the next image, wrapping past the end.\n- **prev(): _void_** - Steps to the previous image, wrapping past the start.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **backdrop**\n- **bar**\n- **counter**\n- **zoom**\n- **close**\n- **prev**\n- **next**\n- **figure**\n- **image**\n- **caption**",
          "doc-url": "",
          "attributes": [
            {
              "name": "images",
              "description": "The gallery to display. Each entry is either a `src` string or an object of shape `{ src, alt, caption }`; `alt` and `caption` are optional. Set as a property, or as a JSON attribute for a gallery that is static.",
              "value": {
                "type": "Array",
                "default": "[]"
              }
            },
            {
              "name": "index",
              "description": "Index of the image currently displayed. Navigation wraps at both ends, so setting it out of range shows the nearest valid image.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "open",
              "description": "Controls the visible state of the viewer. Set to `true` to open at the current `index` and activate the focus trap; set to `false` to close and restore focus to the previously-focused element.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{value: number, index: number}>",
              "description": "Fired when the displayed image changes. `detail.value` is the new index."
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the lightbox closes. Cancelable: call `preventDefault()` to veto the close."
            },
            {
              "name": "arc-open",
              "type": "CustomEvent<void>",
              "description": "Fired when the lightbox opens"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "images",
                "description": "The gallery to display. Each entry is either a `src` string or an object of shape `{ src, alt, caption }`; `alt` and `caption` are optional. Set as a property, or as a JSON attribute for a gallery that is static.",
                "type": "Array"
              },
              {
                "name": "index",
                "description": "Index of the image currently displayed. Navigation wraps at both ends, so setting it out of range shows the nearest valid image.",
                "type": "number"
              },
              {
                "name": "open",
                "description": "Controls the visible state of the viewer. Set to `true` to open at the current `index` and activate the focus trap; set to `false` to close and restore focus to the previously-focused element.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{value: number, index: number}>",
                "description": "Fired when the displayed image changes. `detail.value` is the new index."
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the lightbox closes. Cancelable: call `preventDefault()` to veto the close."
              },
              {
                "name": "arc-open",
                "type": "CustomEvent<void>",
                "description": "Fired when the lightbox opens"
              }
            ]
          }
        },
        {
          "name": "arc-marquee",
          "description": "Continuously scrolling content strip with configurable speed, direction, gap, and pause-on-hover\nbehavior for logos, testimonials, and announcements.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **track**\n- **group**\n- **group-duplicate**",
          "doc-url": "",
          "attributes": [
            {
              "name": "speed",
              "description": "Scroll speed in pixels per second. The animation duration is calculated from the content width divided by this value.",
              "value": {
                "type": "number",
                "default": "40"
              }
            },
            {
              "name": "direction",
              "description": "Scroll direction. `left` scrolls content from right to left (default), `right` reverses the direction.",
              "value": {
                "type": "'left' | 'right'",
                "default": "'left'"
              }
            },
            {
              "name": "pauseOnHover",
              "description": "When true, the animation pauses while the cursor hovers over the marquee.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "gap",
              "description": "CSS length value for the gap between slotted items. Accepts any valid CSS length or custom property.",
              "value": {
                "type": "string",
                "default": "'var(--space-xl)'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "gap",
                "description": "CSS length value for the gap between slotted items. Accepts any valid CSS length or custom property.",
                "type": "string"
              },
              {
                "name": "speed",
                "description": "Scroll speed in pixels per second. The animation duration is calculated from the content width divided by this value.",
                "type": "number"
              },
              {
                "name": "direction",
                "description": "Scroll direction. `left` scrolls content from right to left (default), `right` reverses the direction.",
                "type": "'left' | 'right'"
              },
              {
                "name": "pauseOnHover",
                "description": "When true, the animation pauses while the cursor hovers over the marquee.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-qr-code",
          "description": "Client-side QR code renderer that encodes any string into a crisp inline SVG. Themes\nautomatically via currentColor, with an optional contrast card for guaranteed scanability on\ndark backgrounds.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element. Which element that is depends on `contrast`: the card wrapper when it is set, the svg otherwise — which is the case `base` exists for.\n- **svg**\n- **card**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The content to encode (URL, text, Wi-Fi string, 2FA URI, …). Empty values render nothing. Values exceeding QR capacity for the chosen level also render nothing.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Rendered width and height of the SVG in pixels. The code is vector-based and stays crisp at any size.",
              "value": {
                "type": "number",
                "default": "160"
              }
            },
            {
              "name": "level",
              "description": "Error-correction level: L (~7% recovery), M (~15%), Q (~25%), H (~30%). Higher levels tolerate more damage/occlusion but produce denser codes.",
              "value": {
                "type": "'L' | 'M' | 'Q' | 'H'",
                "default": "'M'"
              }
            },
            {
              "name": "label",
              "description": "Accessible description announced to screen readers (falls back to \"QR code\"). Describe the purpose, not the encoded value — the value is never exposed by default since it may be a secret.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "quietZone",
              "description": "Width of the empty border around the code, measured in modules. Scanners rely on this margin to find the code; keep at least 2 against busy backgrounds.",
              "value": {
                "type": "number",
                "default": "2"
              }
            },
            {
              "name": "contrast",
              "description": "Renders the code on a white rounded card with forced dark modules, guaranteeing dark-on-light scanability in both themes. Overrides --qr-fg/--qr-bg. Recommended for scan-critical codes.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The content to encode (URL, text, Wi-Fi string, 2FA URI, …). Empty values render nothing. Values exceeding QR capacity for the chosen level also render nothing.",
                "type": "string"
              },
              {
                "name": "size",
                "description": "Rendered width and height of the SVG in pixels. The code is vector-based and stays crisp at any size.",
                "type": "number"
              },
              {
                "name": "label",
                "description": "Accessible description announced to screen readers (falls back to \"QR code\"). Describe the purpose, not the encoded value — the value is never exposed by default since it may be a secret.",
                "type": "string"
              },
              {
                "name": "level",
                "description": "Error-correction level: L (~7% recovery), M (~15%), Q (~25%), H (~30%). Higher levels tolerate more damage/occlusion but produce denser codes.",
                "type": "'L' | 'M' | 'Q' | 'H'"
              },
              {
                "name": "quietZone",
                "description": "Width of the empty border around the code, measured in modules. Scanners rely on this margin to find the code; keep at least 2 against busy backgrounds.",
                "type": "number"
              },
              {
                "name": "contrast",
                "description": "Renders the code on a white rounded card with forced dark modules, guaranteeing dark-on-light scanability in both themes. Overrides --qr-fg/--qr-bg. Recommended for scan-critical codes.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-scroll-area",
          "description": "Styled scrollable container with custom thin scrollbar styling for Webkit and Firefox,\nconfigurable orientation, and optional max-height constraint.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **scroll-area**",
          "doc-url": "",
          "attributes": [
            {
              "name": "max-height",
              "description": "CSS max-height value applied to the scrollable container. Use any valid CSS length (e.g. `300px`, `50vh`).",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "orientation",
              "description": "Scroll direction. `vertical` shows a vertical scrollbar, `horizontal` shows a horizontal scrollbar, `both` shows both.",
              "value": {
                "type": "'vertical' | 'horizontal' | 'both'",
                "default": "'vertical'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "maxHeight",
                "description": "CSS max-height value applied to the scrollable container. Use any valid CSS length (e.g. `300px`, `50vh`).",
                "type": "string"
              },
              {
                "name": "orientation",
                "description": "Scroll direction. `vertical` shows a vertical scrollbar, `horizontal` shows a horizontal scrollbar, `both` shows both.",
                "type": "'vertical' | 'horizontal' | 'both'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-scroll-indicator",
          "description": "Thin progress bar that tracks scroll position of the page or a target container. Sticks to the\ntop or bottom edge with accent or gradient fill.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **bar**\n- **fill**",
          "doc-url": "",
          "attributes": [
            {
              "name": "target",
              "description": "CSS selector for the scroll container to track. Defaults to the window when empty.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "position",
              "description": "Which edge the indicator sticks to.",
              "value": {
                "type": "'top' | 'bottom'",
                "default": "'top'"
              }
            },
            {
              "name": "size",
              "description": "Bar thickness: sm (2px), md (3px), lg (4px).",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'sm'"
              }
            },
            {
              "name": "color",
              "description": "Fill color mode. Accent uses `--accent-primary`. Gradient blends from primary to secondary.",
              "value": {
                "type": "'accent' | 'gradient'",
                "default": "'accent'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "target",
                "description": "CSS selector for the scroll container to track. Defaults to the window when empty.",
                "type": "string"
              },
              {
                "name": "position",
                "description": "Which edge the indicator sticks to.",
                "type": "'top' | 'bottom'"
              },
              {
                "name": "size",
                "description": "Bar thickness: sm (2px), md (3px), lg (4px).",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "color",
                "description": "Fill color mode. Accent uses `--accent-primary`. Gradient blends from primary to secondary.",
                "type": "'accent' | 'gradient'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-skeleton",
          "description": "Loading placeholder with shimmer animation.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **skeleton**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Shape of the skeleton: text for lines, circle for avatars, rect for blocks",
              "value": {
                "type": "'text' | 'circle' | 'rect'",
                "default": "'text'"
              }
            },
            {
              "name": "width",
              "description": "CSS width value (e.g. \"200px\", \"100%\")",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "height",
              "description": "CSS height value; circle auto-matches width when omitted",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "count",
              "description": "Renders multiple skeleton items stacked vertically with spacing. Useful for placeholder lists.",
              "value": {
                "type": "number",
                "default": "1"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "width",
                "description": "CSS width value (e.g. \"200px\", \"100%\")",
                "type": "string"
              },
              {
                "name": "height",
                "description": "CSS height value; circle auto-matches width when omitted",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Shape of the skeleton: text for lines, circle for avatars, rect for blocks",
                "type": "'text' | 'circle' | 'rect'"
              },
              {
                "name": "count",
                "description": "Renders multiple skeleton items stacked vertically with spacing. Useful for placeholder lists.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-spinner",
          "description": "Animated loading spinner in three sizes.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **spinner**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Spinner dimensions: sm (16px), md (24px), lg (40px)",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "variant",
              "description": "Color of the spinner ring",
              "value": {
                "type": "'primary' | 'secondary' | 'white'",
                "default": "'primary'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "size",
                "description": "Spinner dimensions: sm (16px), md (24px), lg (40px)",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "variant",
                "description": "Color of the spinner ring",
                "type": "'primary' | 'secondary' | 'white'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-stack",
          "description": "Flexbox layout component for vertical or horizontal stacking with token-based spacing.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "direction",
              "description": "Flex direction — vertical is column, horizontal is row",
              "value": {
                "type": "'vertical' | 'horizontal'",
                "default": "'vertical'"
              }
            },
            {
              "name": "gap",
              "description": "Gap between children, maps to --space-* tokens",
              "value": {
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'",
                "default": "'md'"
              }
            },
            {
              "name": "align",
              "description": "Cross-axis alignment (align-items)",
              "value": {
                "type": "'start' | 'center' | 'end' | 'stretch'",
                "default": "'stretch'"
              }
            },
            {
              "name": "justify",
              "description": "Main-axis alignment (justify-content)",
              "value": {
                "type": "'start' | 'center' | 'end' | 'between' | 'around'",
                "default": "'start'"
              }
            },
            {
              "name": "wrap",
              "description": "Enable flex-wrap for responsive wrapping",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "direction",
                "description": "Flex direction — vertical is column, horizontal is row",
                "type": "'vertical' | 'horizontal'"
              },
              {
                "name": "gap",
                "description": "Gap between children, maps to --space-* tokens",
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'"
              },
              {
                "name": "align",
                "description": "Cross-axis alignment (align-items)",
                "type": "'start' | 'center' | 'end' | 'stretch'"
              },
              {
                "name": "justify",
                "description": "Main-axis alignment (justify-content)",
                "type": "'start' | 'center' | 'end' | 'between' | 'around'"
              },
              {
                "name": "wrap",
                "description": "Enable flex-wrap for responsive wrapping",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-video",
          "description": "House-styled video player. Before the first play it shows the poster with a large glowing\nplay button; once playback starts, a minimal custom control bar rides the native video —\nplay/pause, a mono time readout, a scrub bar that seeks directly, a mute toggle, and a\nfullscreen button. During playback the bar dims after two seconds of idle rather than\nleaving — it stays visible and clickable, and returns to full strength when the pointer is\nanywhere over the player or a control takes focus. Standard player\nkeys work on the focused player: Space or K toggles playback, the arrow keys seek five\nseconds, M toggles mute, F toggles fullscreen.\n\nTakes a single `src` — there is no source-element fallback chain for multiple formats.\nServe one broadly supported encoding (H.264/MP4 plays everywhere), or reach for the native\nvideo element directly when you need format negotiation or adaptive streaming.\n---\n\n\n### **Events:**\n - **arc-play** - Fired when playback starts or resumes. `detail.value` is the current time in seconds.\n- **arc-pause** - Fired when playback pauses. `detail.value` is the current time in seconds.\n- **arc-ended** - Fired when playback reaches the end. `detail.value` is the final time in seconds.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper** - The player frame.\n- **video** - The native video element.\n- **overlay** - The pre-play overlay covering the poster.\n- **play-button** - The large centered play button inside the overlay.\n- **controls** - The control bar.\n- **play-toggle** - The play/pause button in the control bar.\n- **time** - The current/total time readout.\n- **scrubber** - The seek range input.\n- **mute-button** - The mute toggle button.\n- **fullscreen-button** - The fullscreen button.",
          "doc-url": "",
          "attributes": [
            {
              "name": "src",
              "description": "Video source URL. A single source only; no multi-format machinery.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "poster",
              "description": "Poster image URL shown before the first play.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the player region. Falls back to a generic label when empty.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "autoplay",
              "description": "Starts playback as soon as the browser allows. Browsers only honor autoplay when the video is muted, so pair it with `muted`; when autoplay is blocked, the play overlay simply remains and the user starts playback themselves.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "loop",
              "description": "Restarts playback from the beginning when the video ends.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "muted",
              "description": "Mutes the audio track. Toggled live by the mute button and the M key.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "controls",
              "description": "Shows the custom control bar once playback has started, and enables the player keyboard shortcuts. Defaults to true; set `controls=\"false\"` for ambient or presentation video.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "preload",
              "description": "Passed through to the native video element. The default `metadata` loads dimensions and duration without buffering content.",
              "value": {
                "type": "'none' | 'metadata' | 'auto'",
                "default": "'metadata'"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-play",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when playback starts or resumes. `detail.value` is the current time in seconds."
            },
            {
              "name": "arc-pause",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when playback pauses. `detail.value` is the current time in seconds."
            },
            {
              "name": "arc-ended",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when playback reaches the end. `detail.value` is the final time in seconds."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "src",
                "description": "Video source URL. A single source only; no multi-format machinery.",
                "type": "string"
              },
              {
                "name": "poster",
                "description": "Poster image URL shown before the first play.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible name for the player region. Falls back to a generic label when empty.",
                "type": "string"
              },
              {
                "name": "controls",
                "description": "Shows the custom control bar once playback has started, and enables the player keyboard shortcuts. Defaults to true; set `controls=\"false\"` for ambient or presentation video.",
                "type": "boolean"
              },
              {
                "name": "autoplay",
                "description": "Starts playback as soon as the browser allows. Browsers only honor autoplay when the video is muted, so pair it with `muted`; when autoplay is blocked, the play overlay simply remains and the user starts playback themselves.",
                "type": "boolean"
              },
              {
                "name": "loop",
                "description": "Restarts playback from the beginning when the video ends.",
                "type": "boolean"
              },
              {
                "name": "muted",
                "description": "Mutes the audio track. Toggled live by the mute button and the M key.",
                "type": "boolean"
              },
              {
                "name": "preload",
                "description": "Passed through to the native video element. The default `metadata` loads dimensions and duration without buffering content.",
                "type": "'none' | 'metadata' | 'auto'"
              }
            ],
            "events": [
              {
                "name": "arc-play",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when playback starts or resumes. `detail.value` is the current time in seconds."
              },
              {
                "name": "arc-pause",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when playback pauses. `detail.value` is the current time in seconds."
              },
              {
                "name": "arc-ended",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when playback reaches the end. `detail.value` is the final time in seconds."
              }
            ]
          }
        },
        {
          "name": "arc-virtual-list",
          "description": "Windowed list that renders only the visible slice of a large array.\nFixed row height with configurable overscan.\n\nTwo ways to supply rows, because \"render a row\" means something different\ninside a framework than it does outside one:\n\n  - `renderItem` — a callback returning the row's content. The component\n    mounts only the visible rows, so a million-row array puts a screenful of\n    nodes in the DOM. This is the direct path: plain JS, HTML, Lit.\n  - windowed slots — the component renders an `item-N` slot for each index in\n    the visible range only, and announces that range as it scrolls. (Spelled\n    without the tag on purpose: prism scans this whole file for slot markup,\n    and a literal one in a comment invents a slot named `item-N`.)\n    Whoever owns\n    the light DOM supplies just those rows. This is how the framework\n    wrappers do it, so a React consumer writes JSX and a Svelte consumer\n    writes markup, rather than a callback returning nodes their framework\n    didn't create.\n\nBoth paths share one geometry engine, so scrolling behaves identically.\n`renderItem` wins if both are present.\n---\n\n\n### **Events:**\n - **arc-range-change** - Fired when the visible range changes. `end` is exclusive.\n\n### **Methods:**\n - **scrollToIndex(index: _number_): _void_** - Scroll a row into view.\n\n### **Slots:**\n - **item-${index}**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **spacer**\n- **item**",
          "doc-url": "",
          "attributes": [
            {
              "name": "items",
              "description": "The full data array. Only the visible slice is rendered at any given time.",
              "value": {
                "type": "Array",
                "default": "[]"
              }
            },
            {
              "name": "itemHeight",
              "description": "Height in pixels of each row. Must match what actually renders, and must be at least 1 — it is a divisor, so a zero would put NaN through every window calculation.",
              "value": {
                "type": "number",
                "default": "40"
              }
            },
            {
              "name": "overscan",
              "description": "Rows rendered above and below the visible window to cover fast scrolling. Never negative.",
              "value": {
                "type": "number",
                "default": "5"
              }
            }
          ],
          "slots": [
            {
              "name": "item-${index}"
            }
          ],
          "events": [
            {
              "name": "arc-range-change",
              "type": "CustomEvent<{value: {start: number, end: number}, start: number, end: number}>",
              "description": "Fired when the visible range changes. `end` is exclusive."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "visibleRange",
                "description": "The range of currently rendered indices. `end` is exclusive."
              },
              {
                "name": "renderItem",
                "description": "`(item, index) => unknown` returning one row's content. Anything Lit can render: a template, a DOM node, a string. When set, rows come from here and the slots are not used.",
                "type": "Function"
              },
              {
                "name": "itemHeight",
                "description": "Height in pixels of each row. Must match what actually renders, and must be at least 1 — it is a divisor, so a zero would put NaN through every window calculation.",
                "type": "number"
              },
              {
                "name": "overscan",
                "description": "Rows rendered above and below the visible window to cover fast scrolling. Never negative.",
                "type": "number"
              },
              {
                "name": "items",
                "description": "The full data array. Only the visible slice is rendered at any given time.",
                "type": "Array"
              }
            ],
            "events": [
              {
                "name": "arc-range-change",
                "type": "CustomEvent<{value: {start: number, end: number}, start: number, end: number}>",
                "description": "Fired when the visible range changes. `end` is exclusive."
              }
            ]
          }
        },
        {
          "name": "arc-activity-heatmap",
          "description": "GitHub-style contribution calendar: a year of day cells laid out as one\ncolumn per week, each cell tinted by that day's activity on a five-step\naccent ramp. Hovering or arrow-keying a cell raises it with the house glow\nand shows its detail — the date and the day's label or value — in the same\nbuilt-in bubble arc-uptime carries. Month labels run along the top, sparse\nweekday labels down the side, and a Less→More legend sits below.\n\nThe grid is a pure function of its props. When `end-date` is unset the\nanchor is today, adopted in the browser one render after the first; before\nthat — the server render, and the client render that hydrates it — the\nanchor is derived from the newest date present in `data`, so both are\ndeterministic and identical. Pin `end-date` explicitly whenever server and\nclient must agree exactly.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **heatmap**\n- **months**\n- **month**\n- **weekdays**\n- **weekday**\n- **grid**\n- **cell**\n- **detail**\n- **legend**\n- **swatch**",
          "doc-url": "",
          "attributes": [
            {
              "name": "data",
              "description": "One entry per day with activity: an ISO `date` (YYYY-MM-DD), a numeric `value` mapped to the intensity ramp, and an optional `label` shown in the hover detail in place of the bare value (e.g. \"7 commits\"). Days in the rendered span with no entry render as empty cells, so sparse data is fine. Set it from script, a framework binding, or a JSON attribute.",
              "value": {
                "type": "Array<{date: string, value: number, label?: string}>",
                "default": "[]"
              }
            },
            {
              "name": "end-date",
              "description": "The newest day shown, as an ISO string (YYYY-MM-DD). Unset: today in the browser; on the server, the newest date in `data` (see above).",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "weeks",
              "description": "How many week columns to render, counting back from the week containing the end date (default 52), at least 1. The last column is truncated after the end date, so the newest cell is always the end date itself.",
              "value": {
                "type": "number",
                "default": "52"
              }
            },
            {
              "name": "weekStart",
              "description": "Which day starts each column: \"sunday\" (default, the GitHub convention) or \"monday\". An unrecognised value falls back to sunday.",
              "value": {
                "type": "'sunday' | 'monday'",
                "default": "'sunday'"
              }
            },
            {
              "name": "max",
              "description": "When set, intensity is a linear scale from 0 to this value instead of the default quartile mapping: each nonzero value lands on step 1-4 by `value / max`. Values at or above `max` render as step 4.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "legend",
              "description": "Whether to render the Less→More swatch strip under the grid. Default true; disable from markup with either `no-legend` or `legend=\"false\"`.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "endDate",
                "description": "The newest day shown, as an ISO string (YYYY-MM-DD). Unset: today in the browser; on the server, the newest date in `data` (see above).",
                "type": "string"
              },
              {
                "name": "weeks",
                "description": "How many week columns to render, counting back from the week containing the end date (default 52), at least 1. The last column is truncated after the end date, so the newest cell is always the end date itself.",
                "type": "number"
              },
              {
                "name": "weekStart",
                "description": "Which day starts each column: \"sunday\" (default, the GitHub convention) or \"monday\". An unrecognised value falls back to sunday.",
                "type": "'sunday' | 'monday'"
              },
              {
                "name": "legend",
                "description": "Whether to render the Less→More swatch strip under the grid. Default true; disable from markup with either `no-legend` or `legend=\"false\"`.",
                "type": "boolean"
              },
              {
                "name": "data",
                "description": "One entry per day with activity: an ISO `date` (YYYY-MM-DD), a numeric `value` mapped to the intensity ramp, and an optional `label` shown in the hover detail in place of the bare value (e.g. \"7 commits\"). Days in the rendered span with no entry render as empty cells, so sparse data is fine. Set it from script, a framework binding, or a JSON attribute.",
                "type": "Array<{date: string, value: number, label?: string}>"
              },
              {
                "name": "max",
                "description": "When set, intensity is a linear scale from 0 to this value instead of the default quartile mapping: each nonzero value lands on step 1-4 by `value / max`. Values at or above `max` render as step 4.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-animated-number",
          "description": "Smooth count-up/down number animation with formatting options.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **value**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Target number to animate to",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "duration",
              "description": "Animation duration in milliseconds",
              "value": {
                "type": "number",
                "default": "1000"
              }
            },
            {
              "name": "format",
              "description": "Controls how the number is formatted using Intl.NumberFormat. Use currency with a prefix like $ or percent with a suffix like %.",
              "value": {
                "type": "'number' | 'currency' | 'percent'",
                "default": "'number'"
              }
            },
            {
              "name": "prefix",
              "description": "String prepended before the number (e.g., \"$\")",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "suffix",
              "description": "String appended after the number (e.g., \"%\")",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "decimals",
              "description": "Number of fixed decimal places",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "locale",
              "description": "BCP 47 locale tag passed to Intl.NumberFormat for locale-aware number formatting (thousands separators, decimal marks).",
              "value": {
                "type": "string",
                "default": "'en-US'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Target number to animate to",
                "type": "number"
              },
              {
                "name": "prefix",
                "description": "String prepended before the number (e.g., \"$\")",
                "type": "string"
              },
              {
                "name": "suffix",
                "description": "String appended after the number (e.g., \"%\")",
                "type": "string"
              },
              {
                "name": "decimals",
                "description": "Number of fixed decimal places",
                "type": "number"
              },
              {
                "name": "locale",
                "description": "BCP 47 locale tag passed to Intl.NumberFormat for locale-aware number formatting (thousands separators, decimal marks).",
                "type": "string"
              },
              {
                "name": "duration",
                "description": "Animation duration in milliseconds",
                "type": "number"
              },
              {
                "name": "format",
                "description": "Controls how the number is formatted using Intl.NumberFormat. Use currency with a prefix like $ or percent with a suffix like %.",
                "type": "'number' | 'currency' | 'percent'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-badge",
          "description": "Compact pill-shaped label for status indicators, category tags, and notification counts. Seven\ncolor variants let you encode meaning at a glance across dashboards, tables, and card layouts.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **badge**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Controls the badge color scheme. Default renders a neutral gray. Primary and secondary use the accent token colors. Success, warning, error, and info map to the corresponding semantic color tokens for status-oriented labels.",
              "value": {
                "type": "'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info'",
                "default": "'default'"
              }
            },
            {
              "name": "size",
              "description": "Controls the badge size. Options: 'sm', 'md', 'lg'.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "color",
              "description": "Custom RGB color value (e.g. `\"255, 100, 50\"`) that overrides the variant color. Sets the border, text, background tint, and hover glow to the specified color.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "color",
                "description": "Custom RGB color value (e.g. `\"255, 100, 50\"`) that overrides the variant color. Sets the border, text, background tint, and hover glow to the specified color.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Controls the badge color scheme. Default renders a neutral gray. Primary and secondary use the accent token colors. Success, warning, error, and info map to the corresponding semantic color tokens for status-oriented labels.",
                "type": "'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info'"
              },
              {
                "name": "size",
                "description": "Controls the badge size. Options: 'sm', 'md', 'lg'.",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-chart",
          "description": "An SVG chart component for dashboards with line, area, bar, and donut types. Data-driven from a\nseries array, with automatic nice-tick scales, a legend, hover crosshair and tooltips, and a\nvisually-hidden data table for assistive technology.\n---\n\n\n### **Events:**\n - **arc-mark-click** - Fired when a mark (bar, stacked segment, line point column, or donut segment) is clicked. detail: { seriesIndex, index, value }. Indices refer to displayed series after any \"Other\" folding; a folded donut segment reports seriesIndex -1.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **axis**\n- **tooltip**\n- **chart**\n- **legend**",
          "doc-url": "",
          "attributes": [
            {
              "name": "type",
              "description": "The chart form. Line and area share the x axis across all series; bar renders grouped columns (or stacked with the `stacked` attribute); donut renders one segment per series (or per category when a single series is given).",
              "value": {
                "type": "'line' | 'area' | 'bar' | 'donut'",
                "default": "'line'"
              }
            },
            {
              "name": "series",
              "description": "The data that drives the chart. Each entry is one series; all series share the x axis defined by `labels`. Set as a property, or as a JSON attribute for a chart that is static. Colors are assigned in fixed order from --chart-1 to --chart-6; series beyond six are summed into an \"Other\" series noted in the legend.",
              "value": {
                "type": "Array<{label:string,data:number[]}>",
                "default": "[]"
              }
            },
            {
              "name": "labels",
              "description": "Category labels for the x axis (or donut segment names when a single series is given). Labels that would collide are automatically thinned — every Nth label renders based on available width.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "stacked",
              "description": "Bar type only. Stacks series segments on a shared baseline with 2px surface gaps between segments; only the outermost segment gets the rounded value end. Assumes non-negative data.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "hideLegend",
              "description": "Suppresses the legend. By default the legend renders for two or more series and is omitted for a single series.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "hideAxis",
              "description": "Removes the axis layer — gridlines, y tick labels, and x category labels — for compact trend panels where exact values are read from the tooltip.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "height",
              "description": "Chart height in pixels. Width is fluid and tracked with a ResizeObserver.",
              "value": {
                "type": "number",
                "default": "260"
              }
            },
            {
              "name": "valueFormat",
              "description": "How values are formatted in tooltips, the axis, and the accessible data table, via Intl.NumberFormat. Percent expects fractional data (0.24 → 24%). Axis numbers are abbreviated (1.2k, 3.4M).",
              "value": {
                "type": "'number' | 'percent' | 'currency'",
                "default": "'number'"
              }
            },
            {
              "name": "currency",
              "description": "ISO 4217 currency code used when value-format=\"currency\".",
              "value": {
                "type": "string",
                "default": "'USD'"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-mark-click",
              "type": "CustomEvent",
              "description": "Fired when a mark (bar, stacked segment, line point column, or donut segment) is clicked. detail: { seriesIndex, index, value }. Indices refer to displayed series after any \"Other\" folding; a folded donut segment reports seriesIndex -1."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "currency",
                "description": "ISO 4217 currency code used when value-format=\"currency\".",
                "type": "string"
              },
              {
                "name": "type",
                "description": "The chart form. Line and area share the x axis across all series; bar renders grouped columns (or stacked with the `stacked` attribute); donut renders one segment per series (or per category when a single series is given).",
                "type": "'line' | 'area' | 'bar' | 'donut'"
              },
              {
                "name": "series",
                "description": "The data that drives the chart. Each entry is one series; all series share the x axis defined by `labels`. Set as a property, or as a JSON attribute for a chart that is static. Colors are assigned in fixed order from --chart-1 to --chart-6; series beyond six are summed into an \"Other\" series noted in the legend.",
                "type": "Array<{label:string,data:number[]}>"
              },
              {
                "name": "labels",
                "description": "Category labels for the x axis (or donut segment names when a single series is given). Labels that would collide are automatically thinned — every Nth label renders based on available width.",
                "type": "string[]"
              },
              {
                "name": "stacked",
                "description": "Bar type only. Stacks series segments on a shared baseline with 2px surface gaps between segments; only the outermost segment gets the rounded value end. Assumes non-negative data.",
                "type": "boolean"
              },
              {
                "name": "hideLegend",
                "description": "Suppresses the legend. By default the legend renders for two or more series and is omitted for a single series.",
                "type": "boolean"
              },
              {
                "name": "hideAxis",
                "description": "Removes the axis layer — gridlines, y tick labels, and x category labels — for compact trend panels where exact values are read from the tooltip.",
                "type": "boolean"
              },
              {
                "name": "height",
                "description": "Chart height in pixels. Width is fluid and tracked with a ResizeObserver.",
                "type": "number"
              },
              {
                "name": "valueFormat",
                "description": "How values are formatted in tooltips, the axis, and the accessible data table, via Intl.NumberFormat. Percent expects fractional data (0.24 → 24%). Axis numbers are abbreviated (1.2k, 3.4M).",
                "type": "'number' | 'percent' | 'currency'"
              }
            ],
            "events": [
              {
                "name": "arc-mark-click",
                "type": "CustomEvent",
                "description": "Fired when a mark (bar, stacked segment, line point column, or donut segment) is clicked. detail: { seriesIndex, index, value }. Indices refer to displayed series after any \"Other\" folding; a folded donut segment reports seriesIndex -1."
              }
            ]
          }
        },
        {
          "name": "arc-clock",
          "description": "Live clock with a digital or analog face, optionally pinned to an IANA timezone.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **face**\n- **time**\n- **timezone**\n- **label**\n- **svg**\n- **hand-hour**\n- **hand-minute**\n- **hand-second**\n- **pin**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Which face to render. Digital shows a mono-spaced time string; analog shows an SVG dial with hands.",
              "value": {
                "type": "'digital' | 'analog'",
                "default": "'digital'"
              }
            },
            {
              "name": "timezone",
              "description": "IANA timezone name (e.g. \"Asia/Tokyo\"). Defaults to the viewer's local timezone; an unrecognized value falls back to local.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Optional caption rendered under the face.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "showSeconds",
              "description": "Show seconds on the digital face, or the second hand on the analog face.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "hour12",
              "description": "Force 12-hour display on the digital face. When unset, the viewer's locale decides. Set the property to false to force 24-hour display.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "showTimezone",
              "description": "Render the timezone abbreviation, muted, beside the digital time.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "timezone",
                "description": "IANA timezone name (e.g. \"Asia/Tokyo\"). Defaults to the viewer's local timezone; an unrecognized value falls back to local.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Optional caption rendered under the face.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Which face to render. Digital shows a mono-spaced time string; analog shows an SVG dial with hands.",
                "type": "'digital' | 'analog'"
              },
              {
                "name": "showSeconds",
                "description": "Show seconds on the digital face, or the second hand on the analog face.",
                "type": "boolean"
              },
              {
                "name": "hour12",
                "description": "Force 12-hour display on the digital face. When unset, the viewer's locale decides. Set the property to false to force 24-hour display.",
                "type": "boolean"
              },
              {
                "name": "showTimezone",
                "description": "Render the timezone abbreviation, muted, beside the digital time.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-comparison-column",
          "description": "Data-holder child element that defines a single column in the comparison grid. Renders nothing\nvisible — it provides heading, highlight, and values data to the parent.\n---\n",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "Column header text displayed at the top of this column (e.g., \"Free\", \"Pro\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "highlight",
              "description": "When true, adds an accent background to the header and all cells in this column.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "values",
              "description": "Values matching the features order. Settable as a property, or as a JSON array in markup. Use \"true\"/\"false\" for check/cross icons, or any string for text values.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Column header text displayed at the top of this column (e.g., \"Free\", \"Pro\").",
                "type": "string"
              },
              {
                "name": "highlight",
                "description": "When true, adds an accent background to the header and all cells in this column.",
                "type": "boolean"
              },
              {
                "name": "values",
                "description": "Values matching the features order. Settable as a property, or as a JSON array in markup. Use \"true\"/\"false\" for check/cross icons, or any string for text values.",
                "type": "string[]"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-comparison",
          "description": "A two-column or multi-column comparison table for pricing tiers, feature breakdowns, or\nbefore/after comparisons. Each column is defined with an arc-comparison-column child element.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **table**\n- **header**\n- **feature**\n- **cell**",
          "doc-url": "",
          "attributes": [
            {
              "name": "features",
              "description": "Feature label strings, one row each. Settable as a property, or as a JSON array in markup: `features='[\"Storage\",\"Bandwidth\"]'`. A malformed value falls back to an empty list rather than throwing.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "features",
                "description": "Feature label strings, one row each. Settable as a property, or as a JSON array in markup: `features='[\"Storage\",\"Bandwidth\"]'`. A malformed value falls back to an empty list rather than throwing.",
                "type": "string[]"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-countdown-timer",
          "description": "Live countdown to a target date/time with days, hours, minutes, and seconds segments.\n---\n\n\n### **Events:**\n - **arc-expired** - Fired when the countdown reaches zero\n\n### **CSS Parts:**\n - **base** - The root element.\n- **separator**\n- **segment**\n- **number**\n- **label**\n- **container**",
          "doc-url": "",
          "attributes": [
            {
              "name": "target",
              "description": "ISO date string or parseable date for the countdown target",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Optional label displayed above the countdown",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "expired",
              "description": "Text shown when the countdown reaches zero",
              "value": {
                "type": "string",
                "default": "'Expired'"
              }
            },
            {
              "name": "hideZeroSegments",
              "description": "Hide leading segments that are zero",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-expired",
              "type": "CustomEvent<void>",
              "description": "Fired when the countdown reaches zero"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "target",
                "description": "ISO date string or parseable date for the countdown target",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Optional label displayed above the countdown",
                "type": "string"
              },
              {
                "name": "expired",
                "description": "Text shown when the countdown reaches zero",
                "type": "string"
              },
              {
                "name": "hideZeroSegments",
                "description": "Hide leading segments that are zero",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-expired",
                "type": "CustomEvent<void>",
                "description": "Fired when the countdown reaches zero"
              }
            ]
          }
        },
        {
          "name": "arc-data-grid",
          "description": "A spreadsheet-grade grid for working with tabular data: inline cell editing, multi-column\nsorting, pinned columns, row selection, and virtualized rendering. Columns are defined as a\nJavaScript array, and the grid implements the full WAI-ARIA grid keyboard pattern with a single\ntab stop.\n---\n\n\n### **Events:**\n - **arc-sort** - Fired when the user changes sorting. detail: { sort } with the full multi-sort array in priority order\n- **arc-select** - Fired when row selection changes. detail: { value, selectedIndices } — sorted indices into the original rows array\n- **arc-cell-change** - Fired when an inline cell edit is committed. detail: { rowIndex, key, value, row } — rowIndex refers to the original rows array\n\n### **CSS Parts:**\n - **base** - The root element.\n- **header-cell**\n- **cell**\n- **editor**\n- **row**\n- **wrapper**\n- **table**\n- **header**\n- **body**",
          "doc-url": "",
          "attributes": [
            {
              "name": "columns",
              "description": "Column definitions. Each entry maps a `key` in your row objects to a rendered column with a `label` header. Optional flags enable sorting, inline editing, and inline-start-edge pinning per column; `width` sets a fixed CSS width (required for accurate pinned offsets) and `align` controls text alignment. Pinned columns are always displayed first. Set via JavaScript property.",
              "value": {
                "type": "Array<{key:string,label:string,sortable?:boolean,editable?:boolean,pinned?:boolean,width?:string,align?:string}>",
                "default": "[]"
              }
            },
            {
              "name": "rows",
              "description": "The data array. Each object becomes a row keyed by column `key`. The grid works on an internal shallow copy — sorting and inline edits never mutate the array you pass in. Set via JavaScript property; reassigning it resets selection and any open editor.",
              "value": {
                "type": "Array<Record<string, any>>",
                "default": "[]"
              }
            },
            {
              "name": "sort",
              "description": "Multi-sort state in priority order. Clicking a sortable header cycles it asc → desc → none; Shift+click appends it as a secondary sort. When more than one sort is active, headers show a direction arrow plus priority number. Set this property to pre-sort the grid.",
              "value": {
                "type": "Array<{key:string,direction:'asc'|'desc'}>",
                "default": "[]"
              }
            },
            {
              "name": "manualSort",
              "description": "Skips internal sorting. Rows render in the order given, while headers still cycle the `sort` state and emit `arc-sort` — use this to implement server-side sorting.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "selectable",
              "description": "Adds a checkbox column with a select-all header checkbox (indeterminate when partially selected). Space toggles selection from the keyboard. Emits `arc-select` with the selected row indices.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "virtual",
              "description": "Enables virtual scrolling for large datasets. Only visible rows plus an overscan buffer are rendered, keeping performance constant regardless of row count.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "rowHeight",
              "description": "Height in pixels of each row when virtual scrolling is enabled. Must match the actual rendered row height for correct scroll calculations.",
              "value": {
                "type": "number",
                "default": "40"
              }
            },
            {
              "name": "overscan",
              "description": "Rows rendered above and below the visible window when `virtual` is on, to cover fast scrolling. Raising it trades DOM nodes for fewer blank rows on a fling; lowering it does the reverse. Never negative.",
              "value": {
                "type": "number",
                "default": "5"
              }
            },
            {
              "name": "density",
              "description": "Row density. `compact` reduces cell padding for dense data displays. Absorbed from `arc-table`.",
              "value": {
                "type": "'default' | 'compact'",
                "default": "'default'"
              }
            },
            {
              "name": "striped",
              "description": "Alternating row backgrounds. On by default, which is what this grid has always drawn; `no-striped` turns them off, which is what an unstriped `arc-table` looked like.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-sort",
              "type": "CustomEvent",
              "description": "Fired when the user changes sorting. detail: { sort } with the full multi-sort array in priority order"
            },
            {
              "name": "arc-select",
              "type": "CustomEvent",
              "description": "Fired when row selection changes. detail: { value, selectedIndices } — sorted indices into the original rows array"
            },
            {
              "name": "arc-cell-change",
              "type": "CustomEvent",
              "description": "Fired when an inline cell edit is committed. detail: { rowIndex, key, value, row } — rowIndex refers to the original rows array"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "columns",
                "description": "Column definitions. Each entry maps a `key` in your row objects to a rendered column with a `label` header. Optional flags enable sorting, inline editing, and inline-start-edge pinning per column; `width` sets a fixed CSS width (required for accurate pinned offsets) and `align` controls text alignment. Pinned columns are always displayed first. Set via JavaScript property.",
                "type": "Array<{key:string,label:string,sortable?:boolean,editable?:boolean,pinned?:boolean,width?:string,align?:string}>"
              },
              {
                "name": "rows",
                "description": "The data array. Each object becomes a row keyed by column `key`. The grid works on an internal shallow copy — sorting and inline edits never mutate the array you pass in. Set via JavaScript property; reassigning it resets selection and any open editor.",
                "type": "Array<Record<string, any>>"
              },
              {
                "name": "sort",
                "description": "Multi-sort state in priority order. Clicking a sortable header cycles it asc → desc → none; Shift+click appends it as a secondary sort. When more than one sort is active, headers show a direction arrow plus priority number. Set this property to pre-sort the grid.",
                "type": "Array<{key:string,direction:'asc'|'desc'}>"
              },
              {
                "name": "manualSort",
                "description": "Skips internal sorting. Rows render in the order given, while headers still cycle the `sort` state and emit `arc-sort` — use this to implement server-side sorting.",
                "type": "boolean"
              },
              {
                "name": "selectable",
                "description": "Adds a checkbox column with a select-all header checkbox (indeterminate when partially selected). Space toggles selection from the keyboard. Emits `arc-select` with the selected row indices.",
                "type": "boolean"
              },
              {
                "name": "virtual",
                "description": "Enables virtual scrolling for large datasets. Only visible rows plus an overscan buffer are rendered, keeping performance constant regardless of row count.",
                "type": "boolean"
              },
              {
                "name": "rowHeight",
                "description": "Height in pixels of each row when virtual scrolling is enabled. Must match the actual rendered row height for correct scroll calculations.",
                "type": "number"
              },
              {
                "name": "overscan",
                "description": "Rows rendered above and below the visible window when `virtual` is on, to cover fast scrolling. Raising it trades DOM nodes for fewer blank rows on a fling; lowering it does the reverse. Never negative.",
                "type": "number"
              },
              {
                "name": "density",
                "description": "Row density. `compact` reduces cell padding for dense data displays. Absorbed from `arc-table`.",
                "type": "'default' | 'compact'"
              },
              {
                "name": "striped",
                "description": "Alternating row backgrounds. On by default, which is what this grid has always drawn; `no-striped` turns them off, which is what an unstriped `arc-table` looked like.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-sort",
                "type": "CustomEvent",
                "description": "Fired when the user changes sorting. detail: { sort } with the full multi-sort array in priority order"
              },
              {
                "name": "arc-select",
                "type": "CustomEvent",
                "description": "Fired when row selection changes. detail: { value, selectedIndices } — sorted indices into the original rows array"
              },
              {
                "name": "arc-cell-change",
                "type": "CustomEvent",
                "description": "Fired when an inline cell edit is committed. detail: { rowIndex, key, value, row } — rowIndex refers to the original rows array"
              }
            ]
          }
        },
        {
          "name": "arc-description-item",
          "description": "A single term/detail pair within a description list. The term is rendered as an uppercase label,\nand the default slot holds the detail content.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **item**\n- **term**\n- **detail**",
          "doc-url": "",
          "attributes": [
            {
              "name": "term",
              "description": "The key or label for this description entry, displayed as an uppercase heading.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "term",
                "description": "The key or label for this description entry, displayed as an uppercase heading.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-description-list",
          "description": "Structured term/detail pair list in a responsive grid layout with optional dividers.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **list**",
          "doc-url": "",
          "attributes": [
            {
              "name": "columns",
              "description": "Number of grid columns for laying out items side by side.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "layout",
              "description": "How each item arranges its own term and detail. `stacked` (the default) puts the term above the detail; `horizontal` puts them side by side on a shared two-column grid, so terms align down the list. This composes with `columns`, which is about how many *items* sit across — one item can be horizontal inside a three-column list.",
              "value": {
                "type": "'stacked' | 'horizontal'",
                "default": "'stacked'"
              }
            },
            {
              "name": "dividers",
              "description": "Show horizontal dividers between rows and vertical dividers between columns.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "columns",
                "description": "Number of grid columns for laying out items side by side.",
                "type": "number"
              },
              {
                "name": "layout",
                "description": "How each item arranges its own term and detail. `stacked` (the default) puts the term above the detail; `horizontal` puts them side by side on a shared two-column grid, so terms align down the list. This composes with `columns`, which is about how many *items* sit across — one item can be horizontal inside a three-column list.",
                "type": "'stacked' | 'horizontal'"
              },
              {
                "name": "dividers",
                "description": "Show horizontal dividers between rows and vertical dividers between columns.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-diff",
          "description": "Line-based text diff viewer with inline and side-by-side display modes.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **line**\n- **line-number**\n- **prefix**\n- **container**",
          "doc-url": "",
          "attributes": [
            {
              "name": "original",
              "description": "The original text to compare (split by newlines).",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "revised",
              "description": "The modified text to compare (split by newlines).",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "mode",
              "description": "Display mode: 'inline' renders changes in a single column, 'side-by-side' renders two panes in a grid.",
              "value": {
                "type": "'inline' | 'side-by-side'",
                "default": "'inline'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "original",
                "description": "The original text to compare (split by newlines).",
                "type": "string"
              },
              {
                "name": "revised",
                "description": "The modified text to compare (split by newlines).",
                "type": "string"
              },
              {
                "name": "mode",
                "description": "Display mode: 'inline' renders changes in a single column, 'side-by-side' renders two panes in a grid.",
                "type": "'inline' | 'side-by-side'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-gauge",
          "description": "Radial gauge displaying a scalar value on an arc with color-coded zones (success, warning,\nerror) and an animated sweep. The radial companion to arc-meter: same threshold semantics,\nwith the reading rendered center-stage.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **gauge**\n- **svg**\n- **track**\n- **arc**\n- **readout**\n- **value**\n- **unit**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Current gauge value. Clamped between `min` and `max`. Reflected as an attribute.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "min",
              "description": "Minimum value representing the empty end of the arc.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum value representing the full end of the arc.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "low",
              "description": "Threshold below which the value is considered low. Used for color zone calculation.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "high",
              "description": "Threshold above which the value is considered high. Used for color zone calculation.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "optimum",
              "description": "The optimal value. Determines which end of the range is \"good\" for color zone logic.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed beneath the value and used as the accessible name.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "unit",
              "description": "Unit suffix rendered after the value (e.g. \"%\", \"ms\", \"GB\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "variant",
              "description": "Arc shape: `full` is a 270-degree horseshoe, `half` a 180-degree semicircle.",
              "value": {
                "type": "'full' | 'half'",
                "default": "'full'"
              }
            },
            {
              "name": "showValue",
              "description": "Whether to render the numeric value in the center of the arc. Defaults to true; disable via the `showValue` property.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Label text displayed beneath the value and used as the accessible name.",
                "type": "string"
              },
              {
                "name": "unit",
                "description": "Unit suffix rendered after the value (e.g. \"%\", \"ms\", \"GB\").",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Current gauge value. Clamped between `min` and `max`. Reflected as an attribute.",
                "type": "number"
              },
              {
                "name": "min",
                "description": "Minimum value representing the empty end of the arc.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Maximum value representing the full end of the arc.",
                "type": "number"
              },
              {
                "name": "low",
                "description": "Threshold below which the value is considered low. Used for color zone calculation.",
                "type": "number"
              },
              {
                "name": "high",
                "description": "Threshold above which the value is considered high. Used for color zone calculation.",
                "type": "number"
              },
              {
                "name": "optimum",
                "description": "The optimal value. Determines which end of the range is \"good\" for color zone logic.",
                "type": "number"
              },
              {
                "name": "variant",
                "description": "Arc shape: `full` is a 270-degree horseshoe, `half` a 180-degree semicircle.",
                "type": "'full' | 'half'"
              },
              {
                "name": "showValue",
                "description": "Whether to render the numeric value in the center of the arc. Defaults to true; disable via the `showValue` property.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-json-tree",
          "description": "Collapsible JSON explorer with house syntax coloring — the dev-tools\ninspector for API payloads, configuration objects, and structured state.\nPure recursive rendering with zero dependencies: unlike arc-code-block it\nloads no highlighter, so it ships in the register barrel.\n---\n\n\n### **Events:**\n - **arc-toggle** - Fired when a node is expanded or collapsed, with the node path and new expanded state\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **item**\n- **row**\n- **key**\n- **value**\n- **preview**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "json",
              "description": "JSON string alternative to the data property, for attribute-only use. Parsed with try/catch; invalid input renders a small inline error state instead of throwing.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "expanded",
              "description": "How many levels open initially (default 1). As a bare boolean attribute, every level opens.",
              "value": {
                "type": "number | boolean",
                "default": "1"
              }
            },
            {
              "name": "keysQuoted",
              "description": "Render object keys with quotes. Off by default, matching devtools.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-toggle",
              "type": "CustomEvent",
              "description": "Fired when a node is expanded or collapsed, with the node path and new expanded state"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "data",
                "description": "The value to render. Set as a property for objects and arrays; takes precedence over the json attribute when both are set.",
                "type": "object"
              },
              {
                "name": "json",
                "description": "JSON string alternative to the data property, for attribute-only use. Parsed with try/catch; invalid input renders a small inline error state instead of throwing.",
                "type": "string"
              },
              {
                "name": "expanded",
                "description": "How many levels open initially (default 1). As a bare boolean attribute, every level opens.",
                "type": "number | boolean"
              },
              {
                "name": "keysQuoted",
                "description": "Render object keys with quotes. Off by default, matching devtools.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-toggle",
                "type": "CustomEvent",
                "description": "Fired when a node is expanded or collapsed, with the node path and new expanded state"
              }
            ]
          }
        },
        {
          "name": "arc-kanban",
          "description": "A drag-and-drop kanban board driven by a `columns` data array. Cards can be dragged between and\nwithin columns with the pointer, or moved entirely from the keyboard with live screen-reader\nannouncements. Column limits, tags, and descriptions are supported per card, and every move\nemits an `arc-card-move` event so the consumer can sync its source of truth.\n---\n\n\n### **Events:**\n - **arc-card-move** - Fired when a card is dropped in a new position (pointer or keyboard). detail: { cardId, fromColumn, toColumn, index } where index is the final position in the target column.\n- **arc-card-click** - Fired when a card is clicked without being dragged. detail: { cardId, columnId }.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **card-label**\n- **card-description**\n- **card**\n- **column**\n- **column-header**\n- **column-title**\n- **column-count**\n- **list**\n- **dropzone**\n- **board**",
          "doc-url": "",
          "attributes": [
            {
              "name": "columns",
              "description": "The data array that drives the board. Each entry becomes a column with a header (title plus count badge) and a list of cards. `limit` renders the count as `count/limit` and turns it error-colored when exceeded. Each card needs a unique `id` and a `label`; `description` renders below the label with a two-line clamp, and `tag` renders an arc-tag chip styled by `variant`. Set as a property, or as a JSON attribute for a board that is static. The component works on an internal copy for immediate drag feedback; sync your source of truth from `arc-card-move` and assign a new array to re-render.",
              "value": {
                "type": "Array<{id:string,title?:string,limit?:number,items:Array<{id:string,label:string,description?:string,tag?:string,variant?:string}>}>",
                "default": "[]"
              }
            },
            {
              "name": "disabled",
              "description": "Disables all pointer and keyboard interaction and dims the board.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-card-move",
              "type": "CustomEvent",
              "description": "Fired when a card is dropped in a new position (pointer or keyboard). detail: { cardId, fromColumn, toColumn, index } where index is the final position in the target column."
            },
            {
              "name": "arc-card-click",
              "type": "CustomEvent",
              "description": "Fired when a card is clicked without being dragged. detail: { cardId, columnId }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "columns",
                "description": "The data array that drives the board. Each entry becomes a column with a header (title plus count badge) and a list of cards. `limit` renders the count as `count/limit` and turns it error-colored when exceeded. Each card needs a unique `id` and a `label`; `description` renders below the label with a two-line clamp, and `tag` renders an arc-tag chip styled by `variant`. Set as a property, or as a JSON attribute for a board that is static. The component works on an internal copy for immediate drag feedback; sync your source of truth from `arc-card-move` and assign a new array to re-render.",
                "type": "Array<{id:string,title?:string,limit?:number,items:Array<{id:string,label:string,description?:string,tag?:string,variant?:string}>}>"
              },
              {
                "name": "disabled",
                "description": "Disables all pointer and keyboard interaction and dims the board.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-card-move",
                "type": "CustomEvent",
                "description": "Fired when a card is dropped in a new position (pointer or keyboard). detail: { cardId, fromColumn, toColumn, index } where index is the final position in the target column."
              },
              {
                "name": "arc-card-click",
                "type": "CustomEvent",
                "description": "Fired when a card is clicked without being dragged. detail: { cardId, columnId }."
              }
            ]
          }
        },
        {
          "name": "arc-level-meter",
          "description": "Segmented audio level meter with peak-hold — the live vertical sibling of arc-meter,\nbuilt for signal-rate updates (audio levels, buffer fill, realtime telemetry).\nSegments below the warn threshold render success-tinted, between warn and clip\nwarning-tinted, and above clip error-tinted, with the house glow on lit segments.\nA thin peak-hold line rides the highest recent level and decays toward the\ncurrent value; feed the `peak` property to drive it yourself instead.\n\nOne element is one channel. There is deliberately no stereo mode — compose two\nmeters side by side for a stereo pair, one per channel, so channel count is the\nconsumer's decision rather than a prop fork.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **meter** - The outer wrapper carrying role=\"meter\".\n- **track** - The tinted track containing segments or the continuous fill.\n- **segment** - Each discrete segment (segmented mode only).\n- **fill** - The continuous fill bar (segments=0 only).\n- **peak** - The thin peak-hold line.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Current level. Interpreted against `min` and `max`, so with the defaults (0 and 1) it is a linear fraction, and with `min=\"-60\" max=\"0\"` it is a dB reading. Values outside the range are clamped.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "min",
              "description": "Value at the empty end of the meter. Defaults to 0.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Value at the full end of the meter. Defaults to 1. Use -60..0 (or your headroom of choice) for dB scales.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "peak",
              "description": "Externally supplied peak-hold level, in the same units as `value`. When set, the component renders the hold line exactly there and does no tracking of its own. When absent, the meter tracks its own peak from incoming values, holds it briefly, then decays it toward the current level.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "orientation",
              "description": "Meter direction. Vertical (the default) fills bottom-up like a channel strip; horizontal fills from the inline start. Unknown values fall back to vertical.",
              "value": {
                "type": "'vertical' | 'horizontal'",
                "default": "'vertical'"
              }
            },
            {
              "name": "segments",
              "description": "Number of discrete segments. Defaults to 20. Set 0 for a continuous, unsegmented bar.",
              "value": {
                "type": "number",
                "default": "20"
              }
            },
            {
              "name": "warn",
              "description": "Fraction of the range (0..1) where the warning zone begins, regardless of units. Defaults to 0.75.",
              "value": {
                "type": "number",
                "default": "0.75"
              }
            },
            {
              "name": "clip",
              "description": "Fraction of the range (0..1) where the clip (error) zone begins. Defaults to 0.9.",
              "value": {
                "type": "number",
                "default": "0.9"
              }
            },
            {
              "name": "label",
              "description": "Accessible name applied as aria-label on the meter. The component renders no visible text, so this is the only name screen readers get — use something like \"Master left\" rather than \"Level\".",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Accessible name applied as aria-label on the meter. The component renders no visible text, so this is the only name screen readers get — use something like \"Master left\" rather than \"Level\".",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Current level. Interpreted against `min` and `max`, so with the defaults (0 and 1) it is a linear fraction, and with `min=\"-60\" max=\"0\"` it is a dB reading. Values outside the range are clamped.",
                "type": "number"
              },
              {
                "name": "min",
                "description": "Value at the empty end of the meter. Defaults to 0.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Value at the full end of the meter. Defaults to 1. Use -60..0 (or your headroom of choice) for dB scales.",
                "type": "number"
              },
              {
                "name": "peak",
                "description": "Externally supplied peak-hold level, in the same units as `value`. When set, the component renders the hold line exactly there and does no tracking of its own. When absent, the meter tracks its own peak from incoming values, holds it briefly, then decays it toward the current level.",
                "type": "number"
              },
              {
                "name": "orientation",
                "description": "Meter direction. Vertical (the default) fills bottom-up like a channel strip; horizontal fills from the inline start. Unknown values fall back to vertical.",
                "type": "'vertical' | 'horizontal'"
              },
              {
                "name": "segments",
                "description": "Number of discrete segments. Defaults to 20. Set 0 for a continuous, unsegmented bar.",
                "type": "number"
              },
              {
                "name": "warn",
                "description": "Fraction of the range (0..1) where the warning zone begins, regardless of units. Defaults to 0.75.",
                "type": "number"
              },
              {
                "name": "clip",
                "description": "Fraction of the range (0..1) where the clip (error) zone begins. Defaults to 0.9.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-list-item",
          "description": "Individual row within an arc-list. Supports prefix/suffix slots, a description slot for\nsecondary text, links, and selection state.\n---\n\n\n### **Events:**\n - **arc-select** - Fired when the item is activated by click. The parent arc-list dispatches the same event from this element for Enter and Space.\n\n### **Slots:**\n - **prefix**\n- _default_ - Default content.\n- **description**\n- **suffix**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **label**\n- **description**\n- **item**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Unique identifier used for selection tracking.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "selected",
              "description": "Whether this item is currently selected. Managed automatically by the parent list.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents interaction and dims the item.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "href",
              "description": "When set, renders the item as an anchor tag for navigation.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "description"
            },
            {
              "name": "suffix"
            }
          ],
          "events": [
            {
              "name": "arc-select",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the item is activated by click. The parent arc-list dispatches the same event from this element for Enter and Space."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Unique identifier used for selection tracking.",
                "type": "string"
              },
              {
                "name": "href",
                "description": "When set, renders the item as an anchor tag for navigation.",
                "type": "string"
              },
              {
                "name": "selected",
                "description": "Whether this item is currently selected. Managed automatically by the parent list.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Prevents interaction and dims the item.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-select",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the item is activated by click. The parent arc-list dispatches the same event from this element for Enter and Space."
              }
            ]
          }
        },
        {
          "name": "arc-list",
          "description": "Structured list container with optional selection, keyboard navigation, and multiple visual\nvariants. Pairs with arc-list-item for rich content rows.\n---\n\n\n### **Events:**\n - **arc-select** - Fired from the activated arc-list-item when a selectable list is driven by Enter or Space.\n- **arc-change** - Fired when the selection changes. `event.detail.value` contains the new value string.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **list**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Visual style. Bordered wraps the list in an outlined container. Separated adds bottom borders between items.",
              "value": {
                "type": "'default' | 'bordered' | 'separated'",
                "default": "'default'"
              }
            },
            {
              "name": "size",
              "description": "Controls the base font size for the list and its children.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "selectable",
              "description": "Enables selection mode. Sets `role=\"listbox\"` and manages `aria-selected` on child items.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "multiple",
              "description": "Allows multiple items to be selected simultaneously. Only applies when `selectable` is true.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "value",
              "description": "The currently selected value(s). Comma-separated when `multiple` is true. The selection itself is held as a list of values, so a value containing a comma is selected and rendered correctly; only the *serialised* multi-select string cannot represent one, since the comma is its separator. Single-select is exact for any value.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the list, applied as `aria-label`. Required when `selectable` is set so the listbox has an accessible name.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-select",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired from the activated arc-list-item when a selectable list is driven by Enter or Space."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the selection changes. `event.detail.value` contains the new value string."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The currently selected value(s). Comma-separated when `multiple` is true. The selection itself is held as a list of values, so a value containing a comma is selected and rendered correctly; only the *serialised* multi-select string cannot represent one, since the comma is its separator. Single-select is exact for any value.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible name for the list, applied as `aria-label`. Required when `selectable` is set so the listbox has an accessible name.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Visual style. Bordered wraps the list in an outlined container. Separated adds bottom borders between items.",
                "type": "'default' | 'bordered' | 'separated'"
              },
              {
                "name": "size",
                "description": "Controls the base font size for the list and its children.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "selectable",
                "description": "Enables selection mode. Sets `role=\"listbox\"` and manages `aria-selected` on child items.",
                "type": "boolean"
              },
              {
                "name": "multiple",
                "description": "Allows multiple items to be selected simultaneously. Only applies when `selectable` is true.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-select",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired from the activated arc-list-item when a selectable list is driven by Enter or Space."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the selection changes. `event.detail.value` contains the new value string."
              }
            ]
          }
        },
        {
          "name": "arc-meter",
          "description": "Semantic gauge display with color-coded fill zones (success, warning, error) based on\nconfigurable low/high/optimum thresholds.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **meter**\n- **header**\n- **label**\n- **value**\n- **track**\n- **fill**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Current meter value. Clamped between `min` and `max`. Reflected as an attribute.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "min",
              "description": "Minimum value representing the left edge (empty) of the meter.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum value representing the right edge (full) of the meter.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "low",
              "description": "Threshold below which the value is considered low. Used for color zone calculation.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "high",
              "description": "Threshold above which the value is considered high. Used for color zone calculation.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "optimum",
              "description": "The optimal value. Determines which end of the range is \"good\" for color zone logic.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed in the header row alongside the current percentage.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Label text displayed in the header row alongside the current percentage.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Current meter value. Clamped between `min` and `max`. Reflected as an attribute.",
                "type": "number"
              },
              {
                "name": "min",
                "description": "Minimum value representing the left edge (empty) of the meter.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Maximum value representing the right edge (full) of the meter.",
                "type": "number"
              },
              {
                "name": "low",
                "description": "Threshold below which the value is considered low. Used for color zone calculation.",
                "type": "number"
              },
              {
                "name": "high",
                "description": "Threshold above which the value is considered high. Used for color zone calculation.",
                "type": "number"
              },
              {
                "name": "optimum",
                "description": "The optimal value. Determines which end of the range is \"good\" for color zone logic.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-sparkline",
          "description": "Tiny inline SVG chart for embedding lightweight line or bar visualizations inside tables, stat\ncards, and dashboards. Renders from a simple comma-separated data string with no external\ncharting dependencies.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **area**\n- **line**\n- **bar**\n- **svg**",
          "doc-url": "",
          "attributes": [
            {
              "name": "data",
              "description": "Comma-separated numeric values that define the chart data points (e.g. \"10,25,18,30,22,35,28\"). Parsed into a number array at render time. Non-numeric entries are silently dropped.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "type",
              "description": "Chart type. Line renders a polyline with optional area fill; bar renders evenly spaced rectangles.",
              "value": {
                "type": "'line' | 'bar'",
                "default": "'line'"
              }
            },
            {
              "name": "color",
              "description": "CSS color override applied to strokes and fills. Accepts any valid CSS color value. Defaults to var(--accent-primary) when not set.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "width",
              "description": "SVG viewport width in pixels.",
              "value": {
                "type": "number",
                "default": "120"
              }
            },
            {
              "name": "height",
              "description": "SVG viewport height in pixels.",
              "value": {
                "type": "number",
                "default": "32"
              }
            },
            {
              "name": "fill",
              "description": "When true and type is \"line\", fills the area beneath the curve with a semi-transparent accent color.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "data",
                "description": "Comma-separated numeric values that define the chart data points (e.g. \"10,25,18,30,22,35,28\"). Parsed into a number array at render time. Non-numeric entries are silently dropped.",
                "type": "string"
              },
              {
                "name": "color",
                "description": "CSS color override applied to strokes and fills. Accepts any valid CSS color value. Defaults to var(--accent-primary) when not set.",
                "type": "string"
              },
              {
                "name": "type",
                "description": "Chart type. Line renders a polyline with optional area fill; bar renders evenly spaced rectangles.",
                "type": "'line' | 'bar'"
              },
              {
                "name": "width",
                "description": "SVG viewport width in pixels.",
                "type": "number"
              },
              {
                "name": "height",
                "description": "SVG viewport height in pixels.",
                "type": "number"
              },
              {
                "name": "fill",
                "description": "When true and type is \"line\", fills the area beneath the curve with a semi-transparent accent color.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-stat",
          "description": "Numeric statistic display with gradient value and label.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **stat**\n- **value**\n- **label**\n- **trend**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The stat value (e.g. \"99%\")",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Label below the value",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "trend",
              "description": "Shows a trend indicator arrow below the label. Empty (the default) shows none; an unrecognised value falls back to empty rather than rendering an uncoloured dash that no `:host([trend=...])` rule matches.",
              "value": {
                "type": "'' | 'up' | 'down' | 'neutral'",
                "default": "''"
              }
            },
            {
              "name": "change",
              "description": "Text displayed next to the trend arrow, typically a percentage like '+12%' or '-3.5%'.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The stat value (e.g. \"99%\")",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Label below the value",
                "type": "string"
              },
              {
                "name": "trend",
                "description": "Shows a trend indicator arrow below the label. Empty (the default) shows none; an unrecognised value falls back to empty rather than rendering an uncoloured dash that no `:host([trend=...])` rule matches.",
                "type": "'' | 'up' | 'down' | 'neutral'"
              },
              {
                "name": "change",
                "description": "Text displayed next to the trend arrow, typically a percentage like '+12%' or '-3.5%'.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-step",
          "description": "Individual step within a Stepper.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "Step label text",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Step label text",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-stepper",
          "description": "Step indicator for multi-step workflows.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **stepper**\n- **step**\n- **line**\n- **circle**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "active",
              "description": "Zero-indexed active step — steps before this index show as completed. Clamped to the range of rendered steps.",
              "value": {
                "type": "number",
                "default": "0"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "active",
                "description": "Zero-indexed active step — steps before this index show as completed. Clamped to the range of rendered steps.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-tag",
          "description": "Compact pill-shaped label with color variants, custom color support, and an optional remove\nbutton, for categorisation, filtering, and selection feedback.\n---\n\n\n### **Events:**\n - **arc-remove** - Fired when the remove button on a removable tag is clicked\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **tag**\n- **label**\n- **remove**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Color variant. Default is neutral. Primary and secondary use accent tints. Success, warning, error and info provide semantic status colors.",
              "value": {
                "type": "'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info'",
                "default": "'default'"
              }
            },
            {
              "name": "size",
              "description": "Controls the tag size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "removable",
              "description": "When true, shows a close button that fires `arc-remove` when clicked.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the tag, reducing opacity to 40% and blocking pointer events including the remove button.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "color",
              "description": "Custom color as an RGB triplet (e.g. `\"77, 126, 247\"`). When set, overrides the variant colors for border, text, background, and hover glow. Useful for data-driven category colors.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-remove",
              "type": "CustomEvent<void>",
              "description": "Fired when the remove button on a removable tag is clicked"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "color",
                "description": "Custom color as an RGB triplet (e.g. `\"77, 126, 247\"`). When set, overrides the variant colors for border, text, background, and hover glow. Useful for data-driven category colors.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Color variant. Default is neutral. Primary and secondary use accent tints. Success, warning, error and info provide semantic status colors.",
                "type": "'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info'"
              },
              {
                "name": "size",
                "description": "Controls the tag size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "removable",
                "description": "When true, shows a close button that fires `arc-remove` when clicked.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the tag, reducing opacity to 40% and blocking pointer events including the remove button.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-remove",
                "type": "CustomEvent<void>",
                "description": "Fired when the remove button on a removable tag is clicked"
              }
            ]
          }
        },
        {
          "name": "arc-timeline-item",
          "description": "Individual event within a Timeline.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "Event heading",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "date",
              "description": "Date string to display",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "description",
                "description": "Description from slotted text content"
              },
              {
                "name": "heading",
                "description": "Event heading",
                "type": "string"
              },
              {
                "name": "date",
                "description": "Date string to display",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-timeline",
          "description": "Vertical timeline with dated events.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **timeline**\n- **item**\n- **marker**\n- **dot**\n- **line**\n- **content**\n- **title**\n- **description**\n- **date**",
          "doc-url": "",
          "attributes": [
            {
              "name": "headingLevel",
              "description": "ARIA heading level for each event title. Clamped to 1 or greater: `aria-level` below 1 is invalid and is dropped by assistive technology.",
              "value": {
                "type": "number",
                "default": "3"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "headingLevel",
                "description": "ARIA heading level for each event title. Clamped to 1 or greater: `aria-level` below 1 is invalid and is dropped by assistive technology.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-uptime",
          "description": "Status-page uptime history strip: one slim tick per period, colored by\nstatus. Hovering or arrow-keying across the strip raises a tick with the\nhouse status glow and shows its detail in a small built-in bubble. Accepts\nplain uptime fractions (thresholds decide the status) or explicit status\nobjects, and renders the computed overall percentage above the track.\n---\n\n\n### **Methods:**\n - **statusOf(value)** - Map an uptime fraction to a status name; anything non-finite is none.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **uptime**\n- **summary**\n- **track**\n- **tick**\n- **detail**\n- **caption**",
          "doc-url": "",
          "attributes": [
            {
              "name": "data",
              "description": "One entry per period, oldest first. A number is an uptime fraction from 0 to 1, mapped to a status by threshold (0.99 and up is \"up\", 0.95 and up is \"degraded\", below is \"down\"). An object may carry an explicit `status` (which wins over any threshold), a `value` used for the summary math, and a `label` shown in the hover detail. An entry with neither a finite value nor a status renders as the neutral \"none\" track. Set it from script, a framework binding, or a JSON attribute.",
              "value": {
                "type": "Array<number | {value?: number, status?: 'up' | 'degraded' | 'down' | 'none', label?: string}>",
                "default": "[]"
              }
            },
            {
              "name": "start-label",
              "description": "Caption under the oldest end of the track (e.g. \"90 days ago\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "end-label",
              "description": "Caption under the newest end of the track (e.g. \"Today\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "summary",
              "description": "Whether to render the overall percentage above the track (default true; set the attribute to the string \"false\" to disable from markup). The percentage is the mean of every finite value in the data; when no entry carries a value the line is omitted regardless.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "startLabel",
                "description": "Caption under the oldest end of the track (e.g. \"90 days ago\").",
                "type": "string"
              },
              {
                "name": "endLabel",
                "description": "Caption under the newest end of the track (e.g. \"Today\").",
                "type": "string"
              },
              {
                "name": "summary",
                "description": "Whether to render the overall percentage above the track (default true; set the attribute to the string \"false\" to disable from markup). The percentage is the mean of every finite value in the data; when no entry carries a value the line is omitted regardless.",
                "type": "boolean"
              },
              {
                "name": "data",
                "description": "One entry per period, oldest first. A number is an uptime fraction from 0 to 1, mapped to a status by threshold (0.99 and up is \"up\", 0.95 and up is \"degraded\", below is \"down\"). An object may carry an explicit `status` (which wins over any threshold), a `value` used for the summary math, and a `label` shown in the hover detail. An entry with neither a finite value nor a status renders as the neutral \"none\" track. Set it from script, a framework binding, or a JSON attribute.",
                "type": "Array<number | {value?: number, status?: 'up' | 'degraded' | 'down' | 'none', label?: string}>"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-value-card",
          "description": "Horizontal card with icon and text, for values or features lists.\n---\n\n\n### **Slots:**\n - **icon**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **card**\n- **icon**\n- **title**\n- **description**",
          "doc-url": "",
          "attributes": [
            {
              "name": "icon",
              "description": "Icon text displayed beside content",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "heading",
              "description": "Card title",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "description",
              "description": "Card body text",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "icon"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "icon",
                "description": "Icon text displayed beside content",
                "type": "string"
              },
              {
                "name": "heading",
                "description": "Card title",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Card body text",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-waveform",
          "description": "Audio waveform visualization that doubles as a scrubber. Renders a peaks array as an SVG\nwaveform — the played region in accent with a soft glow, the unplayed region muted, and a\nglowing playhead line at the current position. With `interactive` set it becomes a seek\ncontrol: pointer scrubbing and keyboard arrows move the playhead, emitting `arc-input`\nwhile the gesture is in flight and `arc-change` when the value commits.\n\nThe component never touches audio itself — no AudioContext, no decoding. The consumer\ncomputes peak amplitudes (one number per bar, 0 to 1) however it likes and hands them\nover as an array. This keeps the component a pure function of its props, so it\nserver-renders and stays cheap enough for a lane of clips in a DAW timeline.\n\nThe time axis is deliberately direction-fixed: audio time flows left-to-right even in\nRTL contexts, matching every DAW, player, and editor convention.\n---\n\n\n### **Events:**\n - **arc-input** - Fired continuously while scrubbing (every pointer move and each keyboard nudge). `value` is the position fraction 0-1; `time` is seconds when `duration` is set, otherwise null. Use for live preview — updating a time display or audibly scrubbing.\n- **arc-change** - Fired once when the seek commits: on pointer release, or with each keyboard nudge. Use for the actual seek on your audio source.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **waveform** - The interactive track region wrapping the SVG and playhead.\n- **svg** - The SVG element.\n- **unplayed** - The unplayed (muted) waveform layer. Named `base` before v4, which is the name the root element takes across every component now.\n- **played** - The played (accent) waveform layer.\n- **playhead** - The playhead line.\n- **time** - The time readout row (renders only when duration is set).",
          "doc-url": "",
          "attributes": [
            {
              "name": "peaks",
              "description": "Peak amplitudes as a number array, each value 0 to 1. Set it from script, a framework binding, or a JSON attribute. Values outside the range are clamped. An empty or missing array renders an empty track.",
              "value": {
                "type": "Array",
                "default": "[]"
              }
            },
            {
              "name": "position",
              "description": "Current playhead position as a fraction of the total, 0 to 1. Not seconds: multiply by `duration` yourself if you track seconds. Updated by the component during scrubbing and reflected as an attribute.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "duration",
              "description": "Total duration in seconds. Optional; when set, time readouts render below the waveform and the slider announces times instead of percentages.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "interactive",
              "description": "Enables scrubbing. The waveform becomes a focusable slider: click or drag to seek, arrow keys to nudge, Home/End to jump. Without it the waveform is a static image.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "variant",
              "description": "Rendering style. `bars` draws discrete bar pairs mirrored around the center line; `mirror` draws a filled min/max envelope.",
              "value": {
                "type": "'bars' | 'mirror'",
                "default": "'bars'"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the waveform. Announced as the slider label when interactive, or as the image description otherwise.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: number, time: number | null }>",
              "description": "Fired continuously while scrubbing (every pointer move and each keyboard nudge). `value` is the position fraction 0-1; `time` is seconds when `duration` is set, otherwise null. Use for live preview — updating a time display or audibly scrubbing."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number, time: number | null }>",
              "description": "Fired once when the seek commits: on pointer release, or with each keyboard nudge. Use for the actual seek on your audio source."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Accessible name for the waveform. Announced as the slider label when interactive, or as the image description otherwise.",
                "type": "string"
              },
              {
                "name": "peaks",
                "description": "Peak amplitudes as a number array, each value 0 to 1. Set it from script, a framework binding, or a JSON attribute. Values outside the range are clamped. An empty or missing array renders an empty track.",
                "type": "Array"
              },
              {
                "name": "position",
                "description": "Current playhead position as a fraction of the total, 0 to 1. Not seconds: multiply by `duration` yourself if you track seconds. Updated by the component during scrubbing and reflected as an attribute.",
                "type": "number"
              },
              {
                "name": "duration",
                "description": "Total duration in seconds. Optional; when set, time readouts render below the waveform and the slider announces times instead of percentages.",
                "type": "number"
              },
              {
                "name": "interactive",
                "description": "Enables scrubbing. The waveform becomes a focusable slider: click or drag to seek, arrow keys to nudge, Home/End to jump. Without it the waveform is a static image.",
                "type": "boolean"
              },
              {
                "name": "variant",
                "description": "Rendering style. `bars` draws discrete bar pairs mirrored around the center line; `mirror` draws a filled min/max envelope.",
                "type": "'bars' | 'mirror'"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: number, time: number | null }>",
                "description": "Fired continuously while scrubbing (every pointer move and each keyboard nudge). `value` is the position fraction 0-1; `time` is seconds when `duration` is set, otherwise null. Use for live preview — updating a time display or audibly scrubbing."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number, time: number | null }>",
                "description": "Fired once when the seek commits: on pointer release, or with each keyboard nudge. Use for the actual seek on your audio source."
              }
            ]
          }
        },
        {
          "name": "arc-alert",
          "description": "Contextual alert banner with five semantic variants and optional dismiss button for delivering\ntimely, prominent feedback to users.\n---\n\n\n### **Events:**\n - **arc-close** - Fired when a dismissible alert is closed\n\n### **Slots:**\n - **icon** - Replaces the built-in status glyph. Absorbed from arc-callout, whose icon was slottable.\n- _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **alert**\n- **icon**\n- **heading**\n- **content**\n- **dismiss**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Controls the semantic color palette, the icon, and — through the `ROLES` table — the ARIA role and whether the alert is announced. Use \"info\" for neutral guidance, \"tip\" for advice, \"success\" for confirmations, \"warning\" for caution states, and \"error\" for failures or blocking issues.",
              "value": {
                "type": "'info' | 'tip' | 'success' | 'warning' | 'error'",
                "default": "'info'"
              }
            },
            {
              "name": "live",
              "description": "Announcement behaviour. `auto` (the default) derives it from `variant`: error and warning are assertive, success is polite, info and tip are not announced at all. Set it explicitly when severity and urgency disagree — an `info` alert injected after a background save wants `polite`; a `warning` rendered in the initial page probably wants `off`.",
              "value": {
                "type": "'auto' | 'off' | 'polite' | 'assertive'",
                "default": "'auto'"
              }
            },
            {
              "name": "density",
              "description": "Visual density. 'compact' reduces padding and font sizes for inline or space-constrained usage.",
              "value": {
                "type": "'default' | 'compact'",
                "default": "'default'"
              }
            },
            {
              "name": "dismissible",
              "description": "When true, renders a close button in the top-right corner. Clicking it removes the alert from the DOM and fires an \"arc-close\" event that parent components can listen to.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "heading",
              "description": "Optional bold heading rendered above the body slot. Use it for a scannable one-line summary so users can quickly gauge the alert's importance before reading the full message.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "icon",
              "description": "Replaces the built-in status glyph. Absorbed from arc-callout, whose icon was slottable."
            },
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when a dismissible alert is closed"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Optional bold heading rendered above the body slot. Use it for a scannable one-line summary so users can quickly gauge the alert's importance before reading the full message.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Controls the semantic color palette, the icon, and — through the `ROLES` table — the ARIA role and whether the alert is announced. Use \"info\" for neutral guidance, \"tip\" for advice, \"success\" for confirmations, \"warning\" for caution states, and \"error\" for failures or blocking issues.",
                "type": "'info' | 'tip' | 'success' | 'warning' | 'error'"
              },
              {
                "name": "live",
                "description": "Announcement behaviour. `auto` (the default) derives it from `variant`: error and warning are assertive, success is polite, info and tip are not announced at all. Set it explicitly when severity and urgency disagree — an `info` alert injected after a background save wants `polite`; a `warning` rendered in the initial page probably wants `off`.",
                "type": "'auto' | 'off' | 'polite' | 'assertive'"
              },
              {
                "name": "dismissible",
                "description": "When true, renders a close button in the top-right corner. Clicking it removes the alert from the DOM and fires an \"arc-close\" event that parent components can listen to.",
                "type": "boolean"
              },
              {
                "name": "density",
                "description": "Visual density. 'compact' reduces padding and font sizes for inline or space-constrained usage.",
                "type": "'default' | 'compact'"
              }
            ],
            "events": [
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when a dismissible alert is closed"
              }
            ]
          }
        },
        {
          "name": "arc-announcement",
          "description": "ARIA live-region wrapper with no visual output. Announces dynamic content changes to screen\nreaders. Zero visual footprint — pure accessibility utility.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **region**",
          "doc-url": "",
          "attributes": [
            {
              "name": "politeness",
              "description": "Controls the ARIA live region politeness level. Polite waits for the screen reader to finish before announcing; assertive interrupts immediately.",
              "value": {
                "type": "'polite' | 'assertive'",
                "default": "'polite'"
              }
            },
            {
              "name": "message",
              "description": "The text to announce to screen readers. Each time this property changes, a new announcement is triggered.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "message",
                "description": "The text to announce to screen readers. Each time this property changes, a new announcement is triggered.",
                "type": "string"
              },
              {
                "name": "politeness",
                "description": "Controls the ARIA live region politeness level. Polite waits for the screen reader to finish before announcing; assertive interrupts immediately.",
                "type": "'polite' | 'assertive'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-banner",
          "description": "Full-width persistent strip pinned to viewport or section top. Uses semantic variants like alert\nbut edge-to-edge with no border-radius and a subtle gradient wash.\n---\n\n\n### **Events:**\n - **arc-close** - Fired when a dismissible banner is closed by the user\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **banner**\n- **icon**\n- **message**\n- **dismiss**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Controls the semantic color palette and icon. Use \"info\" for neutral announcements, \"success\" for positive confirmations, \"warning\" for caution states, and \"error\" for outages or critical failures.",
              "value": {
                "type": "'info' | 'success' | 'warning' | 'error'",
                "default": "'info'"
              }
            },
            {
              "name": "dismissible",
              "description": "When true, renders a close button on the right side. Clicking it collapses the banner and fires an \"arc-close\" event.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "sticky",
              "description": "When true, pins the banner to the top of the viewport with position: sticky so it remains visible as the user scrolls.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when a dismissible banner is closed by the user"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "variant",
                "description": "Controls the semantic color palette and icon. Use \"info\" for neutral announcements, \"success\" for positive confirmations, \"warning\" for caution states, and \"error\" for outages or critical failures.",
                "type": "'info' | 'success' | 'warning' | 'error'"
              },
              {
                "name": "dismissible",
                "description": "When true, renders a close button on the right side. Clicking it collapses the banner and fires an \"arc-close\" event.",
                "type": "boolean"
              },
              {
                "name": "sticky",
                "description": "When true, pins the banner to the top of the viewport with position: sticky so it remains visible as the user scrolls.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when a dismissible banner is closed by the user"
              }
            ]
          }
        },
        {
          "name": "arc-command-group",
          "description": "Groups CommandItems under a small uppercase heading in the results list. Items inside a group\nstill filter and keyboard-navigate as one flat list; headings disappear when none of their items\nmatch.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "Heading text displayed above the group’s items.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Heading text displayed above the group’s items.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-command-item",
          "description": "Action item inside a CommandPalette.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "shortcut",
              "description": "Keyboard shortcut hint",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "icon",
              "description": "Name of the icon to display before the item label.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "keywords",
              "description": "Extra space-separated terms the search filter matches against but never displays — e.g. keywords=\"dialog popup\" on a Modal item.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "description",
              "description": "Secondary line shown under the label and matched by search. Use it for the sentence that tells two similar results apart; a docs site can put the matching passage here so a query finds page content rather than only page titles.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "value",
              "description": "Stable identifier carried on the arc-select detail. Defaults to the label, which is fine until two items share one — give anything a handler must act on its own value rather than matching against display text.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label"
              },
              {
                "name": "selectionValue",
                "description": "What arc-select reports. Falls back to the label so an item that never sets\n`value` behaves as it always did."
              },
              {
                "name": "shortcut",
                "description": "Keyboard shortcut hint",
                "type": "string"
              },
              {
                "name": "icon",
                "description": "Name of the icon to display before the item label.",
                "type": "string"
              },
              {
                "name": "keywords",
                "description": "Extra space-separated terms the search filter matches against but never displays — e.g. keywords=\"dialog popup\" on a Modal item.",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Secondary line shown under the label and matched by search. Use it for the sentence that tells two similar results apart; a docs site can put the matching passage here so a query finds page content rather than only page titles.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Stable identifier carried on the arc-select detail. Defaults to the label, which is fine until two items share one — give anything a handler must act on its own value rather than matching against display text.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-command-palette",
          "description": "Spotlight-style command palette with fuzzy search and keyboard shortcuts.\n\nMatching is fuzzy and ranked — see shared/fuzzy-match.js for the scoring.\n\"cmdpal\" finds \"Command Palette\", terms may be typed in any order, and\nresults come back best-first rather than in DOM order, with the matched\ncharacters marked. Items are searched on their label, their `keywords`, and\ntheir `description`; the description is also the second line the palette\nrenders, which is what lets a consumer search page content rather than only\npage titles.\n---\n\n\n### **Events:**\n - **arc-select** - Fired when a command item is selected. `detail.value` is the item's `value`, falling back to its label.\n- **arc-close** - Fired when the palette closes\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **item**\n- **match**\n- **description**\n- **dialog** - The palette panel. The scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--palette-backdrop` custom property.\n- **search**\n- **input**\n- **results**\n- **empty**\n- **group-heading**\n- **footer**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls whether the palette is visible. When set to true, the dialog animates in, the search input auto-focuses, and body scroll is locked. Set to false to close.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text displayed in the search input when the query is empty.",
              "value": {
                "type": "string",
                "default": "'Type a command...'"
              }
            },
            {
              "name": "max-results",
              "description": "How many ranked results to render. Truncation happens after ranking, so what survives is the best of the set. Raise it for a short command list; the default suits a large one.",
              "value": {
                "type": "number",
                "default": "50"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-select",
              "type": "CustomEvent<{ value: string, item: { label: string, shortcut: string, value: string } }>",
              "description": "Fired when a command item is selected. `detail.value` is the item's `value`, falling back to its label."
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the palette closes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "placeholder",
                "description": "Placeholder text displayed in the search input when the query is empty.",
                "type": "string"
              },
              {
                "name": "maxResults",
                "description": "How many ranked results to render. Truncation happens after ranking, so what survives is the best of the set. Raise it for a short command list; the default suits a large one.",
                "type": "number"
              },
              {
                "name": "open",
                "description": "Controls whether the palette is visible. When set to true, the dialog animates in, the search input auto-focuses, and body scroll is locked. Set to false to close.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-select",
                "type": "CustomEvent<{ value: string, item: { label: string, shortcut: string, value: string } }>",
                "description": "Fired when a command item is selected. `detail.value` is the item's `value`, falling back to its label."
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the palette closes"
              }
            ]
          }
        },
        {
          "name": "arc-confirm",
          "description": "Confirmation prompt, in both of the shapes a confirmation needs.\n\n**Imperative:** `ArcConfirm.open({ heading, message, variant })` returns a `Promise<boolean>` —\nthe shape you want at a call site that has to decide something before continuing.\n**Declarative:** the element itself, with `open` bound and `arc-confirm`/`arc-cancel` listened\nfor — the shape you want when the prompt is part of a template.\n\nV4-SCOPE §3.3: those two are different shapes rather than duplicates of each other, which is why\nboth survive. The duplicate was the old `<arc-dialog>` — a third spelling of this same prompt,\nwith a strict subset of these props and no slot — and it merged in here. The `arc-dialog` tag\nnow names the modal primitive this is built on (renamed from `arc-modal`), and that component\nthrows in dev if it is handed `message` or `confirmLabel`, so the reuse of the name cannot fail\nquietly.\n---\n\n\n### **Events:**\n - **arc-confirm** - Fired when the user clicks the confirm button\n- **arc-cancel** - Fired when the user clicks cancel, presses Escape, or clicks the backdrop\n\n### **Slots:**\n - _default_ - Body content, for when the confirmation needs markup the `message` string cannot carry — a filename in `<code>`, an emphasized consequence, a short list of what is about to change. Falls back to `message` when nothing is slotted.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **message**\n- **cancel**\n- **confirm**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls whether the confirmation dialog is visible. For declarative usage; the imperative API manages this automatically.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "heading",
              "description": "The heading text displayed at the top of the confirmation dialog.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "message",
              "description": "The body message explaining what the user is confirming. Used as the fallback for the default slot, so it is the simplest way to set the body and the only one available to the imperative `ArcConfirm.open()` API.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "confirm-label",
              "description": "Label for the confirm button. Use a specific verb like \"Delete\" or \"Publish\" instead of generic \"OK\".",
              "value": {
                "type": "string",
                "default": "'Confirm'"
              }
            },
            {
              "name": "cancel-label",
              "description": "Label for the cancel button. Use a specific alternative like \"Keep\" or \"Go back\" when possible.",
              "value": {
                "type": "string",
                "default": "'Cancel'"
              }
            },
            {
              "name": "variant",
              "description": "Controls the confirm button style. Use \"error\" for destructive actions — the confirm button renders in the error color.",
              "value": {
                "type": "'default' | 'error'",
                "default": "'default'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Body content, for when the confirmation needs markup the `message` string cannot carry — a filename in `<code>`, an emphasized consequence, a short list of what is about to change. Falls back to `message` when nothing is slotted."
            }
          ],
          "events": [
            {
              "name": "arc-confirm",
              "type": "CustomEvent<void>",
              "description": "Fired when the user clicks the confirm button"
            },
            {
              "name": "arc-cancel",
              "type": "CustomEvent<void>",
              "description": "Fired when the user clicks cancel, presses Escape, or clicks the backdrop"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "The heading text displayed at the top of the confirmation dialog.",
                "type": "string"
              },
              {
                "name": "message",
                "description": "The body message explaining what the user is confirming. Used as the fallback for the default slot, so it is the simplest way to set the body and the only one available to the imperative `ArcConfirm.open()` API.",
                "type": "string"
              },
              {
                "name": "confirmLabel",
                "description": "Label for the confirm button. Use a specific verb like \"Delete\" or \"Publish\" instead of generic \"OK\".",
                "type": "string"
              },
              {
                "name": "cancelLabel",
                "description": "Label for the cancel button. Use a specific alternative like \"Keep\" or \"Go back\" when possible.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Controls the confirm button style. Use \"error\" for destructive actions — the confirm button renders in the error color.",
                "type": "'default' | 'error'"
              }
            ],
            "events": [
              {
                "name": "arc-confirm",
                "type": "CustomEvent<void>",
                "description": "Fired when the user clicks the confirm button"
              },
              {
                "name": "arc-cancel",
                "type": "CustomEvent<void>",
                "description": "Fired when the user clicks cancel, presses Escape, or clicks the backdrop"
              }
            ]
          }
        },
        {
          "name": "arc-connection-status",
          "description": "Auto-detects online/offline via navigator API. Offline triggers a persistent warning bar with\namber glow pulse. Reconnection auto-dismisses with success flash.\n---\n\n\n### **Events:**\n - **arc-online** - Fired when the browser regains network connectivity\n- **arc-offline** - Fired when the browser loses network connectivity\n\n### **CSS Parts:**\n - **base** - The root element.\n- **status**\n- **dot**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "online",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-online",
              "type": "CustomEvent<void>",
              "description": "Fired when the browser regains network connectivity"
            },
            {
              "name": "arc-offline",
              "type": "CustomEvent<void>",
              "description": "Fired when the browser loses network connectivity"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "online",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-online",
                "type": "CustomEvent<void>",
                "description": "Fired when the browser regains network connectivity"
              },
              {
                "name": "arc-offline",
                "type": "CustomEvent<void>",
                "description": "Fired when the browser loses network connectivity"
              }
            ]
          }
        },
        {
          "name": "arc-context-menu",
          "description": "Right-click context menu with keyboard shortcuts.\n---\n\n\n### **Events:**\n - **arc-open** - Fired when the context menu opens\n- **arc-close** - Fired when the context menu closes\n- **arc-select** - Fired when a menu item is selected\n\n### **Slots:**\n - _default_ - Default content.\n- **content**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **menu**\n- **divider**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls the visibility of the context menu. Set to true when the contextmenu event fires; set to false when the user selects an item, clicks the backdrop, or presses Escape.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "content"
            }
          ],
          "events": [
            {
              "name": "arc-open",
              "type": "CustomEvent<void>",
              "description": "Fired when the context menu opens"
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the context menu closes"
            },
            {
              "name": "arc-select",
              "type": "CustomEvent",
              "description": "Fired when a menu item is selected"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "open",
                "description": "Controls the visibility of the context menu. Set to true when the contextmenu event fires; set to false when the user selects an item, clicks the backdrop, or presses Escape.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-open",
                "type": "CustomEvent<void>",
                "description": "Fired when the context menu opens"
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the context menu closes"
              },
              {
                "name": "arc-select",
                "type": "CustomEvent",
                "description": "Fired when a menu item is selected"
              }
            ]
          }
        },
        {
          "name": "arc-conversation",
          "description": "A chat transcript: the scrollable column that holds arc-message children. Built for AI\nassistant panels — the layout, the role alignment, and the scroll behavior all assume messages\narrive while the user is reading. While the reader sits near the bottom, new or growing\nmessages keep the view pinned to the latest; once they scroll up to re-read, the transcript\nnever yanks them back down. The arc-scroll-away and arc-scroll-return events report those\ntransitions with the distance from the bottom, so a consumer can float a \"jump to latest\" chip\nand wire it to scrollToEnd().\n---\n\n\n### **Events:**\n - **arc-scroll-away** - Fired once when the reader scrolls up out of the near-bottom zone of the transcript. detail.value is the distance from the bottom in pixels.\n- **arc-scroll-return** - Fired once when the reader comes back within the near-bottom zone. detail.value is the distance from the bottom in pixels.\n\n### **Methods:**\n - **scrollToEnd(): _void_** - Scroll the transcript to its newest message.\n\n### **Slots:**\n - _default_ - Default content: the arc-message children making up the transcript.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **conversation**",
          "doc-url": "",
          "attributes": [
            {
              "name": "autoScroll",
              "description": "Follow new content: when a message is added or grows while the reader is near the bottom, scroll to keep the latest visible. A reader who has scrolled up is never pulled back down. Defaults to true; set the property to false to leave scrolling entirely to the consumer.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content: the arc-message children making up the transcript."
            }
          ],
          "events": [
            {
              "name": "arc-scroll-away",
              "type": "CustomEvent<{value: number}>",
              "description": "Fired once when the reader scrolls up out of the near-bottom zone of the transcript. detail.value is the distance from the bottom in pixels."
            },
            {
              "name": "arc-scroll-return",
              "type": "CustomEvent<{value: number}>",
              "description": "Fired once when the reader comes back within the near-bottom zone. detail.value is the distance from the bottom in pixels."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "autoScroll",
                "description": "Follow new content: when a message is added or grows while the reader is near the bottom, scroll to keep the latest visible. A reader who has scrolled up is never pulled back down. Defaults to true; set the property to false to leave scrolling entirely to the consumer.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-scroll-away",
                "type": "CustomEvent<{value: number}>",
                "description": "Fired once when the reader scrolls up out of the near-bottom zone of the transcript. detail.value is the distance from the bottom in pixels."
              },
              {
                "name": "arc-scroll-return",
                "type": "CustomEvent<{value: number}>",
                "description": "Fired once when the reader comes back within the near-bottom zone. detail.value is the distance from the bottom in pixels."
              }
            ]
          }
        },
        {
          "name": "arc-dialog",
          "description": "General-purpose modal overlay on the platform's `<dialog>`: the browser's focus containment,\ninert background, Escape handling and top layer, with the library's sizing, header/body/footer\nstructure and cancelable close contract on top.\n\nNamed `arc-modal` before v4. The rename is V4-SCOPE §2.4 — the element is a dialog, the platform\ncalls it a dialog, and `modal` names one of its behaviours rather than what it is. `arc-modal`\nstays as a deprecated alias for the whole of v4.\n\n**This is not the confirm prompt that used to be called `arc-dialog`.** That one is\n`<arc-confirm>` now, and it absorbed both of its old spellings. The tag name is reused here for\na different component, so this one throws in dev when it is handed `message` or `confirmLabel` —\nthe two props that would otherwise be silently ignored, leaving an empty panel.\n---\n\n\n### **Events:**\n - **arc-close** - Fired when the dialog closes. Cancelable: `preventDefault()` vetoes the close.\n- **arc-open** - Fired when the dialog opens\n\n### **Slots:**\n - **header**\n- _default_ - Default content.\n- **footer**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **dialog** - The dialog panel. Same element as `base`; the scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--dialog-backdrop` and `--dialog-backdrop-filter` custom properties.\n- **header**\n- **close**\n- **body**\n- **footer**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls the visible state of the dialog. Set to `true` to open it and move focus inside; set to `false` to run the exit animation and restore focus to wherever it came from.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "heading",
              "description": "Text displayed in the header bar, and the dialog's accessible name. Keep it short and action-oriented (e.g. \"Delete Project\" rather than \"Are you sure?\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Controls the maximum width of the dialog panel. `sm` (400px) is ideal for simple confirmations, `md` (560px) for standard forms, and `lg` (720px) for content-heavy dialogs with tables or multi-column layouts.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "fullscreen",
              "description": "Makes the dialog fill the entire viewport. Useful for mobile forms or complex workflows.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "dismissible",
              "description": "When `true`, renders the built-in X close button and allows dismissal via Escape key and backdrop click. Set to `false` for critical decisions the user must resolve through the footer buttons. Note the default: a dialog is dismissible unless you say otherwise, where an alert is not dismissible unless you say so — the name is the convention, the default belongs to the component.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [
            {
              "name": "header"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "footer"
            }
          ],
          "events": [
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the dialog closes. Cancelable: `preventDefault()` vetoes the close."
            },
            {
              "name": "arc-open",
              "type": "CustomEvent<void>",
              "description": "Fired when the dialog opens"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Text displayed in the header bar, and the dialog's accessible name. Keep it short and action-oriented (e.g. \"Delete Project\" rather than \"Are you sure?\").",
                "type": "string"
              },
              {
                "name": "open",
                "description": "Controls the visible state of the dialog. Set to `true` to open it and move focus inside; set to `false` to run the exit animation and restore focus to wherever it came from.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the maximum width of the dialog panel. `sm` (400px) is ideal for simple confirmations, `md` (560px) for standard forms, and `lg` (720px) for content-heavy dialogs with tables or multi-column layouts.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "dismissible",
                "description": "When `true`, renders the built-in X close button and allows dismissal via Escape key and backdrop click. Set to `false` for critical decisions the user must resolve through the footer buttons. Note the default: a dialog is dismissible unless you say otherwise, where an alert is not dismissible unless you say so — the name is the convention, the default belongs to the component.",
                "type": "boolean"
              },
              {
                "name": "fullscreen",
                "description": "Makes the dialog fill the entire viewport. Useful for mobile forms or complex workflows.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the dialog closes. Cancelable: `preventDefault()` vetoes the close."
              },
              {
                "name": "arc-open",
                "type": "CustomEvent<void>",
                "description": "Fired when the dialog opens"
              }
            ]
          }
        },
        {
          "name": "arc-dropdown-menu",
          "description": "Menu dropdown triggered by a button with keyboard navigation.\n---\n\n\n### **Events:**\n - **arc-close** - Fired when the dropdown closes\n- **arc-select** - Fired when a menu item is selected\n\n### **Slots:**\n - _default_ - Default content.\n- **trigger**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **divider**\n- **item**\n- **shortcut**\n- **trigger**\n- **panel**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls whether the menu panel is visible. Toggled by clicking the trigger. Set to false when the user selects an item, clicks outside, or presses Escape.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "trigger"
            }
          ],
          "events": [
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the dropdown closes"
            },
            {
              "name": "arc-select",
              "type": "CustomEvent",
              "description": "Fired when a menu item is selected"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "open",
                "description": "Controls whether the menu panel is visible. Toggled by clicking the trigger. Set to false when the user selects an item, clicks outside, or presses Escape.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the dropdown closes"
              },
              {
                "name": "arc-select",
                "type": "CustomEvent",
                "description": "Fired when a menu item is selected"
              }
            ]
          }
        },
        {
          "name": "arc-hover-card",
          "description": "Card that appears on hover with a delay.\n---\n\n\n### **Events:**\n - **arc-open** - Fired when the hover card becomes visible\n- **arc-close** - Fired when the hover card hides\n\n### **Slots:**\n - _default_ - Default content.\n- **content**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **trigger**\n- **card**",
          "doc-url": "",
          "attributes": [
            {
              "name": "position",
              "description": "Controls which side of the trigger the card appears on. The card is centered along the perpendicular axis using CSS transforms.",
              "value": {
                "type": "'bottom' | 'top' | 'left' | 'right'",
                "default": "'bottom'"
              }
            },
            {
              "name": "open-delay",
              "description": "Milliseconds to wait after hover/focus before showing the card. Prevents accidental activation during fast cursor movement.",
              "value": {
                "type": "number",
                "default": "400"
              }
            },
            {
              "name": "close-delay",
              "description": "Milliseconds to wait after the cursor leaves the trigger before hiding the card. Moving into the card cancels this timer.",
              "value": {
                "type": "number",
                "default": "300"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "content"
            }
          ],
          "events": [
            {
              "name": "arc-open",
              "type": "CustomEvent<void>",
              "description": "Fired when the hover card becomes visible"
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the hover card hides"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "openDelay",
                "description": "Milliseconds to wait after hover/focus before showing the card. Prevents accidental activation during fast cursor movement.",
                "type": "number"
              },
              {
                "name": "closeDelay",
                "description": "Milliseconds to wait after the cursor leaves the trigger before hiding the card. Moving into the card cancels this timer.",
                "type": "number"
              },
              {
                "name": "position",
                "description": "Controls which side of the trigger the card appears on. The card is centered along the perpendicular axis using CSS transforms.",
                "type": "'bottom' | 'top' | 'left' | 'right'"
              }
            ],
            "events": [
              {
                "name": "arc-open",
                "type": "CustomEvent<void>",
                "description": "Fired when the hover card becomes visible"
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the hover card hides"
              }
            ]
          }
        },
        {
          "name": "arc-loading-overlay",
          "description": "Semi-transparent surface-overlay with backdrop blur covering a container or page. Centers a\nspinner with optional progress text.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **overlay**\n- **spinner**\n- **message**",
          "doc-url": "",
          "attributes": [
            {
              "name": "active",
              "description": "Controls whether the loading overlay is visible. When true, the overlay fades in and blocks interaction with the content behind it.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "message",
              "description": "Optional text displayed below the spinner. Use it to communicate what is loading or the current progress step.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "global",
              "description": "When true, the overlay uses fixed positioning to cover the entire viewport instead of just its parent container. Includes a focus trap in this mode.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "message",
                "description": "Optional text displayed below the spinner. Use it to communicate what is loading or the current progress step.",
                "type": "string"
              },
              {
                "name": "active",
                "description": "Controls whether the loading overlay is visible. When true, the overlay fades in and blocks interaction with the content behind it.",
                "type": "boolean"
              },
              {
                "name": "global",
                "description": "When true, the overlay uses fixed positioning to cover the entire viewport instead of just its parent container. Includes a focus trap in this mode.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-message",
          "description": "One message in a conversation transcript. The speaker attribute decides the voice: user messages\nsit at the inline end on a faint accent tint, assistant messages sit at the inline start on a\nneutral surface, and system messages run centered, muted and small. The default slot is the\nmessage body — append text to it to stream a reply in — and with the markdown attribute set,\nthat slotted text renders through arc-markdown, re-rendering as the text grows. A pending\nmessage shows the typing indicator in place of its body. Slot an avatar for either speaker if\nthe product wants faces; none is built in.\n---\n\n\n### **Slots:**\n - _default_ - The message body. Text when markdown is set; any markup otherwise.\n- **avatar** - An optional avatar beside the bubble; the component ships none of its own.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **message**\n- **meta**\n- **bubble**",
          "doc-url": "",
          "attributes": [
            {
              "name": "speaker",
              "description": "Whose message this is. \"user\" aligns to the inline end on an accent-tinted surface, \"assistant\" to the inline start on a neutral surface, and \"system\" runs centered and muted for notices in the transcript's own voice. An unrecognized value renders as \"user\".",
              "value": {
                "type": "'user' | 'assistant' | 'system'",
                "default": "'user'"
              }
            },
            {
              "name": "author",
              "description": "Display name shown in the muted meta line above the bubble. Omit it and the meta line only appears when a timestamp is set.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "timestamp",
              "description": "When the message was sent, as an ISO 8601 string. Rendered as house relative time (\"3 minutes ago\") through arc-time-ago, with the absolute date on its title.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "pending",
              "description": "Renders the typing indicator — three pulsing dots — in place of the body while a reply is being produced. Under prefers-reduced-motion the dots give way to a static ellipsis.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "markdown",
              "description": "Render the slotted text through the house markdown renderer. The slot's text content is the source; it re-parses whenever the slot changes, so streaming into the slot streams through the renderer. When false, slotted content renders as-is.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "The message body. Text when markdown is set; any markup otherwise."
            },
            {
              "name": "avatar",
              "description": "An optional avatar beside the bubble; the component ships none of its own."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "author",
                "description": "Display name shown in the muted meta line above the bubble. Omit it and the meta line only appears when a timestamp is set.",
                "type": "string"
              },
              {
                "name": "timestamp",
                "description": "When the message was sent, as an ISO 8601 string. Rendered as house relative time (\"3 minutes ago\") through arc-time-ago, with the absolute date on its title.",
                "type": "string"
              },
              {
                "name": "speaker",
                "description": "Whose message this is. \"user\" aligns to the inline end on an accent-tinted surface, \"assistant\" to the inline start on a neutral surface, and \"system\" runs centered and muted for notices in the transcript's own voice. An unrecognized value renders as \"user\".",
                "type": "'user' | 'assistant' | 'system'"
              },
              {
                "name": "pending",
                "description": "Renders the typing indicator — three pulsing dots — in place of the body while a reply is being produced. Under prefers-reduced-motion the dots give way to a static ellipsis.",
                "type": "boolean"
              },
              {
                "name": "markdown",
                "description": "Render the slotted text through the house markdown renderer. The slot's text content is the source; it re-parses whenever the slot changes, so streaming into the slot streams through the renderer. When false, slotted content renders as-is.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-notification-panel",
          "description": "Notification dropdown panel triggered by a button.\n---\n\n\n### **Events:**\n - **arc-open** - Fired when the notification panel opens\n- **arc-close** - Fired when the notification panel closes\n\n### **Slots:**\n - **trigger**\n- **header**\n- _default_ - Default content.\n- **footer**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **trigger**\n- **panel**\n- **header**\n- **body**\n- **footer**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls whether the notification panel is visible. Toggle this programmatically or let the built-in trigger click handler manage it.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "position",
              "description": "Horizontal alignment of the panel relative to the trigger element. Use top-right when the trigger is near the right edge of the viewport.",
              "value": {
                "type": "'top-right' | 'top-left'",
                "default": "'top-right'"
              }
            },
            {
              "name": "max-height",
              "description": "Maximum height of the scrollable body area. Prevents long notification lists from overflowing the viewport.",
              "value": {
                "type": "string",
                "default": "'400px'"
              }
            }
          ],
          "slots": [
            {
              "name": "trigger"
            },
            {
              "name": "header"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "footer"
            }
          ],
          "events": [
            {
              "name": "arc-open",
              "type": "CustomEvent<void>",
              "description": "Fired when the notification panel opens"
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the notification panel closes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "maxHeight",
                "description": "Maximum height of the scrollable body area. Prevents long notification lists from overflowing the viewport.",
                "type": "string"
              },
              {
                "name": "open",
                "description": "Controls whether the notification panel is visible. Toggle this programmatically or let the built-in trigger click handler manage it.",
                "type": "boolean"
              },
              {
                "name": "position",
                "description": "Horizontal alignment of the panel relative to the trigger element. Use top-right when the trigger is near the right edge of the viewport.",
                "type": "'top-right' | 'top-left'"
              }
            ],
            "events": [
              {
                "name": "arc-open",
                "type": "CustomEvent<void>",
                "description": "Fired when the notification panel opens"
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the notification panel closes"
              }
            ]
          }
        },
        {
          "name": "arc-popover",
          "description": "Floating content panel anchored to a trigger element, with four placement positions and\nautomatic outside-click dismissal.\n---\n\n\n### **Events:**\n - **arc-open** - Fired when the popover opens.\n- **arc-close** - Fired when the popover closes.\n\n### **Slots:**\n - **trigger**\n- _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **trigger**\n- **panel**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Whether the popover panel is currently visible. Reflected as an attribute.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "position",
              "description": "Placement of the panel relative to the trigger element.",
              "value": {
                "type": "'top' | 'bottom' | 'left' | 'right'",
                "default": "'bottom'"
              }
            },
            {
              "name": "trigger",
              "description": "Reserved for future trigger-mode configuration (click, hover, manual).",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "trigger"
            },
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-open",
              "type": "CustomEvent",
              "description": "Fired when the popover opens."
            },
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the popover closes."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "trigger",
                "description": "Reserved for future trigger-mode configuration (click, hover, manual).",
                "type": "string"
              },
              {
                "name": "open",
                "description": "Whether the popover panel is currently visible. Reflected as an attribute.",
                "type": "boolean"
              },
              {
                "name": "position",
                "description": "Placement of the panel relative to the trigger element.",
                "type": "'top' | 'bottom' | 'left' | 'right'"
              }
            ],
            "events": [
              {
                "name": "arc-open",
                "type": "CustomEvent",
                "description": "Fired when the popover opens."
              },
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the popover closes."
              }
            ]
          }
        },
        {
          "name": "arc-progress",
          "description": "Progress indicator as a bar or spinner, with determinate and indeterminate modes. Shows\ncompletion state for uploads, installations, and long-running operations.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **progress**\n- **label**\n- **spinner**\n- **value**\n- **track**\n- **fill**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Current completion percentage from 0 to 100. Only meaningful in determinate mode. The bar fills proportionally and aria-valuenow updates to match, giving screen readers a live reading.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "variant",
              "description": "Selects the visual shape. Bar renders a horizontal track with a fill that grows from left to right — best for wide containers and known percentages. Spinner renders a circular indicator suited to compact inline or button contexts.",
              "value": {
                "type": "'bar' | 'spinner'",
                "default": "'bar'"
              }
            },
            {
              "name": "size",
              "description": "Controls the thickness of the bar track or the diameter of the spinner. Small (sm) fits inside table cells and tight layouts. Medium (md) is the standard default. Large (lg) is appropriate for page-level or hero loading states.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "indeterminate",
              "description": "When true, the bar pulses or the spinner loops without a fixed endpoint. Use this when the total work is unknown. Switch to determinate (indeterminate=false) and set a value as soon as real progress data becomes available.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "showValue",
              "description": "Displays the current percentage value next to the label.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Accessible label text applied as aria-label on the underlying progressbar role element. This is the only way screen readers can convey the purpose of the indicator. Always provide a meaningful label such as \"Uploading report.pdf\" rather than a generic \"Loading\".",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Accessible label text applied as aria-label on the underlying progressbar role element. This is the only way screen readers can convey the purpose of the indicator. Always provide a meaningful label such as \"Uploading report.pdf\" rather than a generic \"Loading\".",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Current completion percentage from 0 to 100. Only meaningful in determinate mode. The bar fills proportionally and aria-valuenow updates to match, giving screen readers a live reading.",
                "type": "number"
              },
              {
                "name": "variant",
                "description": "Selects the visual shape. Bar renders a horizontal track with a fill that grows from left to right — best for wide containers and known percentages. Spinner renders a circular indicator suited to compact inline or button contexts.",
                "type": "'bar' | 'spinner'"
              },
              {
                "name": "size",
                "description": "Controls the thickness of the bar track or the diameter of the spinner. Small (sm) fits inside table cells and tight layouts. Medium (md) is the standard default. Large (lg) is appropriate for page-level or hero loading states.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "indeterminate",
                "description": "When true, the bar pulses or the spinner loops without a fixed endpoint. Use this when the total work is unknown. Switch to determinate (indeterminate=false) and set a value as soon as real progress data becomes available.",
                "type": "boolean"
              },
              {
                "name": "showValue",
                "description": "Displays the current percentage value next to the label.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-sheet",
          "description": "A sliding overlay panel that emerges from the bottom or right edge of the viewport, with a\nblurred backdrop, header, scrollable body, and footer slot.\n---\n\n\n### **Events:**\n - **arc-close** - Fired when the sheet closes\n- **arc-open** - Fired when the sheet opens\n\n### **Slots:**\n - **header**\n- _default_ - Default content.\n- **footer**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **close**\n- **panel** - The sliding panel. The scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--sheet-backdrop` and `--sheet-backdrop-filter` custom properties.\n- **handle**\n- **header**\n- **body**\n- **footer**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls whether the sheet is visible. Reflected as an attribute and toggleable programmatically.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "side",
              "description": "Which edge the panel slides in from. Bottom sheets have a max-height of 80vh; right sheets are 400px wide.",
              "value": {
                "type": "'bottom' | 'right'",
                "default": "'bottom'"
              }
            },
            {
              "name": "heading",
              "description": "Text displayed in the header row. Also used as the `aria-label` for the dialog panel.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "header"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "footer"
            }
          ],
          "events": [
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the sheet closes"
            },
            {
              "name": "arc-open",
              "type": "CustomEvent<void>",
              "description": "Fired when the sheet opens"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Text displayed in the header row. Also used as the `aria-label` for the dialog panel.",
                "type": "string"
              },
              {
                "name": "open",
                "description": "Controls whether the sheet is visible. Reflected as an attribute and toggleable programmatically.",
                "type": "boolean"
              },
              {
                "name": "side",
                "description": "Which edge the panel slides in from. Bottom sheets have a max-height of 80vh; right sheets are 400px wide.",
                "type": "'bottom' | 'right'"
              }
            ],
            "events": [
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the sheet closes"
              },
              {
                "name": "arc-open",
                "type": "CustomEvent<void>",
                "description": "Fired when the sheet opens"
              }
            ]
          }
        },
        {
          "name": "arc-toast",
          "description": "Stack-managed notification toasts with auto-dismiss, variant-colored indicators, configurable\nposition, smooth enter/exit animations, and the stacking policy that used to live in a separate\narc-toast-manager: a cap on how many show at once, a FIFO queue for the overflow, and\ndeduplication of repeated messages.\n\nQueueing belongs here rather than in a wrapper. As a separate component it could only reach\narc-toast's public surface, so a duplicate of a *visible* toast had to be dismissed and re-shown\nto gain its \"(×N)\" suffix — a visible flicker for what is conceptually a counter increment. Owning\nthe render state makes that an in-place update.\n\nEvery method has a document-level event beside it, so a consumer who cannot\nreach the element — a framework wrapper that exposes no handle, a module with\nno reference to the page's toast host — can still drive it:\n`arc-toast` (show), `arc-toast-update`, `arc-toast-complete`,\n`arc-toast-dismiss` and `arc-toast-clear`. Pass `detail.id` to `arc-toast` to\nname the toast yourself; the other four take that id back. A CustomEvent's\n`detail` is never cloned, so an `action` callback survives the trip.\n---\n\n\n### **Events:**\n - **arc-queue-overflow** - Fired when the queue exceeds queueLimit and the oldest queued entries are dropped. detail: { dropped }.\n- **arc-queue-change** - Fired whenever the visible or queued count changes. detail: { visible, queued }.\n- **arc-complete** - Fired when a progress toast is completed with complete(id). detail: { id }.\n- **arc-cancel** - Fired when the user clicks a progress toast's cancel button. detail: { id }.\n- **arc-action** - Fired when the user clicks a toast's action button, before it dismisses. detail: { id }. Absorbed from arc-snackbar, whose action was reachable as an event as well as the `action` callback — a callback cannot be attached declaratively.\n- **arc-close** - Fired when a toast notification is dismissed. detail: { id } — the id show() returned.\n\n### **Methods:**\n - **show(options: _{ id?: number|string, message?: string, variant?: 'info' | 'success' | 'warning' | 'error', duration?: number, persistent?: boolean, progress?: number, action?: () => void, actionLabel?: string, onCancel?: () => void }_): _number|string_** - Show a toast, or coalesce it into an identical one that is already showing.\n\nPassing `progress` puts the toast in progress mode, absorbed from\narc-progress-toast in 4.2: it renders a track beneath the message, exempts\nitself from dedupe and from the auto-dismiss timer, and — given `onCancel`\n— offers a cancel button that fires `arc-cancel`. Move the bar with\n`updateToast(id, { progress })` and end it with `complete(id)`, which fires\n`arc-complete`. The mode is chosen here and is not switchable afterwards: a\ntrack appearing mid-life would relayout a notification the reader is\nalready reading.\n\n`action` and `actionLabel` arrive from arc-snackbar the same way. The label\nrenders a ghost button; a click runs the callback and fires `arc-action`\nbefore the toast dismisses.\n- **dismiss(id: _number|string_): _void_** - Dismiss a toast by the id show() returned, whether it is visible or still\nqueued. Unknown ids are ignored.\n- **clear(): _void_** - Dismiss everything on screen and discard the queue.\n- **updateToast(id: _number|string_, changes: _{ progress?: number, message?: string }_): _void_** - Move a progress toast's bar, its message, or both. Unknown ids are ignored,\nmatching dismiss().\n\nNamed `updateToast` rather than `update` because `update` is Lit's — the\nname arc-progress-toast used, and the reason it also carried a do-nothing\n`update(changedProps) { super.update(changedProps); }` override that read\nas if it meant something.\n- **complete(id: _number|string_): _void_** - Finish a progress toast: dismiss it and fire `arc-complete`.\n\nDistinct from `dismiss()` on purpose — the operation finishing and the user\nclosing the toast are different events, and a consumer waiting on the first\nshould not be woken by the second.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **toast**\n- **action**\n- **dismiss**\n- **track**\n- **fill**\n- **cancel**",
          "doc-url": "",
          "attributes": [
            {
              "name": "position",
              "description": "Anchors the toast stack to a fixed edge of the viewport. Top-right is the most conventional position for web applications. Bottom positions work well for media players or editors where the top area is occupied by toolbars.",
              "value": {
                "type": "'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center'",
                "default": "'top-right'"
              }
            },
            {
              "name": "duration",
              "description": "Time in milliseconds before a toast auto-dismisses. Applies as the default for every show() call but can be overridden per-toast via the duration option in the show() payload. Set to 0 to disable auto-dismiss entirely, requiring the user to click the close button.",
              "value": {
                "type": "number",
                "default": "4000"
              }
            },
            {
              "name": "max-visible",
              "description": "Maximum toasts on screen at once (attribute: max-visible). Further show() calls queue FIFO and release as visible toasts dismiss. Set to 0 for no cap.",
              "value": {
                "type": "number",
                "default": "3"
              }
            },
            {
              "name": "dedupe",
              "description": "When true, a show() whose message and variant match a visible or queued toast is coalesced: the existing toast gains a \"(×N)\" counter and a fresh timer instead of a second toast appearing. Set the property to false from JS to disable.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "queueLimit",
              "description": "Maximum queued (not visible) toasts (attribute: queue-limit). Beyond it the oldest queued entries are dropped and arc-queue-overflow fires with the drop count.",
              "value": {
                "type": "number",
                "default": "20"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-queue-overflow",
              "type": "CustomEvent",
              "description": "Fired when the queue exceeds queueLimit and the oldest queued entries are dropped. detail: { dropped }."
            },
            {
              "name": "arc-queue-change",
              "type": "CustomEvent",
              "description": "Fired whenever the visible or queued count changes. detail: { visible, queued }."
            },
            {
              "name": "arc-complete",
              "type": "CustomEvent",
              "description": "Fired when a progress toast is completed with complete(id). detail: { id }."
            },
            {
              "name": "arc-cancel",
              "type": "CustomEvent",
              "description": "Fired when the user clicks a progress toast's cancel button. detail: { id }."
            },
            {
              "name": "arc-action",
              "type": "CustomEvent",
              "description": "Fired when the user clicks a toast's action button, before it dismisses. detail: { id }. Absorbed from arc-snackbar, whose action was reachable as an event as well as the `action` callback — a callback cannot be attached declaratively."
            },
            {
              "name": "arc-close",
              "type": "CustomEvent",
              "description": "Fired when a toast notification is dismissed. detail: { id } — the id show() returned."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "duration",
                "description": "Time in milliseconds before a toast auto-dismisses. Applies as the default for every show() call but can be overridden per-toast via the duration option in the show() payload. Set to 0 to disable auto-dismiss entirely, requiring the user to click the close button.",
                "type": "number"
              },
              {
                "name": "maxVisible",
                "description": "Maximum toasts on screen at once (attribute: max-visible). Further show() calls queue FIFO and release as visible toasts dismiss. Set to 0 for no cap.",
                "type": "number"
              },
              {
                "name": "position",
                "description": "Anchors the toast stack to a fixed edge of the viewport. Top-right is the most conventional position for web applications. Bottom positions work well for media players or editors where the top area is occupied by toolbars.",
                "type": "'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center'"
              },
              {
                "name": "dedupe",
                "description": "When true, a show() whose message and variant match a visible or queued toast is coalesced: the existing toast gains a \"(×N)\" counter and a fresh timer instead of a second toast appearing. Set the property to false from JS to disable.",
                "type": "boolean"
              },
              {
                "name": "queueLimit",
                "description": "Maximum queued (not visible) toasts (attribute: queue-limit). Beyond it the oldest queued entries are dropped and arc-queue-overflow fires with the drop count.",
                "type": "number"
              }
            ],
            "events": [
              {
                "name": "arc-queue-overflow",
                "type": "CustomEvent",
                "description": "Fired when the queue exceeds queueLimit and the oldest queued entries are dropped. detail: { dropped }."
              },
              {
                "name": "arc-queue-change",
                "type": "CustomEvent",
                "description": "Fired whenever the visible or queued count changes. detail: { visible, queued }."
              },
              {
                "name": "arc-complete",
                "type": "CustomEvent",
                "description": "Fired when a progress toast is completed with complete(id). detail: { id }."
              },
              {
                "name": "arc-cancel",
                "type": "CustomEvent",
                "description": "Fired when the user clicks a progress toast's cancel button. detail: { id }."
              },
              {
                "name": "arc-action",
                "type": "CustomEvent",
                "description": "Fired when the user clicks a toast's action button, before it dismisses. detail: { id }. Absorbed from arc-snackbar, whose action was reachable as an event as well as the `action` callback — a callback cannot be attached declaratively."
              },
              {
                "name": "arc-close",
                "type": "CustomEvent",
                "description": "Fired when a toast notification is dismissed. detail: { id } — the id show() returned."
              }
            ]
          }
        },
        {
          "name": "arc-tooltip",
          "description": "Contextual hint that appears on hover or focus, providing supplementary information without\ncluttering the UI. Supports four placement positions and a configurable show delay.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **trigger**\n- **popup**",
          "doc-url": "",
          "attributes": [
            {
              "name": "content",
              "description": "The plain-text string displayed inside the tooltip popup. Keep this concise — one short phrase that describes the trigger element or provides a supplementary hint. HTML is not supported; for rich content, use the Popover component instead.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "position",
              "description": "Controls which side of the trigger the tooltip appears on. Top is the most common default. Switch to bottom, left, or right when the trigger sits near a viewport edge or when the surrounding layout makes another direction more natural.",
              "value": {
                "type": "'top' | 'bottom' | 'left' | 'right'",
                "default": "'top'"
              }
            },
            {
              "name": "delay",
              "description": "Time in milliseconds to wait after mouseenter or focusin before the tooltip becomes visible. The default of 200 ms prevents accidental activation during casual pointer movement. Increase to 400-600 ms in dense toolbars; avoid setting to 0 as it creates a jittery experience.",
              "value": {
                "type": "number",
                "default": "200"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "content",
                "description": "The plain-text string displayed inside the tooltip popup. Keep this concise — one short phrase that describes the trigger element or provides a supplementary hint. HTML is not supported; for rich content, use the Popover component instead.",
                "type": "string"
              },
              {
                "name": "delay",
                "description": "Time in milliseconds to wait after mouseenter or focusin before the tooltip becomes visible. The default of 200 ms prevents accidental activation during casual pointer movement. Increase to 400-600 ms in dense toolbars; avoid setting to 0 as it creates a jittery experience.",
                "type": "number"
              },
              {
                "name": "position",
                "description": "Controls which side of the trigger the tooltip appears on. Top is the most common default. Switch to bottom, left, or right when the trigger sits near a viewport edge or when the surrounding layout makes another direction more natural.",
                "type": "'top' | 'bottom' | 'left' | 'right'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-button-group",
          "description": "Connects multiple buttons into a single visual unit with shared borders and collapsed radii.\nSupports horizontal and vertical orientations.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **group**",
          "doc-url": "",
          "attributes": [
            {
              "name": "orientation",
              "description": "Layout direction. Vertical stacks buttons top-to-bottom.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "size",
              "description": "Size cascaded to all child buttons.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "variant",
              "description": "Button variant cascaded to all children (e.g., \"ghost\", \"outline\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "variant",
                "description": "Button variant cascaded to all children (e.g., \"ghost\", \"outline\").",
                "type": "string"
              },
              {
                "name": "orientation",
                "description": "Layout direction. Vertical stacks buttons top-to-bottom.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "size",
                "description": "Size cascaded to all child buttons.",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-button",
          "description": "Primary call-to-action element with three visual variants that map to action hierarchy. Supports\nprefix and suffix slots for icons. Renders as an anchor when given an href, making it ideal for\nnavigation-driven actions across landing pages, toolbars, and forms.\n---\n\n\n### **Slots:**\n - **prefix**\n- _default_ - Default content. Slotting a single `<a>` as the only child adopts it as the button's control — the recommended form for links that must work before hydration or without JavaScript, since the anchor is real HTML in the initial markup. Put any icons inside that anchor; the `prefix`/`suffix` slots and `::part(button)` do not apply in this form.\n- **suffix**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **button**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Controls the visual weight and emphasis. Primary is a filled button with a neon glow hover suited for the top-level CTA. Secondary uses a bordered outline for supporting actions. Ghost renders with no border or background, ideal for low-priority or tertiary actions.",
              "value": {
                "type": "'primary' | 'secondary' | 'ghost'",
                "default": "'primary'"
              }
            },
            {
              "name": "size",
              "description": "Sets the button size. Large (lg) is intended for hero sections and high-impact areas. Medium (md) is the default for general UI. Small (sm) fits compact toolbars, table rows, and inline contexts.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "href",
              "description": "When provided, the button renders as an <a> element instead of a <button>, making it a navigational link. This is the recommended approach for any action that takes the user to a new page or section.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, dims the button and prevents all pointer and keyboard interaction. Applies reduced opacity and removes hover/focus effects. Consider pairing with a tooltip that explains why the action is unavailable.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "loading",
              "description": "Shows a spinner and disables the button. Use for async operations like form submission or API calls.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "type",
              "description": "Sets the HTML button type attribute. Use `submit` inside forms to trigger native form submission, or `reset` to clear form fields. Only applies when no `href` is set (link buttons ignore this).",
              "value": {
                "type": "'button' | 'submit' | 'reset'",
                "default": "'button'"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix"
            },
            {
              "name": "",
              "description": "Default content. Slotting a single `<a>` as the only child adopts it as the button's control — the recommended form for links that must work before hydration or without JavaScript, since the anchor is real HTML in the initial markup. Put any icons inside that anchor; the `prefix`/`suffix` slots and `::part(button)` do not apply in this form."
            },
            {
              "name": "suffix"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "href",
                "description": "When provided, the button renders as an <a> element instead of a <button>, making it a navigational link. This is the recommended approach for any action that takes the user to a new page or section.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Controls the visual weight and emphasis. Primary is a filled button with a neon glow hover suited for the top-level CTA. Secondary uses a bordered outline for supporting actions. Ghost renders with no border or background, ideal for low-priority or tertiary actions.",
                "type": "'primary' | 'secondary' | 'ghost'"
              },
              {
                "name": "size",
                "description": "Sets the button size. Large (lg) is intended for hero sections and high-impact areas. Medium (md) is the default for general UI. Small (sm) fits compact toolbars, table rows, and inline contexts.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "disabled",
                "description": "When true, dims the button and prevents all pointer and keyboard interaction. Applies reduced opacity and removes hover/focus effects. Consider pairing with a tooltip that explains why the action is unavailable.",
                "type": "boolean"
              },
              {
                "name": "loading",
                "description": "Shows a spinner and disables the button. Use for async operations like form submission or API calls.",
                "type": "boolean"
              },
              {
                "name": "type",
                "description": "Sets the HTML button type attribute. Use `submit` inside forms to trigger native form submission, or `reset` to clear form fields. Only applies when no `href` is set (link buttons ignore this).",
                "type": "'button' | 'submit' | 'reset'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-calendar",
          "description": "Interactive month-view calendar grid for date selection with min/max constraints, keyboard\nnavigation, and today highlighting.\n---\n\n\n### **Events:**\n - **arc-month-change** - Fired when the visible month or year changes via the navigation buttons.\n- **arc-change** - Fired when a date is selected. `event.detail.value` contains the ISO date string (YYYY-MM-DD).\n\n### **CSS Parts:**\n - **base** - The root element.\n- **calendar**\n- **header**\n- **nav-prev**\n- **title**\n- **nav-next**\n- **grid**\n- **dow**\n- **day**",
          "doc-url": "",
          "attributes": [
            {
              "name": "locale",
              "description": "BCP 47 tag used for month and weekday names. Defaults to the document's `lang`, then the browser's language.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "firstDayOfWeek",
              "description": "Which day the week starts on, 1 = Monday … 7 = Sunday. 0 (the default) follows the locale's own convention. An unrecognised value falls back to 0 rather than reaching weekdayOffset() and reordering the week arbitrarily.",
              "value": {
                "type": "0|1|2|3|4|5|6|7",
                "default": "0"
              }
            },
            {
              "name": "value",
              "description": "The selected date as an ISO string (YYYY-MM-DD). Empty string means no date is selected.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "min",
              "description": "Minimum selectable date as an ISO string. Days before this date are disabled.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "max",
              "description": "Maximum selectable date as an ISO string. Days after this date are disabled.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "month",
              "description": "The currently displayed month (0-based, 0=January). Defaults to the current month. Clamped to 0-11: an out-of-range month reached `new Date(year, month)`, which silently rolls into another year.",
              "value": {
                "type": "number"
              }
            },
            {
              "name": "year",
              "description": "The currently displayed year. Defaults to the current year.",
              "value": {
                "type": "number"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-month-change",
              "type": "CustomEvent<{ month: number, year: number }>",
              "description": "Fired when the visible month or year changes via the navigation buttons."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when a date is selected. `event.detail.value` contains the ISO date string (YYYY-MM-DD)."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "locale",
                "description": "BCP 47 tag used for month and weekday names. Defaults to the document's `lang`, then the browser's language.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The selected date as an ISO string (YYYY-MM-DD). Empty string means no date is selected.",
                "type": "string"
              },
              {
                "name": "min",
                "description": "Minimum selectable date as an ISO string. Days before this date are disabled.",
                "type": "string"
              },
              {
                "name": "max",
                "description": "Maximum selectable date as an ISO string. Days after this date are disabled.",
                "type": "string"
              },
              {
                "name": "month",
                "description": "The currently displayed month (0-based, 0=January). Defaults to the current month. Clamped to 0-11: an out-of-range month reached `new Date(year, month)`, which silently rolls into another year.",
                "type": "number"
              },
              {
                "name": "year",
                "description": "The currently displayed year. Defaults to the current year.",
                "type": "number"
              },
              {
                "name": "firstDayOfWeek",
                "description": "Which day the week starts on, 1 = Monday … 7 = Sunday. 0 (the default) follows the locale's own convention. An unrecognised value falls back to 0 rather than reaching weekdayOffset() and reordering the week arbitrarily.",
                "type": "0|1|2|3|4|5|6|7"
              }
            ],
            "events": [
              {
                "name": "arc-month-change",
                "type": "CustomEvent<{ month: number, year: number }>",
                "description": "Fired when the visible month or year changes via the navigation buttons."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when a date is selected. `event.detail.value` contains the ISO date string (YYYY-MM-DD)."
              }
            ]
          }
        },
        {
          "name": "arc-checkbox",
          "description": "Multi-select form control supporting checked, indeterminate, and disabled states. Ideal for\npreferences, bulk-selection patterns, and consent forms where users need to toggle one or more\nindependent options.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the checked state changes\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **checkbox**\n- **box**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "checked",
              "description": "Controls whether the checkbox is in its checked (selected) state. When true, a checkmark icon is rendered inside the box. Bind to this property for two-way state management in frameworks that support it.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "indeterminate",
              "description": "When true, displays a horizontal dash instead of a checkmark, representing a mixed or partially-selected state. Commonly used on a parent \"select all\" checkbox when only some children are checked. Clicking an indeterminate checkbox resolves it to fully checked.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents all pointer and keyboard interaction and applies a dimmed visual treatment. Use this for options that are unavailable due to unmet prerequisites. Pair with a tooltip or helper text to explain why the option is locked.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the checkbox size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "label",
              "description": "Visible text rendered beside the checkbox. Clicking the label toggles the checkbox, matching native HTML behavior. Keep labels short, affirmative, and action-oriented for the best readability.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "The form field name submitted when the checkbox lives inside a <form>. Required for native form submission and useful for serializing checkbox group values on the server.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "value",
              "description": "The value sent with the form when the checkbox is checked. Defaults to \"on\" if omitted, matching native checkbox behavior. Set explicit values when multiple checkboxes share the same name to distinguish them in the submitted data.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ checked: boolean }>",
              "description": "Fired when the checked state changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "disabled",
                "description": "Prevents all pointer and keyboard interaction and applies a dimmed visual treatment. Use this for options that are unavailable due to unmet prerequisites. Pair with a tooltip or helper text to explain why the option is locked.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Visible text rendered beside the checkbox. Clicking the label toggles the checkbox, matching native HTML behavior. Keep labels short, affirmative, and action-oriented for the best readability.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The form field name submitted when the checkbox lives inside a <form>. Required for native form submission and useful for serializing checkbox group values on the server.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The value sent with the form when the checkbox is checked. Defaults to \"on\" if omitted, matching native checkbox behavior. Set explicit values when multiple checkboxes share the same name to distinguish them in the submitted data.",
                "type": "string"
              },
              {
                "name": "checked",
                "description": "Controls whether the checkbox is in its checked (selected) state. When true, a checkmark icon is rendered inside the box. Bind to this property for two-way state management in frameworks that support it.",
                "type": "boolean"
              },
              {
                "name": "indeterminate",
                "description": "When true, displays a horizontal dash instead of a checkmark, representing a mixed or partially-selected state. Commonly used on a parent \"select all\" checkbox when only some children are checked. Clicking an indeterminate checkbox resolves it to fully checked.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the checkbox size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ checked: boolean }>",
                "description": "Fired when the checked state changes"
              }
            ]
          }
        },
        {
          "name": "arc-chip",
          "description": "A toggleable pill-shaped element for filters, tags, or multi-select options, with a selected\nstate highlighted in accent-primary.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the chip selected state changes\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **chip**",
          "doc-url": "",
          "attributes": [
            {
              "name": "selected",
              "description": "Whether the chip is currently selected. Reflected as an attribute and toggled on click or keypress.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "value",
              "description": "Machine-readable identifier for this chip, included in the `arc-change` event detail.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string, selected: boolean }>",
              "description": "Fired when the chip selected state changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Machine-readable identifier for this chip, included in the `arc-change` event detail.",
                "type": "string"
              },
              {
                "name": "selected",
                "description": "Whether the chip is currently selected. Reflected as an attribute and toggled on click or keypress.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string, selected: boolean }>",
                "description": "Fired when the chip selected state changes"
              }
            ]
          }
        },
        {
          "name": "arc-color-picker",
          "description": "Full-featured color picker with a saturation/lightness area, hue slider, hex input, and optional\npreset swatches.\n---\n\n\n### **Events:**\n - **arc-input** - Fired continuously as the color changes, including every frame of a drag across the saturation area or hue track. Use for live previews. `event.detail.value` contains the hex string.\n- **arc-change** - Fired once the color is committed: the pointer released after a drag, a preset clicked, or a valid hex typed and blurred. Use for anything expensive. `event.detail.value` contains the hex string.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **picker**\n- **label**\n- **area**\n- **hue-track**\n- **hex-row**\n- **preview**\n- **hex-input**\n- **presets**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the swatch and trigger.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Current color as a 6-digit hex string (e.g. `#4d7ef7`). Reflected as an attribute.",
              "value": {
                "type": "string",
                "default": "'#4d7ef7'"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "presets",
              "description": "Array of hex color strings to display as quick-select swatches below the hex input.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "disabled",
              "description": "Disables all interaction, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the picker in uppercase accent font.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent",
              "description": "Fired continuously as the color changes, including every frame of a drag across the saturation area or hue track. Use for live previews. `event.detail.value` contains the hex string."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired once the color is committed: the pointer released after a drag, a preset clicked, or a valid hex typed and blurred. Use for anything expensive. `event.detail.value` contains the hex string."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Current color as a 6-digit hex string (e.g. `#4d7ef7`). Reflected as an attribute.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables all interaction, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text displayed above the picker in uppercase accent font.",
                "type": "string"
              },
              {
                "name": "presets",
                "description": "Array of hex color strings to display as quick-select swatches below the hex input.",
                "type": "string[]"
              },
              {
                "name": "readonly",
                "description": "Prevents changing the color via the area, hue slider, hex input, or swatches while the picker stays focusable and the value still submits.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the swatch and trigger.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent",
                "description": "Fired continuously as the color changes, including every frame of a drag across the saturation area or hue track. Use for live previews. `event.detail.value` contains the hex string."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired once the color is committed: the pointer released after a drag, a preset clicked, or a valid hex typed and blurred. Use for anything expensive. `event.detail.value` contains the hex string."
              }
            ]
          }
        },
        {
          "name": "arc-combobox",
          "description": "Searchable dropdown with type-ahead filtering.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on every keystroke in the filter input. `event.detail.value` contains the current query text.\n- **arc-change** - Fired when an option is selected. `event.detail.value` contains the selected option value.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **label**\n- **wrapper**\n- **input**\n- **listbox**\n- **option**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "The currently selected option value. Reflected as an attribute so it can be read from the DOM. Updated automatically when the user selects an option.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text shown in the input when no value is entered.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the input. Also used as the accessible label for the combobox.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the input and prevents interaction. The host element receives reduced opacity and pointer-events: none.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent",
              "description": "Fired on every keystroke in the filter input. `event.detail.value` contains the current query text."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when an option is selected. `event.detail.value` contains the selected option value."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The currently selected option value. Reflected as an attribute so it can be read from the DOM. Updated automatically when the user selects an option.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text shown in the input when no value is entered.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the input. Also used as the accessible label for the combobox.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the input and prevents interaction. The host element receives reduced opacity and pointer-events: none.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Prevents typing and selecting an option while the input stays focusable; the list can still be opened for viewing and the value still submits.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent",
                "description": "Fired on every keystroke in the filter input. `event.detail.value` contains the current query text."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when an option is selected. `event.detail.value` contains the selected option value."
              }
            ]
          }
        },
        {
          "name": "arc-copy-button",
          "description": "One-click copy-to-clipboard button with confirmation.\n---\n\n\n### **Events:**\n - **arc-copy** - Fired when text is successfully copied to the clipboard. `event.detail.value` contains the copied string.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **button**\n- **icon**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The text string to copy to the clipboard when the button is clicked.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the button, preventing clicks and reducing visual opacity.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-copy",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when text is successfully copied to the clipboard. `event.detail.value` contains the copied string."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The text string to copy to the clipboard when the button is clicked.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the button, preventing clicks and reducing visual opacity.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-copy",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when text is successfully copied to the clipboard. `event.detail.value` contains the copied string."
              }
            ]
          }
        },
        {
          "name": "arc-date-picker",
          "description": "Calendar-based date picker with keyboard navigation.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a date is selected\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper**\n- **label**\n- **input-wrapper**\n- **input**\n- **dropdown**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "The selected date as an ISO string (YYYY-MM-DD). Set this to pre-select a date. Updated when the user picks a date from the calendar.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "min",
              "description": "Minimum selectable date as an ISO string. Dates before this are visually dimmed and non-interactive.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "max",
              "description": "Maximum selectable date as an ISO string. Dates after this are visually dimmed and non-interactive.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text displayed in the input when no date is selected.",
              "value": {
                "type": "string",
                "default": "'Select date'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the date picker, reducing opacity and preventing the calendar from opening.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text rendered above the input in uppercase accent font styling.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "open",
              "description": "Whether the calendar dropdown is visible. Reflected so it can be opened programmatically or styled from CSS. Held at `false` while `disabled`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "locale",
              "description": "BCP 47 tag used for month and weekday names. Defaults to the document's `lang`, then the browser's language.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "first-day-of-week",
              "description": "Which day the week starts on, 1 = Monday … 7 = Sunday. Defaults to the locale's own convention, so most of the world gets Monday and the US gets Sunday without configuring anything.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when a date is selected"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The selected date as an ISO string (YYYY-MM-DD). Set this to pre-select a date. Updated when the user picks a date from the calendar.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "min",
                "description": "Minimum selectable date as an ISO string. Dates before this are visually dimmed and non-interactive.",
                "type": "string"
              },
              {
                "name": "max",
                "description": "Maximum selectable date as an ISO string. Dates after this are visually dimmed and non-interactive.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text displayed in the input when no date is selected.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the date picker, reducing opacity and preventing the calendar from opening.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text rendered above the input in uppercase accent font styling.",
                "type": "string"
              },
              {
                "name": "locale",
                "description": "BCP 47 tag used for month and weekday names. Defaults to the document's `lang`, then the browser's language.",
                "type": "string"
              },
              {
                "name": "firstDayOfWeek",
                "description": "Which day the week starts on, 1 = Monday … 7 = Sunday. Defaults to the locale's own convention, so most of the world gets Monday and the US gets Sunday without configuring anything.",
                "type": "number"
              },
              {
                "name": "open",
                "description": "Whether the calendar dropdown is visible. Reflected so it can be opened programmatically or styled from CSS. Held at `false` while `disabled`.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when a date is selected"
              }
            ]
          }
        },
        {
          "name": "arc-date-range-picker",
          "description": "Dual-calendar picker for selecting a start/end date range with presets and full keyboard\nnavigation.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a complete range is committed (second day clicked or preset applied). `detail.value` is the ISO 8601 interval string, the same shape as the `value` property; `start` and `end` carry the two ends separately.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **calendar**\n- **panel-title**\n- **day**\n- **wrapper**\n- **label**\n- **input-wrapper**\n- **input**\n- **panel**\n- **presets**\n- **preset**\n- **header**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "locale",
              "description": "BCP 47 tag used for month and weekday names. Defaults to the document's `lang`, then the browser's language.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "first-day-of-week",
              "description": "Which day the week starts on, 1 = Monday … 7 = Sunday. Defaults to the locale's own convention.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "start",
              "description": "Range start date as an ISO string (YYYY-MM-DD). Empty when unset. Set both start and end to pre-select a range.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "end",
              "description": "Range end date as an ISO string (YYYY-MM-DD). Empty when unset or while an end date is pending.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name used when the interval value is submitted with a form.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "min",
              "description": "Minimum selectable date as an ISO string. Earlier days are dimmed and non-interactive.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "max",
              "description": "Maximum selectable date as an ISO string. Later days are dimmed and non-interactive.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "months",
              "description": "Number of month panels shown in the popup. Panels sit side by side and stack vertically when the popup is too narrow.",
              "value": {
                "type": "number",
                "default": "2"
              }
            },
            {
              "name": "presets",
              "description": "Quick ranges rendered as a left rail. Each preset selects the last N days ending today and closes the popup. Hidden when empty.",
              "value": {
                "type": "Array<{label:string,days:number}>",
                "default": "[]"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text shown in the input when no range is selected.",
              "value": {
                "type": "string",
                "default": "'Select date range'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the picker, reducing opacity and preventing the popup from opening.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "description": "Marks the control invalid (valueMissing) until a complete range is selected.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text rendered above the input in uppercase accent font styling.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "open",
              "description": "Whether the calendar dropdown is visible. Reflected so it can be opened programmatically or styled from CSS. Held at `false` while `disabled`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string, start: string, end: string }>",
              "description": "Fired when a complete range is committed (second day clicked or preset applied). `detail.value` is the ISO 8601 interval string, the same shape as the `value` property; `start` and `end` carry the two ends separately."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Read-derived ISO 8601 interval (\"start/end\") when both dates are set, otherwise an empty string. This is the value submitted with forms. Assigning \"start/end\" sets both dates.",
                "type": "string"
              },
              {
                "name": "locale",
                "description": "BCP 47 tag used for month and weekday names. Defaults to the document's `lang`, then the browser's language.",
                "type": "string"
              },
              {
                "name": "firstDayOfWeek",
                "description": "Which day the week starts on, 1 = Monday … 7 = Sunday. Defaults to the locale's own convention.",
                "type": "number"
              },
              {
                "name": "start",
                "description": "Range start date as an ISO string (YYYY-MM-DD). Empty when unset. Set both start and end to pre-select a range.",
                "type": "string"
              },
              {
                "name": "end",
                "description": "Range end date as an ISO string (YYYY-MM-DD). Empty when unset or while an end date is pending.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name used when the interval value is submitted with a form.",
                "type": "string"
              },
              {
                "name": "min",
                "description": "Minimum selectable date as an ISO string. Earlier days are dimmed and non-interactive.",
                "type": "string"
              },
              {
                "name": "max",
                "description": "Maximum selectable date as an ISO string. Later days are dimmed and non-interactive.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text shown in the input when no range is selected.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the picker, reducing opacity and preventing the popup from opening.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text rendered above the input in uppercase accent font styling.",
                "type": "string"
              },
              {
                "name": "months",
                "description": "Number of month panels shown in the popup. Panels sit side by side and stack vertically when the popup is too narrow.",
                "type": "number"
              },
              {
                "name": "presets",
                "description": "Quick ranges rendered as a left rail. Each preset selects the last N days ending today and closes the popup. Hidden when empty.",
                "type": "Array<{label:string,days:number}>"
              },
              {
                "name": "required",
                "description": "Marks the control invalid (valueMissing) until a complete range is selected.",
                "type": "boolean"
              },
              {
                "name": "open",
                "description": "Whether the calendar dropdown is visible. Reflected so it can be opened programmatically or styled from CSS. Held at `false` while `disabled`.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string, start: string, end: string }>",
                "description": "Fired when a complete range is committed (second day clicked or preset applied). `detail.value` is the ISO 8601 interval string, the same shape as the `value` property; `start` and `end` carry the two ends separately."
              }
            ]
          }
        },
        {
          "name": "arc-fieldset",
          "description": "Grouped form section with legend, description, error message, and optional card variant. Wraps\nrelated inputs with native fieldset semantics.\n---\n\n\n### **Slots:**\n - **legend**\n- **actions**\n- _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **fieldset**\n- **legend**\n- **description**\n- **content**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "legend",
              "description": "Text displayed in the `<legend>` element. Also available via the `legend` slot for rich content.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "description",
              "description": "Helper text displayed below the legend.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables all child controls and dims the fieldset.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "error",
              "description": "Error message displayed below the content with `role=\"alert\"`.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "variant",
              "description": "Visual style. Card adds a surface background and shadow.",
              "value": {
                "type": "'default' | 'card'",
                "default": "'default'"
              }
            }
          ],
          "slots": [
            {
              "name": "legend"
            },
            {
              "name": "actions"
            },
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "legend",
                "description": "Text displayed in the `<legend>` element. Also available via the `legend` slot for rich content.",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Helper text displayed below the legend.",
                "type": "string"
              },
              {
                "name": "error",
                "description": "Error message displayed below the content with `role=\"alert\"`.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables all child controls and dims the fieldset.",
                "type": "boolean"
              },
              {
                "name": "variant",
                "description": "Visual style. Card adds a surface background and shadow.",
                "type": "'default' | 'card'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-file-upload",
          "description": "Drag-and-drop file upload zone with preview.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when files are added or dropped\n- **arc-remove** - Fired when a file is removed from the list\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper**\n- **dropzone**\n- **error**\n- **file-list**\n- **file-item**",
          "doc-url": "",
          "attributes": [
            {
              "name": "accept",
              "description": "Comma-separated list of accepted file types, passed directly to the native file input accept attribute. Examples: \"image/*\", \".pdf,.docx\", \"audio/mp3\".",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "multiple",
              "description": "When true, allows selecting multiple files. Each drop or browse interaction appends to the existing file list rather than replacing it.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "maxSize",
              "description": "Maximum file size in bytes. Files exceeding this limit are rejected with an inline error message. Set to 0 for no limit.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the dropzone, preventing drag-and-drop and click interactions. Reduces opacity to 0.4.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when files are added or dropped"
            },
            {
              "name": "arc-remove",
              "type": "CustomEvent",
              "description": "Fired when a file is removed from the list"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "accept",
                "description": "Comma-separated list of accepted file types, passed directly to the native file input accept attribute. Examples: \"image/*\", \".pdf,.docx\", \"audio/mp3\".",
                "type": "string"
              },
              {
                "name": "multiple",
                "description": "When true, allows selecting multiple files. Each drop or browse interaction appends to the existing file list rather than replacing it.",
                "type": "boolean"
              },
              {
                "name": "maxSize",
                "description": "Maximum file size in bytes. Files exceeding this limit are rejected with an inline error message. Set to 0 for no limit.",
                "type": "number"
              },
              {
                "name": "disabled",
                "description": "Disables the dropzone, preventing drag-and-drop and click interactions. Reduces opacity to 0.4.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when files are added or dropped"
              },
              {
                "name": "arc-remove",
                "type": "CustomEvent",
                "description": "Fired when a file is removed from the list"
              }
            ]
          }
        },
        {
          "name": "arc-form",
          "description": "Form wrapper with built-in validation, error aggregation, and submit handling. Composes Input,\nTextarea, and Button into a cohesive data-entry workflow.\n---\n\n\n### **Events:**\n - **arc-invalid** - Fired when validation fails, with error details\n- **arc-submit** - Fired on valid form submission with serialized form data\n- **arc-reset** - Fired when the form is reset via the .reset() method\n\n### **Methods:**\n - **submit(): _void_** - Submit the form as though its submit button had been pressed: validation\nruns, and `arc-submit` fires cancelably.\n\nThe path for a submit control the form cannot own — a wizard's \"Next\" in a\nparent toolbar, a keyboard shortcut — since a button outside the form does\nnot trigger it. Routed through the real `<form>` so action-mode submits\nstill navigate.\n- **reset(): _void_** - Reset every child control to the state it had when it first connected,\nand clear error display.\n\nDelegates to each control's formResetCallback — the same path a native\nform.reset() takes, which never reaches these controls because they live\nin this element's light DOM rather than inside the shadow <form>. The form\nused to blank them instead (`value = ''`, `checked = false`), which is not\nwhat reset means: a control that shipped with a default lost it, and a\nnon-string value (a multi-select's array, a date range's object) was left\nuntouched entirely.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **form**\n- **layout**\n- **errors**",
          "doc-url": "",
          "attributes": [
            {
              "name": "action",
              "description": "Form action URL for native form submission. When set, the form submits to this URL using the browser's built-in mechanism.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "method",
              "description": "HTTP method for native form submission (GET or POST). Only applies when action is set.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "novalidate",
              "description": "When true, skips built-in constraint validation on submit. Use this when you need to implement a fully custom validation flow while still leveraging Form for data serialisation.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "loading",
              "description": "Indicates an asynchronous submission is in progress. Disables the submit button and shows a loading indicator to prevent duplicate requests.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the entire form, propagating the disabled state to every child field. Useful for read-only previews or while awaiting permissions.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "errorSummary",
              "description": "When true, renders an aggregated list of validation errors above the submit area after a failed submission attempt. Set to false to handle error display manually.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-invalid",
              "type": "CustomEvent",
              "description": "Fired when validation fails, with error details"
            },
            {
              "name": "arc-submit",
              "type": "CustomEvent",
              "description": "Fired on valid form submission with serialized form data"
            },
            {
              "name": "arc-reset",
              "type": "CustomEvent<void>",
              "description": "Fired when the form is reset via the .reset() method"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "action",
                "description": "Form action URL for native form submission. When set, the form submits to this URL using the browser's built-in mechanism.",
                "type": "string"
              },
              {
                "name": "method",
                "description": "HTTP method for native form submission (GET or POST). Only applies when action is set.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the entire form, propagating the disabled state to every child field. Useful for read-only previews or while awaiting permissions.",
                "type": "boolean"
              },
              {
                "name": "novalidate",
                "description": "When true, skips built-in constraint validation on submit. Use this when you need to implement a fully custom validation flow while still leveraging Form for data serialisation.",
                "type": "boolean"
              },
              {
                "name": "loading",
                "description": "Indicates an asynchronous submission is in progress. Disables the submit button and shows a loading indicator to prevent duplicate requests.",
                "type": "boolean"
              },
              {
                "name": "errorSummary",
                "description": "When true, renders an aggregated list of validation errors above the submit area after a failed submission attempt. Set to false to handle error display manually.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-invalid",
                "type": "CustomEvent",
                "description": "Fired when validation fails, with error details"
              },
              {
                "name": "arc-submit",
                "type": "CustomEvent",
                "description": "Fired on valid form submission with serialized form data"
              },
              {
                "name": "arc-reset",
                "type": "CustomEvent<void>",
                "description": "Fired when the form is reset via the .reset() method"
              }
            ]
          }
        },
        {
          "name": "arc-hotkey",
          "description": "Invisible keyboard shortcut listener that supports modifier combos (Ctrl+K) and chord sequences\n(g i). Fires an event when the key pattern is matched.\n\nInvisible keyboard shortcut listener. Supports modifier combos (\"ctrl+k\", \"meta+shift+p\") and\nchord sequences (\"g i\" = press g, then i).\n---\n\n\n### **Events:**\n - **arc-hotkey-trigger** - Fired when the full key pattern is matched. `event.detail.keys` contains the matched pattern string.",
          "doc-url": "",
          "attributes": [
            {
              "name": "keys",
              "description": "Key pattern to match. Modifier combos use \"+\" (e.g., \"ctrl+k\"). Chords use spaces (e.g., \"g i\").",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Temporarily suspends the shortcut listener.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "global",
              "description": "When true, attaches to `window` instead of `document` and skips input/textarea filtering.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-hotkey-trigger",
              "type": "CustomEvent<{ keys: string }>",
              "description": "Fired when the full key pattern is matched. `event.detail.keys` contains the matched pattern string."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "keys",
                "description": "Key pattern to match. Modifier combos use \"+\" (e.g., \"ctrl+k\"). Chords use spaces (e.g., \"g i\").",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Temporarily suspends the shortcut listener.",
                "type": "boolean"
              },
              {
                "name": "global",
                "description": "When true, attaches to `window` instead of `document` and skips input/textarea filtering.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-hotkey-trigger",
                "type": "CustomEvent<{ keys: string }>",
                "description": "Fired when the full key pattern is matched. `event.detail.keys` contains the matched pattern string."
              }
            ]
          }
        },
        {
          "name": "arc-icon-button",
          "description": "Compact button that renders an icon with optional text label, supporting ghost, secondary, and\nprimary variants.\n---\n\n\n### **Slots:**\n - _default_ - Default content. Slotting a single `<a>` as the only child adopts it as the button's control — the recommended form for links that must work before hydration or without JavaScript. Put the icon inside that anchor; `::part(button)` does not apply in this form.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **button**",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "Name of the arc-icon to render. When empty, the default slot is used for custom icon content.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "text",
              "description": "Optional text label displayed next to the icon. When provided, the button expands from a square to a wider labeled button with uppercase styling.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "variant",
              "description": "Visual style variant. Ghost is transparent, secondary has a border with glow, primary has a solid accent-primary fill.",
              "value": {
                "type": "'ghost' | 'secondary' | 'primary'",
                "default": "'ghost'"
              }
            },
            {
              "name": "size",
              "description": "Button size controlling dimensions and icon scale. Icon-only sizes are circular: xs=28px, sm=32px, md=36px, lg=44px. The labeled form stays a rounded rectangle.",
              "value": {
                "type": "'xs' | 'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "label",
              "description": "Accessible label for the button. Falls back to `text` if not provided. Required for icon-only usage.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "href",
              "description": "When set, renders the button as an anchor tag for navigation links.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the button, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "type",
              "description": "HTML button type attribute. Only applies when `href` is not set.",
              "value": {
                "type": "string",
                "default": "'button'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content. Slotting a single `<a>` as the only child adopts it as the button's control — the recommended form for links that must work before hydration or without JavaScript. Put the icon inside that anchor; `::part(button)` does not apply in this form."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "Name of the arc-icon to render. When empty, the default slot is used for custom icon content.",
                "type": "string"
              },
              {
                "name": "text",
                "description": "Optional text label displayed next to the icon. When provided, the button expands from a square to a wider labeled button with uppercase styling.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible label for the button. Falls back to `text` if not provided. Required for icon-only usage.",
                "type": "string"
              },
              {
                "name": "href",
                "description": "When set, renders the button as an anchor tag for navigation links.",
                "type": "string"
              },
              {
                "name": "type",
                "description": "HTML button type attribute. Only applies when `href` is not set.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Visual style variant. Ghost is transparent, secondary has a border with glow, primary has a solid accent-primary fill.",
                "type": "'ghost' | 'secondary' | 'primary'"
              },
              {
                "name": "size",
                "description": "Button size controlling dimensions and icon scale. Icon-only sizes are circular: xs=28px, sm=32px, md=36px, lg=44px. The labeled form stays a rounded rectangle.",
                "type": "'xs' | 'sm' | 'md' | 'lg'"
              },
              {
                "name": "disabled",
                "description": "Disables the button, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-image-cropper",
          "description": "Crop-before-upload control with a draggable, resizable crop rectangle, aspect-ratio locking,\nzoom, and canvas export at natural image resolution.\n\nCrop-before-upload for avatar/media flows. The crop rect lives in stage coordinates; zoom scales\nthe letterboxed image around its center underneath. `getCroppedBlob()`/`getCroppedDataUrl()`\nrequire `src` to be same-origin or CORS-enabled — a tainted canvas throws with a clear message.\n---\n\n\n### **Events:**\n - **arc-crop-change** - Fired when the crop changes (drag, resize, keyboard, zoom, stage resize). `event.detail` is `{ x, y, width, height }` in natural image pixels, debounced to animation frames.\n\n### **Methods:**\n - **getCrop(): _{ x: number, y: number, width: number, height: number } | null_** - Current crop in natural image pixels, or null before the image has loaded.\n- **getCroppedBlob(type: _string_, quality: _number_): _Promise<Blob>_** - Export the crop as a Blob at natural resolution.\n- **getCroppedDataUrl(type: _string_, quality: _number_): _Promise<string>_** - Export the crop as a data URL at natural resolution.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **stage**\n- **image**\n- **skeleton**\n- **error**\n- **crop**\n- **handle**\n- **zoom**",
          "doc-url": "",
          "attributes": [
            {
              "name": "src",
              "description": "Image URL, object URL, or data URL to crop. Must be same-origin or CORS-enabled for canvas export.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "height",
              "description": "Fixed stage height in pixels. The image is letterboxed to fit.",
              "value": {
                "type": "number",
                "default": "320"
              }
            },
            {
              "name": "aspect",
              "description": "Crop aspect ratio as width/height (e.g. `1`, `16/9`). `0` allows free-form cropping.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "zoom",
              "description": "Image zoom factor, clamped to 1-4 on the property as well as on the slider. Scales the image around its center; also settable via the built-in slider.",
              "value": {
                "type": "number",
                "default": "1"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-crop-change",
              "type": "CustomEvent",
              "description": "Fired when the crop changes (drag, resize, keyboard, zoom, stage resize). `event.detail` is `{ x, y, width, height }` in natural image pixels, debounced to animation frames."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "src",
                "description": "Image URL, object URL, or data URL to crop. Must be same-origin or CORS-enabled for canvas export.",
                "type": "string"
              },
              {
                "name": "height",
                "description": "Fixed stage height in pixels. The image is letterboxed to fit.",
                "type": "number"
              },
              {
                "name": "aspect",
                "description": "Crop aspect ratio as width/height (e.g. `1`, `16/9`). `0` allows free-form cropping.",
                "type": "number"
              },
              {
                "name": "zoom",
                "description": "Image zoom factor, clamped to 1-4 on the property as well as on the slider. Scales the image around its center; also settable via the built-in slider.",
                "type": "number"
              }
            ],
            "events": [
              {
                "name": "arc-crop-change",
                "type": "CustomEvent",
                "description": "Fired when the crop changes (drag, resize, keyboard, zoom, stage resize). `event.detail` is `{ x, y, width, height }` in natural image pixels, debounced to animation frames."
              }
            ]
          }
        },
        {
          "name": "arc-inline-edit",
          "description": "Click-to-edit text: renders as plain text until activated, then swaps to a\npre-filled field. Enter or blur commits, Escape cancels. Built for track\nrenames, document titles, and other fields where a permanent input box would\nbe visual noise.\n\nThe display text inherits the surrounding typography (`font: inherit`) and\nthe edit field matches it, so the swap never changes the text's metrics —\nan inline-edit inside a heading edits at heading size, one in a table cell\nedits at cell size. This is why there is no `size` prop: sizing comes from\ncontext, and a fixed scale would fight it.\n\nWhile editing, keystrokes accumulate in an internal draft. `value` — and the\nvalue a form submits — only changes on commit, so Escape can always revert\nand a half-typed rename is never submitted. Committing an unchanged value\nfires no event at all.\n---\n\n\n### **Events:**\n - **arc-change** - Fired once on commit when the value actually changed, with the new value in detail.value.\n- **arc-cancel** - Fired when an edit is canceled (Escape or cancel()), with the retained value in detail.value. No arc-change accompanies it.\n- **arc-input** - Fired on each keystroke while editing, with the draft text in detail.value.\n\n### **Methods:**\n - **focus(options: _FocusOptions_): _void_** - Move focus to whichever element is currently the control: the field while\nediting, the display row otherwise.\n\nThe host sets no `delegatesFocus` and everything focusable lives in the\nshadow root, so `el.focus()` used to do nothing at all — silently, which\ncost a consumer a \"Rename\" menu item that appeared dead. `edit()` is the\nway *into* editing and stays that way; this is only the obvious call\nlanding where a caller expects it.\n- **edit(): _void_** - Enter edit mode: focus the field and select its text. No-op when disabled, readonly, or already editing.\n- **commit(): _void_** - Commit the current draft and leave edit mode. Fires arc-change only if the value changed.\n- **cancel(): _void_** - Discard the draft, keep the previous value, and leave edit mode. Fires arc-cancel.\n- **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **display** - The display-state button wrapping the text and pencil affordance.\n- **field** - The input or textarea shown while editing.\n- **icon** - The pencil affordance icon.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The committed text. Updated only when an edit commits (Enter or blur); keystrokes accumulate in an internal draft until then.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the control. The display state announces as \"Edit {label}\" and the edit field is labeled with it. Always provide one.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "The `name` attribute sent with form data on submission. The submitted value is the committed `value`, never an in-progress draft.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Text shown in muted italic when `value` is empty, and as the field placeholder while editing. Defaults to \"Empty\".",
              "value": {
                "type": "string",
                "default": "'Empty'"
              }
            },
            {
              "name": "multiline",
              "description": "When true, editing uses a `<textarea>`: Enter inserts a newline and Cmd/Ctrl+Enter commits. Single-line commits on plain Enter.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents activation and applies a muted treatment. The value is excluded from form submission while disabled.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired once on commit when the value actually changed, with the new value in detail.value."
            },
            {
              "name": "arc-cancel",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when an edit is canceled (Escape or cancel()), with the retained value in detail.value. No arc-change accompanies it."
            },
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on each keystroke while editing, with the draft text in detail.value."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The committed text. Updated only when an edit commits (Enter or blur); keystrokes accumulate in an internal draft until then.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible name for the control. The display state announces as \"Edit {label}\" and the edit field is labeled with it. Always provide one.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The `name` attribute sent with form data on submission. The submitted value is the committed `value`, never an in-progress draft.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Text shown in muted italic when `value` is empty, and as the field placeholder while editing. Defaults to \"Empty\".",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Prevents activation and applies a muted treatment. The value is excluded from form submission while disabled.",
                "type": "boolean"
              },
              {
                "name": "multiline",
                "description": "When true, editing uses a `<textarea>`: Enter inserts a newline and Cmd/Ctrl+Enter commits. Single-line commits on plain Enter.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Marks the field as required. An empty committed value is invalid — including in display state, which shows a subtle error tint.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Renders the display state only: the text remains focusable for reading order, but activation is inert and no pencil affordance appears.",
                "type": "boolean"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired once on commit when the value actually changed, with the new value in detail.value."
              },
              {
                "name": "arc-cancel",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when an edit is canceled (Escape or cancel()), with the retained value in detail.value. No arc-change accompanies it."
              },
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on each keystroke while editing, with the draft text in detail.value."
              }
            ]
          }
        },
        {
          "name": "arc-input-group",
          "description": "Combines an input with prefix and suffix addon slots for labels, icons, or buttons attached to\nthe input border.\n---\n\n\n### **Slots:**\n - **prefix**\n- _default_ - Default content.\n- **suffix**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **group**\n- **prefix**\n- **content**\n- **suffix**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Controls addon padding and font size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "suffix"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "size",
                "description": "Controls addon padding and font size.",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-input",
          "description": "Versatile form control supporting single-line text, email, password, and multiline textarea\nmodes with built-in label, placeholder, and validation states. Pairs with Form for complete\ndata-entry workflows.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on each keystroke with { value } detail\n- **arc-change** - Fired on blur when value has changed\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - **prefix**\n- **suffix**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **field**\n- **label**\n- **wrapper**\n- **prefix**\n- **suffix**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "type",
              "description": "The HTML input type. Controls browser validation behavior and which virtual keyboard appears on mobile devices. Ignored when `multiline` is true.",
              "value": {
                "type": "'text' | 'email' | 'tel' | 'url' | 'password'",
                "default": "'text'"
              }
            },
            {
              "name": "name",
              "description": "The `name` attribute sent with form data on submission. Also used by the Form component to track field state and validation.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the input. Automatically associated with the field via a generated id, ensuring screen readers announce it correctly.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text displayed inside the field when it is empty. Use it to show an example value -- never as a substitute for the label.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "value",
              "description": "The current value of the input. Can be set programmatically to pre-fill the field or used for controlled-component patterns. Updated internally on each keystroke.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents user interaction and applies a muted visual treatment. The field value is excluded from form submission when disabled.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required. Displays a required indicator next to the label and triggers native constraint validation on form submission.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "error",
              "description": "Error message displayed below the input. When set, the input border turns red and the error text appears.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Controls the input size. Options: 'sm', 'md', 'lg'.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "multiline",
              "description": "When true, renders a `<textarea>` instead of an `<input>`, allowing multi-row text entry. The textarea is vertically resizable by default.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "rows",
              "description": "Number of visible text rows when `multiline` is true. Controls the initial height of the textarea. Ignored for single-line inputs.",
              "value": {
                "type": "number",
                "default": "5"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix"
            },
            {
              "name": "suffix"
            }
          ],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on each keystroke with { value } detail"
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on blur when value has changed"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "The `name` attribute sent with form data on submission. Also used by the Form component to track field state and validation.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the input. Automatically associated with the field via a generated id, ensuring screen readers announce it correctly.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text displayed inside the field when it is empty. Use it to show an example value -- never as a substitute for the label.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The current value of the input. Can be set programmatically to pre-fill the field or used for controlled-component patterns. Updated internally on each keystroke.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Prevents user interaction and applies a muted visual treatment. The field value is excluded from form submission when disabled.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Error message displayed below the input. When set, the input border turns red and the error text appears.",
                "type": "string"
              },
              {
                "name": "rows",
                "description": "Number of visible text rows when `multiline` is true. Controls the initial height of the textarea. Ignored for single-line inputs.",
                "type": "number"
              },
              {
                "name": "type",
                "description": "The HTML input type. Controls browser validation behavior and which virtual keyboard appears on mobile devices. Ignored when `multiline` is true.",
                "type": "'text' | 'email' | 'tel' | 'url' | 'password'"
              },
              {
                "name": "multiline",
                "description": "When true, renders a `<textarea>` instead of an `<input>`, allowing multi-row text entry. The textarea is vertically resizable by default.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Marks the field as required. Displays a required indicator next to the label and triggers native constraint validation on form submission.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Prevents the user from editing the value while keeping the field focusable, and the value is still submitted with the form.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the input size. Options: 'sm', 'md', 'lg'.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on each keystroke with { value } detail"
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on blur when value has changed"
              }
            ]
          }
        },
        {
          "name": "arc-knob",
          "description": "Rotary knob input for continuous parameters — the control a slider can't be when the panel\nis a rack of channel strips. A 270-degree arc track fills from min to the current value with\na glowing indicator line, a monospace readout below, and synth-style interaction: vertical\ndrag to turn (Shift for fine adjustment), mouse wheel and arrow keys to step, optional\nmagnetic detents at named values.\n---\n\n\n### **Events:**\n - **arc-input** - Fired continuously while the knob is turning — every drag movement, wheel notch, or key step. Use for real-time preview such as a filter cutoff or gain applied live.\n- **arc-change** - Fired once when a turn commits: on drag release, and after each discrete wheel or key step. Use for persisting the value or triggering an expensive operation.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **knob**\n- **label**\n- **dial**\n- **track**\n- **fill**\n- **indicator**\n- **value**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the dial.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Current knob value. Reflected as an attribute and updated on user interaction.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "min",
              "description": "Minimum allowed value at the start of the arc sweep.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum allowed value at the end of the arc sweep.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "step",
              "description": "Increment granularity. The value snaps to multiples of this number.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the knob in the label typography role.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "detents",
              "description": "Snap values, as an array from script or a comma-separated attribute (for example \"0,50,100\"). While dragging, the value snaps magnetically to a detent within 2.5% of the range, and each detent renders as a tick mark around the dial. Keyboard and wheel stepping ignore detents.",
              "value": {
                "type": "number[]",
                "default": "[]"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired continuously while the knob is turning — every drag movement, wheel notch, or key step. Use for real-time preview such as a filter cutoff or gain applied live."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired once when a turn commits: on drag release, and after each discrete wheel or key step. Use for persisting the value or triggering an expensive operation."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Current knob value. Reflected as an attribute and updated on user interaction.",
                "type": "number"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text displayed above the knob in the label typography role.",
                "type": "string"
              },
              {
                "name": "format",
                "description": "`(value) => string` shaping the readout and the accessible value text, for example adding a unit suffix. Defaults to the plain number.",
                "type": "Function"
              },
              {
                "name": "min",
                "description": "Minimum allowed value at the start of the arc sweep.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Maximum allowed value at the end of the arc sweep.",
                "type": "number"
              },
              {
                "name": "step",
                "description": "Increment granularity. The value snaps to multiples of this number.",
                "type": "number"
              },
              {
                "name": "detents",
                "description": "Snap values, as an array from script or a comma-separated attribute (for example \"0,50,100\"). While dragging, the value snaps magnetically to a detent within 2.5% of the range, and each detent renders as a tick mark around the dial. Keyboard and wheel stepping ignore detents.",
                "type": "number[]"
              },
              {
                "name": "readonly",
                "description": "Prevents dragging, wheel, and key changes while the dial stays focusable and the value still submits.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the dial.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired continuously while the knob is turning — every drag movement, wheel notch, or key step. Use for real-time preview such as a filter cutoff or gain applied live."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired once when a turn commits: on drag release, and after each discrete wheel or key step. Use for persisting the value or triggering an expensive operation."
              }
            ]
          }
        },
        {
          "name": "arc-label",
          "description": "Form label with required indicator, optional description text, and tooltip slot. Pairs with any\ninput component via the `for` attribute.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n- **tooltip**\n- **description**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **label**\n- **description**",
          "doc-url": "",
          "attributes": [
            {
              "name": "for",
              "description": "ID of the target input element. Clicking the label focuses the associated control.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "description": "Shows a red asterisk (*) after the label text.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the label font size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "disabled",
              "description": "Reduces opacity and blocks pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "tooltip"
            },
            {
              "name": "description"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "for",
                "description": "ID of the target input element. Clicking the label focuses the associated control.",
                "type": "string"
              },
              {
                "name": "required",
                "description": "Shows a red asterisk (*) after the label text.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the label font size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "disabled",
                "description": "Reduces opacity and blocks pointer events.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-masked-input",
          "description": "Text field that enforces a character mask as you type — dates, card numbers,\nphone numbers, license keys. The mask's literals are typed for the user;\n`value` holds only the raw characters, and the raw value is what forms\nreceive, so the mask stays presentation.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on each accepted edit. `value` is the raw characters; `formatted` is the presentation string. A rejected character fires nothing.\n- **arc-change** - Fired on blur or Enter when the value changed, and immediately when the last mask position fills — a complete mask is a committed value, the fixed-length precedent set by OTP Input.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - **prefix**\n- **suffix**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **field**\n- **label**\n- **wrapper**\n- **prefix**\n- **suffix**\n- **hint**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "mask",
              "description": "The mask pattern. `#` accepts a digit, `A` an uppercase letter (lowercase input is uppercased), `a` any letter, `*` a letter or digit; every other character is a literal typed for the user. Examples: `##/##/####`, `#### #### #### ####`, `AAA-###`.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "value",
              "description": "The RAW accepted characters only, with no mask literals — `12042026`, never `12/04/2026`. The formatted string is presentation; read it from `formattedValue`. Programmatic values are conformed against the mask, so setting a formatted string keeps only the characters the mask accepts.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder-char",
              "description": "Character rendered in unfilled positions of the in-field hint once typing starts (for example `12/__/____`). Before any input, the native placeholder shows the full mask shape. Defaults to `_`.",
              "value": {
                "type": "string",
                "default": "'_'"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the field. Automatically associated with the field via a generated id, ensuring screen readers announce it correctly.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "The `name` attribute sent with form data on submission. The submitted value is the RAW value, without mask literals.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents user interaction and applies a muted visual treatment. The field value is excluded from form submission when disabled.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required. An empty field fails validation with valueMissing; a partially filled one fails with an \"Incomplete value\" pattern error.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "autocomplete",
              "description": "Passed through to the inner input, e.g. `cc-number` on a card field so browser autofill can offer saved cards.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "error",
              "description": "Error message displayed below the input. When set, the input border turns red and the error text appears.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Controls the input size. Options: 'sm', 'md', 'lg'.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix"
            },
            {
              "name": "suffix"
            }
          ],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string, formatted: string }>",
              "description": "Fired on each accepted edit. `value` is the raw characters; `formatted` is the presentation string. A rejected character fires nothing."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string, formatted: string }>",
              "description": "Fired on blur or Enter when the value changed, and immediately when the last mask position fills — a complete mask is a committed value, the fixed-length precedent set by OTP Input."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "formattedValue",
                "description": "The formatted presentation string — raw characters interleaved with mask\nliterals, e.g. raw 12042026 under a date mask reads 12/04/2026. Read-only:\nit is derived from value and mask, never stored, and never submitted."
              },
              {
                "name": "mask",
                "description": "The mask pattern. `#` accepts a digit, `A` an uppercase letter (lowercase input is uppercased), `a` any letter, `*` a letter or digit; every other character is a literal typed for the user. Examples: `##/##/####`, `#### #### #### ####`, `AAA-###`.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The RAW accepted characters only, with no mask literals — `12042026`, never `12/04/2026`. The formatted string is presentation; read it from `formattedValue`. Programmatic values are conformed against the mask, so setting a formatted string keeps only the characters the mask accepts.",
                "type": "string"
              },
              {
                "name": "placeholderChar",
                "description": "Character rendered in unfilled positions of the in-field hint once typing starts (for example `12/__/____`). Before any input, the native placeholder shows the full mask shape. Defaults to `_`.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the field. Automatically associated with the field via a generated id, ensuring screen readers announce it correctly.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The `name` attribute sent with form data on submission. The submitted value is the RAW value, without mask literals.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Prevents user interaction and applies a muted visual treatment. The field value is excluded from form submission when disabled.",
                "type": "boolean"
              },
              {
                "name": "autocomplete",
                "description": "Passed through to the inner input, e.g. `cc-number` on a card field so browser autofill can offer saved cards.",
                "type": "string"
              },
              {
                "name": "error",
                "description": "Error message displayed below the input. When set, the input border turns red and the error text appears.",
                "type": "string"
              },
              {
                "name": "required",
                "description": "Marks the field as required. An empty field fails validation with valueMissing; a partially filled one fails with an \"Incomplete value\" pattern error.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Prevents the user from editing the value while keeping the field focusable, and the value is still submitted with the form.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the input size. Options: 'sm', 'md', 'lg'.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string, formatted: string }>",
                "description": "Fired on each accepted edit. `value` is the raw characters; `formatted` is the presentation string. A rejected character fires nothing."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string, formatted: string }>",
                "description": "Fired on blur or Enter when the value changed, and immediately when the last mask position fills — a complete mask is a committed value, the fixed-length precedent set by OTP Input."
              }
            ]
          }
        },
        {
          "name": "arc-multi-select",
          "description": "Multi-value select with tag chips, inline search filtering, and keyboard navigation.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the selected values change\n- **arc-input** - Fired on every keystroke in the filter input. `event.detail.value` contains the current query text.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **label**\n- **control**\n- **tag**\n- **input**\n- **dropdown**\n- **option**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the control height and padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Array of selected option values. Updated when items are toggled and emitted via `arc-change`.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text shown inside the control when no items are selected and the input is empty.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the control in a small uppercase style.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the control, preventing interaction and reducing opacity to 50%.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string[] }>",
              "description": "Fired when the selected values change"
            },
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on every keystroke in the filter input. `event.detail.value` contains the current query text."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "placeholder",
                "description": "Hint text shown inside the control when no items are selected and the input is empty.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the control in a small uppercase style.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the control, preventing interaction and reducing opacity to 50%.",
                "type": "boolean"
              },
              {
                "name": "value",
                "description": "Array of selected option values. Updated when items are toggled and emitted via `arc-change`.",
                "type": "string[]"
              },
              {
                "name": "readonly",
                "description": "Prevents toggling options or removing chips while the control stays focusable; the dropdown can still be opened for viewing and the values still submit.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the control height and padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string[] }>",
                "description": "Fired when the selected values change"
              },
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on every keystroke in the filter input. `event.detail.value` contains the current query text."
              }
            ]
          }
        },
        {
          "name": "arc-number-input",
          "description": "A numeric stepper input with decrement and increment buttons flanking a central text field,\nsupporting min/max clamping, step increments, and keyboard shortcuts.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on every edit, including each keystroke while typing. Use for live previews.\n- **arc-change** - Fired when the value is committed: blur or Enter after typing, or immediately on a stepper click or arrow key, which are edit and commit in one gesture.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper**\n- **label**\n- **controls**\n- **decrement**\n- **field**\n- **increment**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Current numeric value. Reflected as an attribute and updated on user interaction.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "min",
              "description": "Minimum allowed value. The decrement button is disabled when the value reaches this limit.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum allowed value. The increment button is disabled when the value reaches this limit.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "step",
              "description": "Increment and decrement step size. Arrow keys use this value, Shift+Arrow uses 10x this value.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the control in uppercase accent font.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired on every edit, including each keystroke while typing. Use for live previews."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when the value is committed: blur or Enter after typing, or immediately on a stepper click or arrow key, which are edit and commit in one gesture."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Current numeric value. Reflected as an attribute and updated on user interaction.",
                "type": "number"
              },
              {
                "name": "step",
                "description": "Increment and decrement step size. Arrow keys use this value, Shift+Arrow uses 10x this value.",
                "type": "number"
              },
              {
                "name": "label",
                "description": "Label text displayed above the control in uppercase accent font.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "min",
                "description": "Minimum allowed value. The decrement button is disabled when the value reaches this limit.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Maximum allowed value. The increment button is disabled when the value reaches this limit.",
                "type": "number"
              },
              {
                "name": "readonly",
                "description": "Prevents value changes from typing, stepper buttons, and arrow keys while keeping the field focusable and its value submitted.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired on every edit, including each keystroke while typing. Use for live previews."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when the value is committed: blur or Enter after typing, or immediately on a stepper click or arrow key, which are edit and commit in one gesture."
              }
            ]
          }
        },
        {
          "name": "arc-password-input",
          "description": "Password entry field with a built-in visibility toggle and an optional four-segment strength\nmeter. Shares its styling and form behavior with Input, so mixed forms stay visually uniform.\n\nTrue when the password contains a 4+ run of consecutive chars (abcd, 4321). *\\/ function\nhasSequentialRun(pw) { const s = pw.toLowerCase(); let asc = 1; let desc = 1; for (let i = 1; i\n< s.length; i++) { const d = s.charCodeAt(i) - s.charCodeAt(i - 1); asc = d === 1 ? asc + 1 : 1;\ndesc = d === -1 ? desc + 1 : 1; if (asc >= 4 || desc >= 4) return true; } return false; }\nSelf-contained heuristic: 0 = empty, 1–4 = Weak…Strong. *\\/ function scorePassword(pw) { if\n(!pw) return 0; if (COMMON_PASSWORDS.has(pw.toLowerCase())) return 1; let score = 0; if\n(pw.length >= 8) score += 1; if (pw.length >= 12) score += 1; if (pw.length >= 16) score += 1;\nconst classes = (/[a-z]/.test(pw) ? 1 : 0) + (/[A-Z]/.test(pw) ? 1 : 0) + (/\\d/.test(pw) ? 1 :\n0) + (/[^A-Za-z0-9]/.test(pw) ? 1 : 0); if (classes >= 2) score += 1; if (classes >= 4) score +=\n1; if (/(.)\\1\\1/.test(pw)) score -= 1; if (hasSequentialRun(pw)) score -= 1; return Math.min(4,\nMath.max(1, score)); }\n---\n\n\n### **Events:**\n - **arc-strength-change** - Fired when the strength score changes (only while show-strength is set), with { score } detail (0-4)\n- **arc-input** - Fired on each keystroke with { value } detail\n- **arc-change** - Fired on blur when value has changed, with { value } detail\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **strength**\n- **label**\n- **field**\n- **input**\n- **toggle**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The `name` attribute sent with form data on submission. Also used by the Form component to track field state.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the field. Automatically associated with the input via a generated id.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text displayed when the field is empty. Use it for guidance, never as a substitute for the label.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "value",
              "description": "The current value of the field. Can be set programmatically; updated internally on each keystroke.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents interaction (including the visibility toggle) and applies a muted visual treatment.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required and enables native constraint validation on form submission.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "error",
              "description": "Error message displayed below the field. When set, the border turns red and the message is announced.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "size",
              "description": "Controls the field size. Options: 'sm', 'md', 'lg'.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "autocomplete",
              "description": "Passed through to the inner input. Use `new-password` on registration or change-password forms so password managers offer generation.",
              "value": {
                "type": "string",
                "default": "'current-password'"
              }
            },
            {
              "name": "showStrength",
              "description": "Renders a four-segment strength meter with a Weak / Fair / Good / Strong label under the field, scored by a built-in heuristic (length, character variety, common-pattern penalties).",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-strength-change",
              "type": "CustomEvent",
              "description": "Fired when the strength score changes (only while show-strength is set), with { score } detail (0-4)"
            },
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on each keystroke with { value } detail"
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on blur when value has changed, with { value } detail"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "The `name` attribute sent with form data on submission. Also used by the Form component to track field state.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the field. Automatically associated with the input via a generated id.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text displayed when the field is empty. Use it for guidance, never as a substitute for the label.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The current value of the field. Can be set programmatically; updated internally on each keystroke.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Prevents interaction (including the visibility toggle) and applies a muted visual treatment.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Error message displayed below the field. When set, the border turns red and the message is announced.",
                "type": "string"
              },
              {
                "name": "autocomplete",
                "description": "Passed through to the inner input. Use `new-password` on registration or change-password forms so password managers offer generation.",
                "type": "string"
              },
              {
                "name": "required",
                "description": "Marks the field as required and enables native constraint validation on form submission.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the field size. Options: 'sm', 'md', 'lg'.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "showStrength",
                "description": "Renders a four-segment strength meter with a Weak / Fair / Good / Strong label under the field, scored by a built-in heuristic (length, character variety, common-pattern penalties).",
                "type": "boolean"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-strength-change",
                "type": "CustomEvent",
                "description": "Fired when the strength score changes (only while show-strength is set), with { score } detail (0-4)"
              },
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on each keystroke with { value } detail"
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on blur when value has changed, with { value } detail"
              }
            ]
          }
        },
        {
          "name": "arc-pin-input",
          "description": "One-character-per-box input for PINs, OTPs, and verification codes with auto-advance, paste\nsupport, and optional masking.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on every character entry or deletion. `event.detail.value` contains the current partial value.\n- **arc-change** - Fired when the pin is complete — every box filled. That is the commit for a fixed-length value.\n- **arc-complete** - Fired alongside arc-change when all boxes are filled. The more specific name, kept for consumers that auto-submit.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **pin**\n- **label**\n- **boxes**\n- **box**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the digit boxes.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "length",
              "description": "Number of input boxes to render. Determines the expected code length.",
              "value": {
                "type": "number",
                "default": "4"
              }
            },
            {
              "name": "value",
              "description": "Current combined value across all boxes. Reflected as an attribute.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables all boxes, reducing opacity to 40% and blocking input.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "mask",
              "description": "When true, obscures entered characters with dots for sensitive codes.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "type",
              "description": "Character validation mode. `number` allows digits only, `alphanumeric` allows letters and digits, `text` allows any character.",
              "value": {
                "type": "'number' | 'alphanumeric' | 'text'",
                "default": "'number'"
              }
            },
            {
              "name": "separator",
              "description": "Inserts a visual dash separator every N boxes. Set to 0 to disable separators.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the input boxes in uppercase accent font.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent",
              "description": "Fired on every character entry or deletion. `event.detail.value` contains the current partial value."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when the pin is complete — every box filled. That is the commit for a fixed-length value."
            },
            {
              "name": "arc-complete",
              "type": "CustomEvent",
              "description": "Fired alongside arc-change when all boxes are filled. The more specific name, kept for consumers that auto-submit."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Current combined value across all boxes. Reflected as an attribute.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables all boxes, reducing opacity to 40% and blocking input.",
                "type": "boolean"
              },
              {
                "name": "separator",
                "description": "Inserts a visual dash separator every N boxes. Set to 0 to disable separators.",
                "type": "number"
              },
              {
                "name": "label",
                "description": "Label text displayed above the input boxes in uppercase accent font.",
                "type": "string"
              },
              {
                "name": "length",
                "description": "Number of input boxes to render. Determines the expected code length.",
                "type": "number"
              },
              {
                "name": "type",
                "description": "Character validation mode. `number` allows digits only, `alphanumeric` allows letters and digits, `text` allows any character.",
                "type": "'number' | 'alphanumeric' | 'text'"
              },
              {
                "name": "mask",
                "description": "When true, obscures entered characters with dots for sensitive codes.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Prevents entering, deleting, or pasting characters while the boxes stay focusable and the value still submits.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the digit boxes.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent",
                "description": "Fired on every character entry or deletion. `event.detail.value` contains the current partial value."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when the pin is complete — every box filled. That is the commit for a fixed-length value."
              },
              {
                "name": "arc-complete",
                "type": "CustomEvent",
                "description": "Fired alongside arc-change when all boxes are filled. The more specific name, kept for consumers that auto-submit."
              }
            ]
          }
        },
        {
          "name": "arc-radio-group",
          "description": "Single-select option group with arrow-key navigation and ARIA radiogroup semantics. Ideal for\npricing tiers, settings panels, and any context where exactly one choice must be made from a\nvisible set of options.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the selected radio value changes\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **group**\n- **circle**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The currently selected value. Must match one of the child arc-radio value attributes. Setting this property programmatically updates the visual selection and the internal aria-checked state.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "The form field name submitted with the selected value. Required for native form integration — without it, the selection will not appear in FormData.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, disables all options in the group. The component becomes non-interactive: arrow-key navigation is suppressed, click events are ignored, and the group is excluded from the Tab order.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the radio button and label size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "orientation",
              "description": "Controls the layout direction of the radio options. Vertical stacks options top-to-bottom and maps Arrow Up/Down to navigation. Horizontal places options in a row and maps Arrow Left/Right.",
              "value": {
                "type": "'vertical' | 'horizontal'",
                "default": "'vertical'"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the selected radio value changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The currently selected value. Must match one of the child arc-radio value attributes. Setting this property programmatically updates the visual selection and the internal aria-checked state.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The form field name submitted with the selected value. Required for native form integration — without it, the selection will not appear in FormData.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "When true, disables all options in the group. The component becomes non-interactive: arrow-key navigation is suppressed, click events are ignored, and the group is excluded from the Tab order.",
                "type": "boolean"
              },
              {
                "name": "orientation",
                "description": "Controls the layout direction of the radio options. Vertical stacks options top-to-bottom and maps Arrow Up/Down to navigation. Horizontal places options in a row and maps Arrow Left/Right.",
                "type": "'vertical' | 'horizontal'"
              },
              {
                "name": "size",
                "description": "Controls the radio button and label size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the selected radio value changes"
              }
            ]
          }
        },
        {
          "name": "arc-radio",
          "description": "Individual radio option rendered inside a RadioGroup. Each Radio represents a single selectable\nchoice with its own label and value. Can be independently disabled while the rest of the group\nremains interactive.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The value submitted when this option is selected. Must be unique within the parent RadioGroup.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, dims this individual option and removes it from keyboard navigation. The option cannot be selected by click or arrow keys.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label"
              },
              {
                "name": "value",
                "description": "The value submitted when this option is selected. Must be unique within the parent RadioGroup.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "When true, dims this individual option and removes it from keyboard navigation. The option cannot be selected by click or arrow keys.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-range-slider",
          "description": "Dual-thumb range slider for selecting a numeric interval within a defined range, with\naccent-primary fill between the thumbs and live value display.\n---\n\n\n### **Events:**\n - **arc-input** - Fired continuously as the user drags either thumb. Detail contains the canonical `value` as `[low, high]`, plus `low` and `high` named separately. Use for real-time filtering or preview. Not fired when a key press leaves the range unchanged.\n- **arc-change** - Fired once when the user releases a thumb, indicating the final committed range. Detail contains the canonical `value` as `[low, high]`, plus `low` and `high` named separately. Use for persisting to a database or triggering an expensive operation. Not fired when a key press leaves the range unchanged.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **range-slider**\n- **header**\n- **label**\n- **values**\n- **track**\n- **rail**\n- **fill**\n- **thumb-low**\n- **thumb-high**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the track and thumbs.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "min",
              "description": "Minimum allowed value at the left edge of the track.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum allowed value at the right edge of the track.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "step",
              "description": "Increment granularity. Values snap to multiples of this number.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "low",
              "description": "Lower bound value of the selected range. Reflected as an attribute.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "high",
              "description": "Upper bound value of the selected range. Reflected as an attribute.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the slider with the range values shown on the right.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "showValues",
              "description": "Whether to display the numeric \"low – high\" readout in the header.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: [number, number], low: number, high: number }>",
              "description": "Fired continuously as the user drags either thumb. Detail contains the canonical `value` as `[low, high]`, plus `low` and `high` named separately. Use for real-time filtering or preview. Not fired when a key press leaves the range unchanged."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: [number, number], low: number, high: number }>",
              "description": "Fired once when the user releases a thumb, indicating the final committed range. Detail contains the canonical `value` as `[low, high]`, plus `low` and `high` named separately. Use for persisting to a database or triggering an expensive operation. Not fired when a key press leaves the range unchanged."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "max",
                "description": "Maximum allowed value at the right edge of the track.",
                "type": "number"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text displayed above the slider with the range values shown on the right.",
                "type": "string"
              },
              {
                "name": "min",
                "description": "Minimum allowed value at the left edge of the track.",
                "type": "number"
              },
              {
                "name": "step",
                "description": "Increment granularity. Values snap to multiples of this number.",
                "type": "number"
              },
              {
                "name": "low",
                "description": "Lower bound value of the selected range. Reflected as an attribute.",
                "type": "number"
              },
              {
                "name": "high",
                "description": "Upper bound value of the selected range. Reflected as an attribute.",
                "type": "number"
              },
              {
                "name": "showValues",
                "description": "Whether to display the numeric \"low – high\" readout in the header.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the track and thumbs.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: [number, number], low: number, high: number }>",
                "description": "Fired continuously as the user drags either thumb. Detail contains the canonical `value` as `[low, high]`, plus `low` and `high` named separately. Use for real-time filtering or preview. Not fired when a key press leaves the range unchanged."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: [number, number], low: number, high: number }>",
                "description": "Fired once when the user releases a thumb, indicating the final committed range. Detail contains the canonical `value` as `[low, high]`, plus `low` and `high` named separately. Use for persisting to a database or triggering an expensive operation. Not fired when a key press leaves the range unchanged."
              }
            ]
          }
        },
        {
          "name": "arc-rating",
          "description": "A star-based rating input with hover preview, keyboard navigation, filled/unfilled SVG stars,\nand configurable max value.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the rating value changes\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **star**\n- **rating**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the star glyphs.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Current rating value, 0 to `max`. **0 means unrated** — it is a legal state of the control, not a rating of zero: it submits nothing, announces as \"No rating\", and is what Home and a left-arrow at the first star return to. Clicking the star that is already selected also clears back to it. Reflected as an attribute and updated on user interaction.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum number of stars to render. Determines the upper bound of the rating scale.",
              "value": {
                "type": "number",
                "default": "5"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the control. Several ratings on one page are indistinguishable without it. Defaults to \"Rating\".",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "description": "Prevents interaction while maintaining full visual appearance. Useful for displaying existing ratings.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when the rating value changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible name for the control. Several ratings on one page are indistinguishable without it. Defaults to \"Rating\".",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "value",
                "description": "Current rating value, 0 to `max`. **0 means unrated** — it is a legal state of the control, not a rating of zero: it submits nothing, announces as \"No rating\", and is what Home and a left-arrow at the first star return to. Clicking the star that is already selected also clears back to it. Reflected as an attribute and updated on user interaction.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Maximum number of stars to render. Determines the upper bound of the rating scale.",
                "type": "number"
              },
              {
                "name": "readonly",
                "description": "Prevents interaction while maintaining full visual appearance. Useful for displaying existing ratings.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the star glyphs.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when the rating value changes"
              }
            ]
          }
        },
        {
          "name": "arc-search",
          "description": "Search input with a magnifying glass icon, clear button, loading spinner, and autocomplete\nsuggestions dropdown.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on each keystroke in the search field\n- **arc-clear** - Fired when the clear button is clicked\n- **arc-change** - Fired when the value is committed: Enter in the field, or a suggestion selected by click or keyboard\n- **arc-select** - Fired when a suggestion is selected (before the accompanying arc-change)\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **label**\n- **wrapper**\n- **icon**\n- **input**\n- **spinner**\n- **clear**\n- **suggestions**\n- **suggestion**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Current text content of the search input.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text displayed when the input is empty.",
              "value": {
                "type": "string",
                "default": "'Search...'"
              }
            },
            {
              "name": "label",
              "description": "Accessible label for the search field. Rendered visually above the input when provided.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the input, reducing opacity and blocking interaction.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "loading",
              "description": "Shows a spinning indicator in place of the clear button to signal in-progress loading.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "open",
              "description": "Whether the suggestion dropdown is visible. Reflected so it can be opened programmatically or styled from CSS.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on each keystroke in the search field"
            },
            {
              "name": "arc-clear",
              "type": "CustomEvent<void>",
              "description": "Fired when the clear button is clicked"
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the value is committed: Enter in the field, or a suggestion selected by click or keyboard"
            },
            {
              "name": "arc-select",
              "type": "CustomEvent",
              "description": "Fired when a suggestion is selected (before the accompanying arc-change)"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Current text content of the search input.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text displayed when the input is empty.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible label for the search field. Rendered visually above the input when provided.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the input, reducing opacity and blocking interaction.",
                "type": "boolean"
              },
              {
                "name": "loading",
                "description": "Shows a spinning indicator in place of the clear button to signal in-progress loading.",
                "type": "boolean"
              },
              {
                "name": "open",
                "description": "Whether the suggestion dropdown is visible. Reflected so it can be opened programmatically or styled from CSS.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on each keystroke in the search field"
              },
              {
                "name": "arc-clear",
                "type": "CustomEvent<void>",
                "description": "Fired when the clear button is clicked"
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the value is committed: Enter in the field, or a suggestion selected by click or keyboard"
              },
              {
                "name": "arc-select",
                "type": "CustomEvent",
                "description": "Fired when a suggestion is selected (before the accompanying arc-change)"
              }
            ]
          }
        },
        {
          "name": "arc-segmented-control",
          "description": "A radio-group-style toggle bar that renders slotted arc-option elements as a row of mutually\nexclusive buttons with an active highlight.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the selected segment changes\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **control**\n- **option**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The value of the currently selected option. Reflected as an attribute and auto-set to the first selectable option if empty.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "The form field name submitted with the selected value. Required for native form integration — without it, the selection will not appear in FormData.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the entire control, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the selected segment changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The value of the currently selected option. Reflected as an attribute and auto-set to the first selectable option if empty.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The form field name submitted with the selected value. Required for native form integration — without it, the selection will not appear in FormData.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the entire control, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the selected segment changes"
              }
            ]
          }
        },
        {
          "name": "arc-select",
          "description": "Dropdown select with searchable options, keyboard navigation, and full ARIA listbox semantics\nfor accessible form inputs.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the selected option changes\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **select**\n- **label**\n- **trigger**\n- **dropdown**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The currently selected value. Must match one of the child `arc-option` value attributes. Setting this programmatically updates the displayed label and internal selection state.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text displayed inside the trigger button when no option is selected. Use it to communicate what kind of choice the user should make, such as \"Choose a team member...\" or \"Pick a status\". The placeholder disappears once a value is chosen.",
              "value": {
                "type": "string",
                "default": "'Select...'"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the select trigger. Also serves as the accessible name for assistive technologies. Always provide a label for accessibility compliance.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name submitted with the selected value. Required for native form integration via ElementInternals.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, the select trigger becomes non-interactive: it cannot be opened, focused via keyboard, or clicked. The component renders with reduced opacity to visually convey the unavailable state.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the select trigger size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "error",
              "description": "Error message displayed below the select. When set, the trigger border turns red.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "open",
              "description": "Controls whether the dropdown is visible. Set programmatically to open or close the dropdown. Automatically set to `false` when an option is selected or the user clicks outside. Held at `false` while `disabled`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when the selected option changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The currently selected value. Must match one of the child `arc-option` value attributes. Setting this programmatically updates the displayed label and internal selection state.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text displayed inside the trigger button when no option is selected. Use it to communicate what kind of choice the user should make, such as \"Choose a team member...\" or \"Pick a status\". The placeholder disappears once a value is chosen.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the select trigger. Also serves as the accessible name for assistive technologies. Always provide a label for accessibility compliance.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name submitted with the selected value. Required for native form integration via ElementInternals.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "When true, the select trigger becomes non-interactive: it cannot be opened, focused via keyboard, or clicked. The component renders with reduced opacity to visually convey the unavailable state.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Error message displayed below the select. When set, the trigger border turns red.",
                "type": "string"
              },
              {
                "name": "size",
                "description": "Controls the select trigger size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "open",
                "description": "Controls whether the dropdown is visible. Set programmatically to open or close the dropdown. Automatically set to `false` when an option is selected or the user clicks outside. Held at `false` while `disabled`.",
                "type": "boolean"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when the selected option changes"
              }
            ]
          }
        },
        {
          "name": "arc-signature-pad",
          "description": "Canvas signature capture that participates in forms. A bordered drawing surface with a muted\n\"Sign here\" baseline while empty, a velocity-scaled pen line for a natural stroke, and a ghost\nclear button once ink is down. Each completed stroke serializes the whole canvas to a PNG\ndata-URL and submits it as the field value; required-and-blank reports `valueMissing` like any\nother input.\n\nSigning by hand is inherently a pointer gesture: the pad itself offers no keyboard path to\nproduce a signature (the clear button is keyboard-reachable, the canvas is focusable so its\nsigned/empty state is announced). A consumer collecting signatures must offer keyboard users an\nequivalent — a type-to-sign field, an upload — alongside this control; the pad does not\nsimulate one.\n---\n\n\n### **Events:**\n - **arc-clear** - Fired when the pad is cleared, via the clear button or the clear() method.\n- **arc-input** - Fired once per completed stroke with the serialized data-URL. A stroke is the edit unit — nothing fires per point while the pen is down.\n- **arc-change** - Fired when the pointer session ends and the value serializes. A stroke is a discrete gesture, so each stroke end fires arc-input then arc-change together.\n\n### **Methods:**\n - **formStateRestoreCallback(state)** - Restore only what could plausibly be a serialized signature.\n- **clear(): _void_** - Wipe the canvas, empty the value, and bring the placeholder back.\n- **toDataURL(type: _string_): _string_** - The current canvas as a data-URL in the requested format (PNG by\ndefault). Unlike `value`, this reads the canvas directly, so a blank pad\nreturns a blank image rather than an empty string.\n- **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **pad**\n- **label**\n- **canvas**\n- **placeholder**\n- **clear**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The signature as a PNG data-URL, empty string while the pad is blank. Updated after every completed stroke. Setting it from script draws the image onto the canvas (client-side only). Not reflected — a data-URL is far too large to live in an attribute.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name the data-URL submits under.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the pad in the label typography role. Also feeds the canvas's accessible name.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity and blocking pointer events. The pad leaves the tab order.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "pen-color",
              "description": "Pen color as any CSS color, including a `var()` expression, resolved against the canvas at stroke time. Attribute: `pen-color`. Defaults to the resolved value of `--text-primary`.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "penWidth",
              "description": "Base pen width in CSS pixels. The drawn line scales with stroke velocity — up to 40% thicker on slow, deliberate movement and 40% thinner on fast flicks. Attribute: `pen-width`. Default 2.",
              "value": {
                "type": "number",
                "default": "2"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-clear",
              "type": "CustomEvent<void>",
              "description": "Fired when the pad is cleared, via the clear button or the clear() method."
            },
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired once per completed stroke with the serialized data-URL. A stroke is the edit unit — nothing fires per point while the pen is down."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the pointer session ends and the value serializes. A stroke is a discrete gesture, so each stroke end fires arc-input then arc-change together."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The signature as a PNG data-URL, empty string while the pad is blank. Updated after every completed stroke. Setting it from script draws the image onto the canvas (client-side only). Not reflected — a data-URL is far too large to live in an attribute.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name the data-URL submits under.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Label text displayed above the pad in the label typography role. Also feeds the canvas's accessible name.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity and blocking pointer events. The pad leaves the tab order.",
                "type": "boolean"
              },
              {
                "name": "penColor",
                "description": "Pen color as any CSS color, including a `var()` expression, resolved against the canvas at stroke time. Attribute: `pen-color`. Defaults to the resolved value of `--text-primary`.",
                "type": "string"
              },
              {
                "name": "readonly",
                "description": "Prevents drawing and hides the clear button while the pad stays focusable and the value still submits.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "When true and the pad is blank, the control is invalid with `valueMissing`.",
                "type": "boolean"
              },
              {
                "name": "penWidth",
                "description": "Base pen width in CSS pixels. The drawn line scales with stroke velocity — up to 40% thicker on slow, deliberate movement and 40% thinner on fast flicks. Attribute: `pen-width`. Default 2.",
                "type": "number"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              }
            ],
            "events": [
              {
                "name": "arc-clear",
                "type": "CustomEvent<void>",
                "description": "Fired when the pad is cleared, via the clear button or the clear() method."
              },
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired once per completed stroke with the serialized data-URL. A stroke is the edit unit — nothing fires per point while the pen is down."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the pointer session ends and the value serializes. A stroke is a discrete gesture, so each stroke end fires arc-input then arc-change together."
              }
            ]
          }
        },
        {
          "name": "arc-slider",
          "description": "Range input slider with a label, live numeric value display, accent-primary fill track, and\ncustomisable min/max/step.\n---\n\n\n### **Events:**\n - **arc-input** - Fired continuously as the user drags the thumb. Use for real-time preview updates like adjusting opacity, volume, or a CSS property live.\n- **arc-change** - Fired once when the user releases the thumb, indicating the final committed value. Use for persisting the value to a database or triggering an expensive operation.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **slider**\n- **header**\n- **label**\n- **value**\n- **track**\n- **input**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the track and thumb.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Current slider value. Reflected as an attribute and updated on user interaction.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "min",
              "description": "Minimum allowed value at the left edge of the track.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "max",
              "description": "Maximum allowed value at the right edge of the track.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "step",
              "description": "Increment granularity. The value snaps to multiples of this number.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text displayed above the slider with the current value shown on the right.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired continuously as the user drags the thumb. Use for real-time preview updates like adjusting opacity, volume, or a CSS property live."
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired once when the user releases the thumb, indicating the final committed value. Use for persisting the value to a database or triggering an expensive operation."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "Current slider value. Reflected as an attribute and updated on user interaction.",
                "type": "number"
              },
              {
                "name": "min",
                "description": "Minimum allowed value at the left edge of the track.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "Maximum allowed value at the right edge of the track.",
                "type": "number"
              },
              {
                "name": "step",
                "description": "Increment granularity. The value snaps to multiples of this number.",
                "type": "number"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables interaction, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text displayed above the slider with the current value shown on the right.",
                "type": "string"
              },
              {
                "name": "readonly",
                "description": "Prevents dragging and arrow-key changes while the thumb stays focusable and the value still submits.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the track and thumb.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired continuously as the user drags the thumb. Use for real-time preview updates like adjusting opacity, volume, or a CSS property live."
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired once when the user releases the thumb, indicating the final committed value. Use for persisting the value to a database or triggering an expensive operation."
              }
            ]
          }
        },
        {
          "name": "arc-sortable-list",
          "description": "Drag-and-drop reorderable list with grip handles, keyboard reordering support, and visual\ninsertion indicators.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when items are reordered, with updated order in detail\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **list**\n- **item**\n- **handle**\n- **content**",
          "doc-url": "",
          "attributes": [
            {
              "name": "disabled",
              "description": "Disables all interaction, reducing opacity to 40% and blocking pointer events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when items are reordered, with updated order in detail"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "disabled",
                "description": "Disables all interaction, reducing opacity to 40% and blocking pointer events.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when items are reordered, with updated order in detail"
              }
            ]
          }
        },
        {
          "name": "arc-suggestion",
          "description": "Autocomplete suggestion item inside a Search component.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "Suggestion value",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label"
              },
              {
                "name": "value",
                "description": "Suggestion value",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-switch-group",
          "description": "Groups multiple toggle switches under a shared label with consistent sizing and disabled state.\nSupports vertical and horizontal layouts.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **fieldset**\n- **legend**\n- **group**",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "Group heading rendered as a `<legend>` element.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "orientation",
              "description": "Layout direction. Vertical stacks toggles, horizontal arranges them in a row.",
              "value": {
                "type": "'vertical' | 'horizontal'",
                "default": "'vertical'"
              }
            },
            {
              "name": "size",
              "description": "Size cascaded to all child arc-toggle elements.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables all child toggles and dims the group.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Group heading rendered as a `<legend>` element.",
                "type": "string"
              },
              {
                "name": "orientation",
                "description": "Layout direction. Vertical stacks toggles, horizontal arranges them in a row.",
                "type": "'vertical' | 'horizontal'"
              },
              {
                "name": "size",
                "description": "Size cascaded to all child arc-toggle elements.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "disabled",
                "description": "Disables all child toggles and dims the group.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-tag-input",
          "description": "Free-text token entry field with optional autocomplete suggestions, delimiter splitting, and\nduplicate rejection.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a tag is added or removed; detail contains `{ value }`\n- **arc-input** - Fired as the user types; detail contains `{ query }`\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **label**\n- **field**\n- **tag**\n- **input**\n- **dropdown**\n- **option**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the field height and padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "Array of current tags. Updated on add/remove and emitted via `arc-change`.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "suggestions",
              "description": "Autocomplete candidates. When non-empty, typing filters them into a dropdown listbox.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "delimiter",
              "description": "Character that commits the current text as a tag when typed; pasted text is split on it.",
              "value": {
                "type": "string",
                "default": "','"
              }
            },
            {
              "name": "maxTags",
              "description": "Maximum number of tags (0 = unlimited). At the limit, entry is disabled with a \"-- max reached\" hint.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "allowCustom",
              "description": "When false, only values from `suggestions` can be added; free text is rejected.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the field in a small uppercase style.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text shown inside the field when no tags exist and the input is empty.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name. Each tag is submitted as its own FormData entry under this name.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the control, preventing interaction and reducing opacity to 50%.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "error",
              "description": "Error message shown below the field; also applies error styling to the border.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string[] }>",
              "description": "Fired when a tag is added or removed; detail contains `{ value }`"
            },
            {
              "name": "arc-input",
              "type": "CustomEvent",
              "description": "Fired as the user types; detail contains `{ query }`"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "delimiter",
                "description": "Character that commits the current text as a tag when typed; pasted text is split on it.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the field in a small uppercase style.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text shown inside the field when no tags exist and the input is empty.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name. Each tag is submitted as its own FormData entry under this name.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the control, preventing interaction and reducing opacity to 50%.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Error message shown below the field; also applies error styling to the border.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Array of current tags. Updated on add/remove and emitted via `arc-change`.",
                "type": "string[]"
              },
              {
                "name": "suggestions",
                "description": "Autocomplete candidates. When non-empty, typing filters them into a dropdown listbox.",
                "type": "string[]"
              },
              {
                "name": "maxTags",
                "description": "Maximum number of tags (0 = unlimited). At the limit, entry is disabled with a \"-- max reached\" hint.",
                "type": "number"
              },
              {
                "name": "allowCustom",
                "description": "When false, only values from `suggestions` can be added; free text is rejected.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Prevents adding or removing tags while the field stays focusable and the tags still submit with the form.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the field height and padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string[] }>",
                "description": "Fired when a tag is added or removed; detail contains `{ value }`"
              },
              {
                "name": "arc-input",
                "type": "CustomEvent",
                "description": "Fired as the user types; detail contains `{ query }`"
              }
            ]
          }
        },
        {
          "name": "arc-textarea",
          "description": "Multi-line text input with integrated label, placeholder, resize control, and live character\ncount that turns red at the limit.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on each keystroke with { value } detail\n- **arc-change** - Fired on blur when value has changed\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper**\n- **label**\n- **textarea**\n- **error**\n- **counter**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The current text content of the textarea. Updated on every keystroke and emitted via `arc-input` and `arc-change` events.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name submitted with the value. Required for native form integration via ElementInternals.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text displayed inside the field when it is empty. Use it to show example input -- never as a substitute for the label.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the textarea in uppercase. Automatically linked to the field via `aria-labelledby`, ensuring screen readers announce it correctly.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "rows",
              "description": "The number of visible text rows that set the initial height of the textarea. Does not limit content length -- the user can scroll or resize beyond this height.",
              "value": {
                "type": "number",
                "default": "4"
              }
            },
            {
              "name": "maxlength",
              "description": "Maximum number of characters allowed. When set to a value greater than 0, a live counter appears below the field showing current length vs. limit, turning red when the limit is reached.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents user interaction and applies a muted visual treatment at 40% opacity. The field value is excluded from form submission when disabled.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "description": "Allows the user to select and copy text but prevents editing. The field has a subtle background change to indicate its read-only state.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "resize",
              "description": "Controls whether and in which direction the user can drag to resize the textarea. Defaults to vertical-only resizing.",
              "value": {
                "type": "'none' | 'vertical' | 'horizontal' | 'both'",
                "default": "'vertical'"
              }
            },
            {
              "name": "size",
              "description": "Controls the textarea size. Options: 'sm', 'md', 'lg'.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "autoResize",
              "description": "Automatically grows the textarea height to fit its content. Disables manual resize when enabled.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "error",
              "description": "Error message string. When non-empty, the textarea border turns red and the message is displayed below the field with `role=\"alert\"` for screen reader announcement.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on each keystroke with { value } detail"
            },
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on blur when value has changed"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The current text content of the textarea. Updated on every keystroke and emitted via `arc-input` and `arc-change` events.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name submitted with the value. Required for native form integration via ElementInternals.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text displayed inside the field when it is empty. Use it to show example input -- never as a substitute for the label.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the textarea in uppercase. Automatically linked to the field via `aria-labelledby`, ensuring screen readers announce it correctly.",
                "type": "string"
              },
              {
                "name": "rows",
                "description": "The number of visible text rows that set the initial height of the textarea. Does not limit content length -- the user can scroll or resize beyond this height.",
                "type": "number"
              },
              {
                "name": "disabled",
                "description": "Prevents user interaction and applies a muted visual treatment at 40% opacity. The field value is excluded from form submission when disabled.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Error message string. When non-empty, the textarea border turns red and the message is displayed below the field with `role=\"alert\"` for screen reader announcement.",
                "type": "string"
              },
              {
                "name": "maxlength",
                "description": "Maximum number of characters allowed. When set to a value greater than 0, a live counter appears below the field showing current length vs. limit, turning red when the limit is reached.",
                "type": "number"
              },
              {
                "name": "resize",
                "description": "Controls whether and in which direction the user can drag to resize the textarea. Defaults to vertical-only resizing.",
                "type": "'none' | 'vertical' | 'horizontal' | 'both'"
              },
              {
                "name": "readonly",
                "description": "Allows the user to select and copy text but prevents editing. The field has a subtle background change to indicate its read-only state.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the textarea size. Options: 'sm', 'md', 'lg'.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "autoResize",
                "description": "Automatically grows the textarea height to fit its content. Disables manual resize when enabled.",
                "type": "boolean"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on each keystroke with { value } detail"
              },
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on blur when value has changed"
              }
            ]
          }
        },
        {
          "name": "arc-theme-toggle",
          "description": "Three-state theme toggle cycling through dark, light, and auto modes with animated icon\ntransitions and localStorage persistence.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the theme is toggled, with { theme } detail\n\n### **CSS Parts:**\n - **base** - The root element.\n- **button**\n- **icon**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "theme",
              "description": "The current theme mode. Synced in both directions: changing it — by click, by key, or by assigning the property — writes the document root's `data-theme` and localStorage, and a change to that attribute from anywhere else is adopted back, so every toggle on the page agrees.",
              "value": {
                "type": "'dark' | 'light' | 'auto'",
                "default": "'auto'"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents cycling and reduces opacity to 40%.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "iconOnly",
              "description": "Renders the button as a compact square without the theme name label, matching an icon-only arc-icon-button of the same size. Attribute name is `icon-only`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Box size when `icon-only`, on the same scale as arc-icon-button: xs=28px, sm=32px, md=36px, lg=44px. Set both controls to the same value when they sit side by side. Ignored by the labeled form, which is sized by its text.",
              "value": {
                "type": "'xs' | 'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: 'dark' | 'light' | 'auto' }>",
              "description": "Fired when the theme is toggled, with { theme } detail"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "theme",
                "description": "The current theme mode. Synced in both directions: changing it — by click, by key, or by assigning the property — writes the document root's `data-theme` and localStorage, and a change to that attribute from anywhere else is adopted back, so every toggle on the page agrees.",
                "type": "'dark' | 'light' | 'auto'"
              },
              {
                "name": "disabled",
                "description": "Prevents cycling and reduces opacity to 40%.",
                "type": "boolean"
              },
              {
                "name": "iconOnly",
                "description": "Renders the button as a compact square without the theme name label, matching an icon-only arc-icon-button of the same size. Attribute name is `icon-only`.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Box size when `icon-only`, on the same scale as arc-icon-button: xs=28px, sm=32px, md=36px, lg=44px. Set both controls to the same value when they sit side by side. Ignored by the labeled form, which is sized by its text.",
                "type": "'xs' | 'sm' | 'md' | 'lg'"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: 'dark' | 'light' | 'auto' }>",
                "description": "Fired when the theme is toggled, with { theme } detail"
              }
            ]
          }
        },
        {
          "name": "arc-time-picker",
          "description": "Scrollable column-based time picker with 12h/24h format support.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a time is selected. Detail contains { value: \"HH:MM\" } in 24-hour format.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **wrapper**\n- **label**\n- **input-wrapper**\n- **input**\n- **dropdown**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "value",
              "description": "The selected time in 24-hour \"HH:MM\" format (e.g. \"14:30\"). Set this to pre-select a time. Updated when the user picks a time.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "min",
              "description": "Minimum selectable time in \"HH:MM\" 24-hour format. Times before this are visually dimmed and non-interactive.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "max",
              "description": "Maximum selectable time in \"HH:MM\" 24-hour format. Times after this are visually dimmed and non-interactive.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "step",
              "description": "Minute step increment. Controls the granularity of minute options shown in the dropdown. Unrecognised values fall back to 1.",
              "value": {
                "type": "1 | 5 | 15 | 30",
                "default": "1"
              }
            },
            {
              "name": "format",
              "description": "Display format: \"12h\" shows hours 1-12 with an AM/PM column, \"24h\" shows hours 0-23 without AM/PM. Unrecognised values fall back to \"12h\".",
              "value": {
                "type": "'12h' | '24h'",
                "default": "'12h'"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text displayed in the input when no time is selected.",
              "value": {
                "type": "string",
                "default": "'Select time'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the time picker, reducing opacity and preventing the dropdown from opening.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "description": "Label text rendered above the input in uppercase accent font styling.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "open",
              "description": "Whether the time dropdown is visible. Reflected so it can be opened programmatically or styled from CSS. Held at `false` while `disabled`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when a time is selected. Detail contains { value: \"HH:MM\" } in 24-hour format."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The selected time in 24-hour \"HH:MM\" format (e.g. \"14:30\"). Set this to pre-select a time. Updated when the user picks a time.",
                "type": "string"
              },
              {
                "name": "name",
                "type": "string"
              },
              {
                "name": "min",
                "description": "Minimum selectable time in \"HH:MM\" 24-hour format. Times before this are visually dimmed and non-interactive.",
                "type": "string"
              },
              {
                "name": "max",
                "description": "Maximum selectable time in \"HH:MM\" 24-hour format. Times after this are visually dimmed and non-interactive.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text displayed in the input when no time is selected.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the time picker, reducing opacity and preventing the dropdown from opening.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Label text rendered above the input in uppercase accent font styling.",
                "type": "string"
              },
              {
                "name": "step",
                "description": "Minute step increment. Controls the granularity of minute options shown in the dropdown. Unrecognised values fall back to 1.",
                "type": "1 | 5 | 15 | 30"
              },
              {
                "name": "format",
                "description": "Display format: \"12h\" shows hours 1-12 with an AM/PM column, \"24h\" shows hours 0-23 without AM/PM. Unrecognised values fall back to \"12h\".",
                "type": "'12h' | '24h'"
              },
              {
                "name": "open",
                "description": "Whether the time dropdown is visible. Reflected so it can be opened programmatically or styled from CSS. Held at `false` while `disabled`.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the field padding.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when a time is selected. Detail contains { value: \"HH:MM\" } in 24-hour format."
              }
            ]
          }
        },
        {
          "name": "arc-toggle",
          "description": "On/off switch with smooth animation, glow effect, and ARIA switch role.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the toggle state changes\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **toggle**\n- **track**\n- **thumb**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "checked",
              "description": "Whether the toggle is in the on position. When set, the thumb slides to the active side and the track displays the accent glow.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "disabled",
              "description": "Prevents user interaction. The toggle appears at reduced opacity and ignores pointer and keyboard events.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the toggle size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "label",
              "description": "Visible text rendered beside the toggle. Clicking the label also toggles the switch, matching native `<label>` behavior.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name submitted with the toggle value. When set, the component participates in native `<form>` submission.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ checked: boolean }>",
              "description": "Fired when the toggle state changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "disabled",
                "description": "Prevents user interaction. The toggle appears at reduced opacity and ignores pointer and keyboard events.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Visible text rendered beside the toggle. Clicking the label also toggles the switch, matching native `<label>` behavior.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name submitted with the toggle value. When set, the component participates in native `<form>` submission.",
                "type": "string"
              },
              {
                "name": "checked",
                "description": "Whether the toggle is in the on position. When set, the thumb slides to the active side and the track displays the accent glow.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the toggle size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ checked: boolean }>",
                "description": "Fired when the toggle state changes"
              }
            ]
          }
        },
        {
          "name": "arc-transfer-list",
          "description": "Dual-listbox for moving items between an available and a selected pane, ideal for permissions\nand settings UIs.\n---\n\n\n### **Events:**\n - **arc-change** - Fired after every move with `{ value }` -- the current array of selected values.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **pane**\n- **pane-header**\n- **search**\n- **listbox**\n- **option**\n- **controls**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Control size. `md` is the default; `sm` and `lg` scale the row height and list panels.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "options",
              "description": "The full universe of items. Items whose value is in `value` render in the Selected pane; the rest render in Available.",
              "value": {
                "type": "Array<{value:string,label:string,disabled?:boolean}>",
                "default": "[]"
              }
            },
            {
              "name": "value",
              "description": "Values currently in the Selected pane, kept in options order. Updated after every move and emitted via `arc-change`.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "name",
              "description": "Form field name. When set, the component submits one form entry per selected value.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the whole control, preventing interaction and reducing opacity.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "searchable",
              "description": "Adds a filter input to each pane that narrows that pane only, case-insensitively. Move-all respects the filter.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "source-label",
              "description": "Heading for the left (available) pane. Attribute: `source-label`.",
              "value": {
                "type": "string",
                "default": "'Available'"
              }
            },
            {
              "name": "target-label",
              "description": "Heading for the right (selected) pane. Attribute: `target-label`.",
              "value": {
                "type": "string",
                "default": "'Selected'"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string[] }>",
              "description": "Fired after every move with `{ value }` -- the current array of selected values."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "Form field name. When set, the component submits one form entry per selected value.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the whole control, preventing interaction and reducing opacity.",
                "type": "boolean"
              },
              {
                "name": "sourceLabel",
                "description": "Heading for the left (available) pane. Attribute: `source-label`.",
                "type": "string"
              },
              {
                "name": "targetLabel",
                "description": "Heading for the right (selected) pane. Attribute: `target-label`.",
                "type": "string"
              },
              {
                "name": "options",
                "description": "The full universe of items. Items whose value is in `value` render in the Selected pane; the rest render in Available.",
                "type": "Array<{value:string,label:string,disabled?:boolean}>"
              },
              {
                "name": "value",
                "description": "Values currently in the Selected pane, kept in options order. Updated after every move and emitted via `arc-change`.",
                "type": "string[]"
              },
              {
                "name": "searchable",
                "description": "Adds a filter input to each pane that narrows that pane only, case-insensitively. Move-all respects the filter.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Prevents moving items between panes while the lists stay focusable and filterable; the selected values still submit with the form.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Control size. `md` is the default; `sm` and `lg` scale the row height and list panels.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string[] }>",
                "description": "Fired after every move with `{ value }` -- the current array of selected values."
              }
            ]
          }
        },
        {
          "name": "arc-tree-select",
          "description": "Dropdown select whose panel is a hierarchical tree — categories, instrument banks, folder\npickers. Group nodes expand and collapse; only leaf nodes are selectable, which keeps\nsingle-select semantics clean.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a leaf is selected. `detail.value` is the leaf value, `detail.label` its label, and `detail.path` the array of ancestor group values from root to parent.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Whether the control currently satisfies its constraints, per the native\nconstraint-validation API. Fires `invalid` on the element when it does\nnot, and reports nothing to the user.\n- **reportValidity(): _boolean_** - As checkValidity(), but also shows the browser's validation message\nagainst the control when it fails.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **tree-select**\n- **label**\n- **trigger**\n- **panel**\n- **row**\n- **error**",
          "doc-url": "",
          "attributes": [
            {
              "name": "items",
              "description": "Recursive tree of nodes. A node with a non-empty `children` array is a group header: it expands and collapses but can never be selected. A node without children is a selectable leaf. `disabled` nodes render but cannot be reached by keyboard or selected, and a disabled group hides its children.",
              "value": {
                "type": "Array<{value: string, label: string, children?: Array<object>, disabled?: boolean}>",
                "default": "[]"
              }
            },
            {
              "name": "value",
              "description": "The selected leaf's value. Setting it programmatically updates the trigger's breadcrumb label, and the branches containing it auto-expand the next time the panel opens.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "expandedValues",
              "description": "Values of group nodes to render initially expanded. Attribute: `expanded-values` (JSON array). Branches containing the selected value auto-expand on open regardless of this list.",
              "value": {
                "type": "string[]",
                "default": "[]"
              }
            },
            {
              "name": "placeholder",
              "description": "Hint text displayed inside the trigger when no leaf is selected. It disappears once a value is chosen.",
              "value": {
                "type": "string",
                "default": "'Select...'"
              }
            },
            {
              "name": "label",
              "description": "Visible label rendered above the trigger. Also serves as the accessible name. Always provide one for accessibility compliance.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "name",
              "description": "Form field name submitted with the selected leaf value via ElementInternals.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, the trigger becomes non-interactive: it cannot be opened, focused, or clicked, and renders with reduced opacity.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the trigger size.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "error",
              "description": "Error message displayed below the trigger. When set, the trigger border turns red.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "open",
              "description": "Controls whether the tree panel is visible. Automatically set to false when a leaf is selected, Escape is pressed, or the user clicks outside. Held at `false` while `disabled`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "required",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "readonly",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when a leaf is selected. `detail.value` is the leaf value, `detail.label` its label, and `detail.path` the array of ancestor group values from root to parent."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The selected leaf's value. Setting it programmatically updates the trigger's breadcrumb label, and the branches containing it auto-expand the next time the panel opens.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Hint text displayed inside the trigger when no leaf is selected. It disappears once a value is chosen.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Visible label rendered above the trigger. Also serves as the accessible name. Always provide one for accessibility compliance.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Form field name submitted with the selected leaf value via ElementInternals.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "When true, the trigger becomes non-interactive: it cannot be opened, focused, or clicked, and renders with reduced opacity.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Error message displayed below the trigger. When set, the trigger border turns red.",
                "type": "string"
              },
              {
                "name": "items",
                "description": "Recursive tree of nodes. A node with a non-empty `children` array is a group header: it expands and collapses but can never be selected. A node without children is a selectable leaf. `disabled` nodes render but cannot be reached by keyboard or selected, and a disabled group hides its children.",
                "type": "Array<{value: string, label: string, children?: Array<object>, disabled?: boolean}>"
              },
              {
                "name": "expandedValues",
                "description": "Values of group nodes to render initially expanded. Attribute: `expanded-values` (JSON array). Branches containing the selected value auto-expand on open regardless of this list.",
                "type": "string[]"
              },
              {
                "name": "size",
                "description": "Controls the trigger size.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "open",
                "description": "Controls whether the tree panel is visible. Automatically set to false when a leaf is selected, Escape is pressed, or the user clicks outside. Held at `false` while `disabled`.",
                "type": "boolean"
              },
              {
                "name": "form"
              },
              {
                "name": "validity"
              },
              {
                "name": "validationMessage"
              },
              {
                "name": "required",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when a leaf is selected. `detail.value` is the leaf value, `detail.label` its label, and `detail.path` the array of ancestor group values from root to parent."
              }
            ]
          }
        },
        {
          "name": "arc-app-shell",
          "description": "Full-page layout scaffold that composes a TopBar, Sidebar, and scrollable content area into a\ncohesive application frame. Handles responsive collapse, sidebar toggling, and optional\ntable-of-contents rail out of the box.\n\nA slotted `arc-top-bar` is put out of flow for you — the body already\nreserves `--nav-height` of padding for it — and whatever is slotted into the\nsidebar is stretched to the full height of the rail, `arc-sidebar` or a plain\n`<nav>` alike, so anything drawing an edge draws it the whole way down. The\nrail is 280px wide; set `--sidebar-width` on the shell to change it, which\nmoves the wrapper and the sidebar inside it together.\n\nBy default the shell is a page layout: at least `100vh` tall, with the page\nas the scroll context and a sticky sidebar rail. Set `embedded` to put the\nsame layout inside a box — a card, a dashboard cell, a split pane, a preview\n— where it takes its height from the container you give it and scrolls\ninside itself instead of moving the page.\n---\n\n\n### **Events:**\n - **arc-sidebar-toggle** - Fired when the shell itself opens or closes the mobile sidebar — on a backdrop click, on Escape, on navigation, or when the viewport widens past the breakpoint and the drawer stops existing. Listened to by arc-top-bar so its hamburger stays in step, and by any wrapper binding `sidebarOpen`. Not fired for a toggle the shell merely received, so the two cannot echo each other.\n\n### **Slots:**\n - **topbar**\n- **sidebar**\n- _default_ - Default content.\n- **toc**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **shell**\n- **body**\n- **sidebar**\n- **main**\n- **content**\n- **toc**",
          "doc-url": "",
          "attributes": [
            {
              "name": "sidebarOpen",
              "description": "Controls whether the sidebar is visible on mobile viewports (below 768 px). On desktop the sidebar is always shown regardless of this attribute. Toggle it from a hamburger button in your TopBar to give mobile users access to navigation.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "embedded",
              "description": "Fills the container instead of the viewport. The shell takes the height you give it (`height: 100%` of a bounded parent, or any length), its content area becomes the scroll context rather than the page, and the sidebar rail is stretched by the body rather than sized from the screen — a sticky rail has nothing to stick against once the page is not what scrolls. Use it for a shell inside a card, a dashboard cell, a split pane, or a documentation preview; leave it off for the full-page layout, which is what the component is for.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "breakpoint",
              "description": "Viewport width in pixels at which the layout switches between mobile and desktop modes.",
              "value": {
                "type": "number"
              }
            }
          ],
          "slots": [
            {
              "name": "topbar"
            },
            {
              "name": "sidebar"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "toc"
            }
          ],
          "events": [
            {
              "name": "arc-sidebar-toggle",
              "type": "CustomEvent<{ value: boolean }>",
              "description": "Fired when the shell itself opens or closes the mobile sidebar — on a backdrop click, on Escape, on navigation, or when the viewport widens past the breakpoint and the drawer stops existing. Listened to by arc-top-bar so its hamburger stays in step, and by any wrapper binding `sidebarOpen`. Not fired for a toggle the shell merely received, so the two cannot echo each other."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "breakpoint",
                "description": "Viewport width in pixels at which the layout switches between mobile and desktop modes.",
                "type": "number"
              },
              {
                "name": "sidebarOpen",
                "description": "Controls whether the sidebar is visible on mobile viewports (below 768 px). On desktop the sidebar is always shown regardless of this attribute. Toggle it from a hamburger button in your TopBar to give mobile users access to navigation.",
                "type": "boolean"
              },
              {
                "name": "embedded",
                "description": "Fills the container instead of the viewport. The shell takes the height you give it (`height: 100%` of a bounded parent, or any length), its content area becomes the scroll context rather than the page, and the sidebar rail is stretched by the body rather than sized from the screen — a sticky rail has nothing to stick against once the page is not what scrolls. Use it for a shell inside a card, a dashboard cell, a split pane, or a documentation preview; leave it off for the full-page layout, which is what the component is for.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-sidebar-toggle",
                "type": "CustomEvent<{ value: boolean }>",
                "description": "Fired when the shell itself opens or closes the mobile sidebar — on a backdrop click, on Escape, on navigation, or when the viewport widens past the breakpoint and the drawer stops existing. Listened to by arc-top-bar so its hamburger stays in step, and by any wrapper binding `sidebarOpen`. Not fired for a toggle the shell merely received, so the two cannot echo each other."
              }
            ]
          }
        },
        {
          "name": "arc-aspect-grid",
          "description": "Uniform aspect-ratio cell grid with configurable columns and ratio.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **grid**",
          "doc-url": "",
          "attributes": [
            {
              "name": "columns",
              "description": "Number of columns in the grid. Each column is equal width (1fr).",
              "value": {
                "type": "number",
                "default": "3"
              }
            },
            {
              "name": "ratio",
              "description": "Aspect ratio applied to every cell. 1/1 for squares, 16/9 for widescreen, 4/3 for classic landscape.",
              "value": {
                "type": "'1/1' | '16/9' | '4/3'",
                "default": "'1/1'"
              }
            },
            {
              "name": "gap",
              "description": "Spacing between grid cells, mapped to design system spacing tokens (--space-sm, --space-md, --space-lg).",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "columns",
                "description": "Number of columns in the grid. Each column is equal width (1fr).",
                "type": "number"
              },
              {
                "name": "ratio",
                "description": "Aspect ratio applied to every cell. 1/1 for squares, 16/9 for widescreen, 4/3 for classic landscape.",
                "type": "'1/1' | '16/9' | '4/3'"
              },
              {
                "name": "gap",
                "description": "Spacing between grid cells, mapped to design system spacing tokens (--space-sm, --space-md, --space-lg).",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-auth-shell",
          "description": "Authentication page layout with centered and split variants for sign-in, sign-up,\npassword-reset, and other credential flows. Provides logo, form card, footer, and optional aside\nslots out of the box.\n---\n\n\n### **Slots:**\n - **logo**\n- _default_ - Default content.\n- **footer**\n- **aside**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **shell**\n- **form-side**\n- **logo**\n- **card**\n- **footer**\n- **aside**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Controls the page layout. Centered places a single card in the middle of the viewport, best for focused credential flows. Split divides the viewport into a form side and an aside panel for marketing content or illustrations. On mobile, split collapses to a single-column centered layout automatically.",
              "value": {
                "type": "'centered' | 'split'",
                "default": "'centered'"
              }
            }
          ],
          "slots": [
            {
              "name": "logo"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "footer"
            },
            {
              "name": "aside"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "variant",
                "description": "Controls the page layout. Centered places a single card in the middle of the viewport, best for focused credential flows. Split divides the viewport into a form side and an aside panel for marketing content or illustrations. On mobile, split collapses to a single-column centered layout automatically.",
                "type": "'centered' | 'split'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-center",
          "description": "Content centering primitive with max-width, intrinsic centering, and text-center options.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "max-width",
              "description": "Maximum width for the centered content block. Accepts any CSS length or custom property. Only applies in default (block) centering mode.",
              "value": {
                "type": "string",
                "default": "'60ch'"
              }
            },
            {
              "name": "intrinsic",
              "description": "Enables intrinsic centering mode using flexbox, which centers children based on their natural width rather than stretching to max-width.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "text",
              "description": "Adds text-align: center for centering inline text content within the block.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "maxWidth",
                "description": "Maximum width for the centered content block. Accepts any CSS length or custom property. Only applies in default (block) centering mode.",
                "type": "string"
              },
              {
                "name": "intrinsic",
                "description": "Enables intrinsic centering mode using flexbox, which centers children based on their natural width rather than stretching to max-width.",
                "type": "boolean"
              },
              {
                "name": "text",
                "description": "Adds text-align: center for centering inline text content within the block.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-container",
          "description": "Max-width wrapper for page sections.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**",
          "doc-url": "",
          "attributes": [
            {
              "name": "narrow",
              "description": "Use the narrow max-width (720px vs 1120px)",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the maximum width.",
              "value": {
                "type": "'sm' | 'md' | 'lg' | 'xl' | 'full'",
                "default": "'md'"
              }
            },
            {
              "name": "padding",
              "description": "Controls inline padding.",
              "value": {
                "type": "'none' | 'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "narrow",
                "description": "Use the narrow max-width (720px vs 1120px)",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the maximum width.",
                "type": "'sm' | 'md' | 'lg' | 'xl' | 'full'"
              },
              {
                "name": "padding",
                "description": "Controls inline padding.",
                "type": "'none' | 'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-dashboard-grid",
          "description": "Responsive grid for dashboard metric cards.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **grid**",
          "doc-url": "",
          "attributes": [
            {
              "name": "columns",
              "description": "Number of columns when using explicit column mode. When this attribute is set on the element, the grid switches from auto-fill to a fixed repeat(N, 1fr) layout.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "gap",
              "description": "Gap between grid cells. Accepts any CSS length value or spacing token. Maps to the --gap CSS custom property.",
              "value": {
                "type": "string",
                "default": "'var(--space-lg)'"
              }
            },
            {
              "name": "min-column-width",
              "description": "Minimum column width in auto-fill mode. Controls the minmax() threshold at which columns wrap to the next row. Maps to the --min-col CSS custom property.",
              "value": {
                "type": "string",
                "default": "'280px'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "gap",
                "description": "Gap between grid cells. Accepts any CSS length value or spacing token. Maps to the --gap CSS custom property.",
                "type": "string"
              },
              {
                "name": "minColumnWidth",
                "description": "Minimum column width in auto-fill mode. Controls the minmax() threshold at which columns wrap to the next row. Maps to the --min-col CSS custom property.",
                "type": "string"
              },
              {
                "name": "columns",
                "description": "Number of columns when using explicit column mode. When this attribute is set on the element, the grid switches from auto-fill to a fixed repeat(N, 1fr) layout.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-float-bar",
          "description": "Viewport-bottom floating toolbar with surface-overlay background, backdrop blur, and spring\neasing. For bulk actions, unsaved-changes prompts.\n---\n\n\n### **Events:**\n - **arc-open** - Fired when the float bar becomes visible after the open prop is set to true.\n- **arc-close** - Fired when the float bar hides after the open prop is set to false.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **bar**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls visibility of the float bar. Set to true when a triggering condition is met (e.g., items selected, form dirty) and false when the condition resolves.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "position",
              "description": "Which edge of the viewport the float bar appears at. Bottom is standard for bulk-action bars; top works for consent banners or global alerts.",
              "value": {
                "type": "'bottom' | 'top'",
                "default": "'bottom'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-open",
              "description": "Fired when the float bar becomes visible after the open prop is set to true."
            },
            {
              "name": "arc-close",
              "description": "Fired when the float bar hides after the open prop is set to false."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "open",
                "description": "Controls visibility of the float bar. Set to true when a triggering condition is met (e.g., items selected, form dirty) and false when the condition resolves.",
                "type": "boolean"
              },
              {
                "name": "position",
                "description": "Which edge of the viewport the float bar appears at. Bottom is standard for bulk-action bars; top works for consent banners or global alerts.",
                "type": "'bottom' | 'top'"
              }
            ],
            "events": [
              {
                "name": "arc-open",
                "description": "Fired when the float bar becomes visible after the open prop is set to true."
              },
              {
                "name": "arc-close",
                "description": "Fired when the float bar hides after the open prop is set to false."
              }
            ]
          }
        },
        {
          "name": "arc-inset",
          "description": "Padding primitive consuming spacing tokens with optional negative-margin bleed mode.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "space",
              "description": "Padding size mapped to a design system spacing token. Controls all four sides equally.",
              "value": {
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'",
                "default": "'md'"
              }
            },
            {
              "name": "bleed",
              "description": "When true, applies negative margins equal to the space value, allowing children to break out of a parent container's padding for full-bleed layouts.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "space",
                "description": "Padding size mapped to a design system spacing token. Controls all four sides equally.",
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'"
              },
              {
                "name": "bleed",
                "description": "When true, applies negative margins equal to the space value, allowing children to break out of a parent container's padding for full-bleed layouts.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-masonry",
          "description": "Pinterest-style vertical-pack grid using CSS columns for efficient masonry layout without\nJavaScript.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **masonry**",
          "doc-url": "",
          "attributes": [
            {
              "name": "columns",
              "description": "Number of columns in the masonry grid. The browser distributes children across columns to minimize overall height difference.",
              "value": {
                "type": "number",
                "default": "3"
              }
            },
            {
              "name": "gap",
              "description": "Spacing between columns and rows, mapped to design system spacing tokens (--space-sm, --space-md, --space-lg).",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "columns",
                "description": "Number of columns in the masonry grid. The browser distributes children across columns to minimize overall height difference.",
                "type": "number"
              },
              {
                "name": "gap",
                "description": "Spacing between columns and rows, mapped to design system spacing tokens (--space-sm, --space-md, --space-lg).",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-page-header",
          "description": "Page title area with positional slots for composing breadcrumbs, actions, tabs, or any content\naround a heading and description.\n---\n\n\n### **Slots:**\n - **above** - Content above the title row — breadcrumbs, a back link, a status chip. The space it occupies is reserved only when something is in it.\n- **heading**\n- **aside**\n- **description**\n- **below**\n- _default_ - Default content.\n\n### **CSS Parts:**\n - **base**\n- **above**\n- **title-row**\n- **heading**\n- **aside**\n- **description**\n- **below**\n- **content**",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "The page title rendered as an <h1>. This is the primary text landmark and should clearly describe the current page or view (e.g. \"Team Settings\", \"Order #4021\"). Keep it concise — two to five words is ideal.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "description",
              "description": "Optional supporting text displayed below the title row. Use it to provide a one-line summary of what the page contains or what action the user should take. When empty, the description paragraph is not rendered.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "border",
              "description": "When set, renders a subtle bottom border below the header to visually separate it from page content.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "above",
              "description": "Content above the title row — breadcrumbs, a back link, a status chip. The space it occupies is reserved only when something is in it."
            },
            {
              "name": "heading"
            },
            {
              "name": "aside"
            },
            {
              "name": "description"
            },
            {
              "name": "below"
            },
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "The page title rendered as an <h1>. This is the primary text landmark and should clearly describe the current page or view (e.g. \"Team Settings\", \"Order #4021\"). Keep it concise — two to five words is ideal.",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Optional supporting text displayed below the title row. Use it to provide a one-line summary of what the page contains or what action the user should take. When empty, the description paragraph is not rendered.",
                "type": "string"
              },
              {
                "name": "border",
                "description": "When set, renders a subtle bottom border below the header to visually separate it from page content.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-page-layout",
          "description": "Page structure primitive that arranges content into sidebar-left, sidebar-right, centered, or\nwide layouts using CSS Grid. Handles responsive collapse, configurable gap and max-width, and\nexposes named slots for sidebar, main, and aside regions.\n---\n\n\n### **Slots:**\n - **sidebar**\n- _default_ - Default content.\n- **aside**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **layout**\n- **sidebar**\n- **main**\n- **aside**",
          "doc-url": "",
          "attributes": [
            {
              "name": "layout",
              "description": "Controls the column structure of the page. sidebar-left creates a 240px fixed column on the left for navigation. sidebar-right creates a 300px fixed column on the right for contextual content. centered constrains the main area to max-width with auto margins. wide allows content to stretch the full available width.",
              "value": {
                "type": "'sidebar-left' | 'sidebar-right' | 'centered' | 'wide'",
                "default": "'centered'"
              }
            },
            {
              "name": "max-width",
              "description": "Maximum width of the content area when using the centered layout. Accepts any valid CSS length value. Has no effect on sidebar-left, sidebar-right, or wide layouts. Maps to the --max-width CSS custom property.",
              "value": {
                "type": "string",
                "default": "'1120px'"
              }
            },
            {
              "name": "gap",
              "description": "Gap between the sidebar/aside and main content regions. Accepts any valid CSS length or spacing token. Maps to the --gap CSS custom property and applies to the CSS Grid gap in sidebar layouts.",
              "value": {
                "type": "string",
                "default": "'var(--space-xl)'"
              }
            }
          ],
          "slots": [
            {
              "name": "sidebar"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "aside"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "maxWidth",
                "description": "Maximum width of the content area when using the centered layout. Accepts any valid CSS length value. Has no effect on sidebar-left, sidebar-right, or wide layouts. Maps to the --max-width CSS custom property.",
                "type": "string"
              },
              {
                "name": "gap",
                "description": "Gap between the sidebar/aside and main content regions. Accepts any valid CSS length or spacing token. Maps to the --gap CSS custom property and applies to the CSS Grid gap in sidebar layouts.",
                "type": "string"
              },
              {
                "name": "layout",
                "description": "Controls the column structure of the page. sidebar-left creates a 240px fixed column on the left for navigation. sidebar-right creates a 300px fixed column on the right for contextual content. centered constrains the main area to max-width with auto margins. wide allows content to stretch the full available width.",
                "type": "'sidebar-left' | 'sidebar-right' | 'centered' | 'wide'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-resizable",
          "description": "Resizable panel with drag handle.\n---\n\n\n### **Events:**\n - **arc-resize** - Fired during and after panel resize with { size } detail\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **container**\n- **handle**",
          "doc-url": "",
          "attributes": [
            {
              "name": "direction",
              "description": "Controls which edge the drag handle appears on. Horizontal places the handle on the right edge and resizes width; vertical places it on the bottom edge and resizes height.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "minSize",
              "description": "Minimum allowed size in pixels. The panel cannot be dragged smaller than this value.",
              "value": {
                "type": "number",
                "default": "100"
              }
            },
            {
              "name": "maxSize",
              "description": "Maximum allowed size in pixels. The panel cannot be dragged larger than this value. Defaults to no limit.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "size",
              "description": "Current size of the panel in pixels. Updated in real time during drag. Maps to the --panel-size CSS custom property.",
              "value": {
                "type": "number",
                "default": "300"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-resize",
              "type": "CustomEvent<{ size: number }>",
              "description": "Fired during and after panel resize with { size } detail"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "size",
                "description": "Current size of the panel in pixels. Updated in real time during drag. Maps to the --panel-size CSS custom property.",
                "type": "number"
              },
              {
                "name": "direction",
                "description": "Controls which edge the drag handle appears on. Horizontal places the handle on the right edge and resizes width; vertical places it on the bottom edge and resizes height.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "minSize",
                "description": "Minimum allowed size in pixels. The panel cannot be dragged smaller than this value.",
                "type": "number"
              },
              {
                "name": "maxSize",
                "description": "Maximum allowed size in pixels. The panel cannot be dragged larger than this value. Defaults to no limit.",
                "type": "number"
              }
            ],
            "events": [
              {
                "name": "arc-resize",
                "type": "CustomEvent<{ size: number }>",
                "description": "Fired during and after panel resize with { size } detail"
              }
            ]
          }
        },
        {
          "name": "arc-responsive-switcher",
          "description": "Container-query-based layout that flips between horizontal and vertical at a threshold width. No\nmedia queries needed.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **switcher**",
          "doc-url": "",
          "attributes": [
            {
              "name": "threshold",
              "description": "The container width at which the layout switches between horizontal and vertical. Accepts any CSS length value. When the container is wider than this value, children are in a row; below it, they stack.",
              "value": {
                "type": "string",
                "default": "'600px'"
              }
            },
            {
              "name": "gap",
              "description": "Spacing between children in both horizontal and vertical modes, mapped to design system spacing tokens.",
              "value": {
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "threshold",
                "description": "The container width at which the layout switches between horizontal and vertical. Accepts any CSS length value. When the container is wider than this value, children are in a row; below it, they stack.",
                "type": "string"
              },
              {
                "name": "gap",
                "description": "Spacing between children in both horizontal and vertical modes, mapped to design system spacing tokens.",
                "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-section",
          "description": "Page section with optional uppercase label, consistent spacing.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **section**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "Section label displayed in uppercase above content",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Section label displayed in uppercase above content",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-settings-layout",
          "description": "Settings page with side navigation and content area.\n---\n\n\n### **Slots:**\n - **nav**\n- _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **layout**\n- **nav**\n- **content**",
          "doc-url": "",
          "attributes": [
            {
              "name": "navPosition",
              "description": "Controls whether the navigation panel appears as a left sidebar (220px wide, CSS Grid) or a top bar (full-width, flexbox column). The left layout collapses to stacked on screens narrower than 768px.",
              "value": {
                "type": "'left' | 'top'",
                "default": "'left'"
              }
            }
          ],
          "slots": [
            {
              "name": "nav"
            },
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "navPosition",
                "description": "Controls whether the navigation panel appears as a left sidebar (220px wide, CSS Grid) or a top bar (full-width, flexbox column). The left layout collapses to stacked on screens narrower than 768px.",
                "type": "'left' | 'top'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-split-pane",
          "description": "Resizable split layout with two panes.\n---\n\n\n### **Events:**\n - **arc-resize** - Fired on every step of a divider drag and on every keyboard step, with the new ratio on both `detail.value` and `detail.ratio`.\n\n### **Slots:**\n - **primary**\n- **secondary**\n\n### **CSS Parts:**\n - **base**\n- **primary**\n- **handle**\n- **secondary**",
          "doc-url": "",
          "attributes": [
            {
              "name": "orientation",
              "description": "Controls the split direction. Horizontal places panes side by side with a vertical divider. Vertical stacks panes top and bottom with a horizontal divider.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "ratio",
              "description": "The proportion of space allocated to the primary pane, clamped to `minRatio`..`maxRatio` on every path. The drag handle always honoured those bounds; assigning `ratio` from script used to bypass them entirely. From 0 to 1. A value of 0.4 gives the primary pane 40% of the available width (or height in vertical mode).",
              "value": {
                "type": "number",
                "default": "0.5"
              }
            },
            {
              "name": "minRatio",
              "description": "Minimum allowed ratio. The divider cannot be dragged below this value, preventing the primary pane from collapsing.",
              "value": {
                "type": "number",
                "default": "0.15"
              }
            },
            {
              "name": "maxRatio",
              "description": "Maximum allowed ratio. The divider cannot be dragged above this value, preventing the secondary pane from collapsing.",
              "value": {
                "type": "number",
                "default": "0.85"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the divider, applied as `aria-label`. Defaults to \"Resize panes\".",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "primary"
            },
            {
              "name": "secondary"
            }
          ],
          "events": [
            {
              "name": "arc-resize",
              "type": "CustomEvent<{ value: number, ratio: number }>",
              "description": "Fired on every step of a divider drag and on every keyboard step, with the new ratio on both `detail.value` and `detail.ratio`."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Accessible name for the divider, applied as `aria-label`. Defaults to \"Resize panes\".",
                "type": "string"
              },
              {
                "name": "orientation",
                "description": "Controls the split direction. Horizontal places panes side by side with a vertical divider. Vertical stacks panes top and bottom with a horizontal divider.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "ratio",
                "description": "The proportion of space allocated to the primary pane, clamped to `minRatio`..`maxRatio` on every path. The drag handle always honoured those bounds; assigning `ratio` from script used to bypass them entirely. From 0 to 1. A value of 0.4 gives the primary pane 40% of the available width (or height in vertical mode).",
                "type": "number"
              },
              {
                "name": "minRatio",
                "description": "Minimum allowed ratio. The divider cannot be dragged below this value, preventing the primary pane from collapsing.",
                "type": "number"
              },
              {
                "name": "maxRatio",
                "description": "Maximum allowed ratio. The divider cannot be dragged above this value, preventing the secondary pane from collapsing.",
                "type": "number"
              }
            ],
            "events": [
              {
                "name": "arc-resize",
                "type": "CustomEvent<{ value: number, ratio: number }>",
                "description": "Fired on every step of a divider drag and on every keyboard step, with the new ratio on both `detail.value` and `detail.ratio`."
              }
            ]
          }
        },
        {
          "name": "arc-status-bar",
          "description": "Bottom status bar with start, center, and end slots.\n---\n\n\n### **Slots:**\n - **prefix** - Content pinned to the inline-start edge of the bar.\n- _default_ - Default content.\n- **suffix** - Content pinned to the inline-end edge of the bar.\n\n### **CSS Parts:**\n - **base**\n- **prefix**\n- **center**\n- **suffix**",
          "doc-url": "",
          "attributes": [
            {
              "name": "position",
              "description": "Controls whether the status bar flows with the document (static) or pins to the bottom of the viewport (fixed). Fixed mode sets bottom: 0, left: 0, right: 0 with z-index: 100.",
              "value": {
                "type": "'static' | 'fixed'",
                "default": "'static'"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix",
              "description": "Content pinned to the inline-start edge of the bar."
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "suffix",
              "description": "Content pinned to the inline-end edge of the bar."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "position",
                "description": "Controls whether the status bar flows with the document (static) or pins to the bottom of the viewport (fixed). Fixed mode sets bottom: 0, left: 0, right: 0 with z-index: 100.",
                "type": "'static' | 'fixed'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-sticky",
          "description": "Wrapper that goes sticky at a configurable offset and emits a stuck attribute/event for visual\nstate changes.\n---\n\n\n### **Events:**\n - **arc-stuck** - Fired when the stuck state changes. Event detail contains `{ stuck: boolean }` indicating whether the element is currently stuck.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.",
          "doc-url": "",
          "attributes": [
            {
              "name": "offset",
              "description": "The CSS `top` value for sticky positioning. Set to \"64px\" to stick below a 64px top bar, or \"0px\" to stick flush with the viewport/scroll container edge.",
              "value": {
                "type": "string",
                "default": "'0px'"
              }
            },
            {
              "name": "stuck",
              "description": "Read-only attribute set by the IntersectionObserver when the element is currently stuck. Use the `[stuck]` CSS selector to style the stuck state.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-stuck",
              "type": "CustomEvent",
              "description": "Fired when the stuck state changes. Event detail contains `{ stuck: boolean }` indicating whether the element is currently stuck."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "offset",
                "description": "The CSS `top` value for sticky positioning. Set to \"64px\" to stick below a 64px top bar, or \"0px\" to stick flush with the viewport/scroll container edge.",
                "type": "string"
              },
              {
                "name": "stuck",
                "description": "Read-only attribute set by the IntersectionObserver when the element is currently stuck. Use the `[stuck]` CSS selector to style the stuck state.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-stuck",
                "type": "CustomEvent",
                "description": "Fired when the stuck state changes. Event detail contains `{ stuck: boolean }` indicating whether the element is currently stuck."
              }
            ]
          }
        },
        {
          "name": "arc-toolbar",
          "description": "Horizontal toolbar with prefix, center, and suffix slots.\n---\n\n\n### **Events:**\n - **arc-overflow-change** - Fired when the set of collapsed items changes (only with the overflow prop). detail: { hiddenCount: number }.\n\n### **Slots:**\n - **prefix** - Content pinned to the inline-start edge of the bar.\n- _default_ - Default content.\n- **suffix** - Content pinned to the inline-end edge of the bar.\n\n### **CSS Parts:**\n - **more**\n- **overflow-panel**\n- **overflow-item**\n- **base**\n- **prefix**\n- **center**\n- **suffix**",
          "doc-url": "",
          "attributes": [
            {
              "name": "sticky",
              "description": "When set, the toolbar uses position: sticky with top: 0 and z-index: 50, keeping it visible as the user scrolls through content below.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "size",
              "description": "Controls the toolbar height. `md`, the default, is 48px for primary toolbars; `sm` is 36px for secondary or nested toolbars; `lg` is 60px. The nested arc-icon-button in the overflow menu tracks it.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            },
            {
              "name": "border",
              "description": "Renders a subtle bottom border (--border-subtle) to visually separate the toolbar from the content below. Enabled by default.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "overflow",
              "description": "Enables responsive overflow collapse. A ResizeObserver measures available width; slotted items that do not fit are collapsed (hidden via the reversible hidden attribute) from the end of the item list, and a \"More\" trigger opens a menu of proxy items that re-dispatch clicks to the hidden originals. Note: because slotted nodes cannot be moved into the overflow panel, complex custom content is represented in the menu only by its text label (or the label attribute on arc-button / arc-icon-button).",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "prefix",
              "description": "Content pinned to the inline-start edge of the bar."
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "suffix",
              "description": "Content pinned to the inline-end edge of the bar."
            }
          ],
          "events": [
            {
              "name": "arc-overflow-change",
              "type": "CustomEvent",
              "description": "Fired when the set of collapsed items changes (only with the overflow prop). detail: { hiddenCount: number }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "sticky",
                "description": "When set, the toolbar uses position: sticky with top: 0 and z-index: 50, keeping it visible as the user scrolls through content below.",
                "type": "boolean"
              },
              {
                "name": "size",
                "description": "Controls the toolbar height. `md`, the default, is 48px for primary toolbars; `sm` is 36px for secondary or nested toolbars; `lg` is 60px. The nested arc-icon-button in the overflow menu tracks it.",
                "type": "'sm' | 'md' | 'lg'"
              },
              {
                "name": "border",
                "description": "Renders a subtle bottom border (--border-subtle) to visually separate the toolbar from the content below. Enabled by default.",
                "type": "boolean"
              },
              {
                "name": "overflow",
                "description": "Enables responsive overflow collapse. A ResizeObserver measures available width; slotted items that do not fit are collapsed (hidden via the reversible hidden attribute) from the end of the item list, and a \"More\" trigger opens a menu of proxy items that re-dispatch clicks to the hidden originals. Note: because slotted nodes cannot be moved into the overflow panel, complex custom content is represented in the menu only by its text label (or the label attribute on arc-button / arc-icon-button).",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-overflow-change",
                "type": "CustomEvent",
                "description": "Fired when the set of collapsed items changes (only with the overflow prop). detail: { hiddenCount: number }."
              }
            ]
          }
        },
        {
          "name": "arc-anchor-nav",
          "description": "Vertical or horizontal in-page link bar with active highlight. Active link gets accent-primary\nbackground pill or underline glow.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a link is selected with detail: { value }.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base**\n- **link**",
          "doc-url": "",
          "attributes": [
            {
              "name": "orientation",
              "description": "Layout direction. Vertical renders a column of links; horizontal renders a row.",
              "value": {
                "type": "'vertical' | 'horizontal'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "value",
              "description": "The value of the currently active link. Controls which item is highlighted.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "items",
              "description": "Declarative list of items to render. Each object needs a label (display text) and value (identifier). Alternative to slotting children.",
              "value": {
                "type": "Array<{label: string, value: string}>",
                "default": "[]"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when a link is selected with detail: { value }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The value of the currently active link. Controls which item is highlighted.",
                "type": "string"
              },
              {
                "name": "items",
                "description": "Declarative list of items to render. Each object needs a label (display text) and value (identifier). Alternative to slotting children.",
                "type": "Array<{label: string, value: string}>"
              },
              {
                "name": "orientation",
                "description": "Layout direction. Vertical renders a column of links; horizontal renders a row.",
                "type": "'vertical' | 'horizontal'"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when a link is selected with detail: { value }."
              }
            ]
          }
        },
        {
          "name": "arc-bottom-nav",
          "description": "Mobile bottom bar with icon + label items. Active item gets accent-primary glow underline with\nsurface-overlay background and backdrop blur.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when an item is tapped with detail: { value }.\n\n### **CSS Parts:**\n - **base**\n- **item**\n- **icon**\n- **label**",
          "doc-url": "",
          "attributes": [
            {
              "name": "items",
              "description": "Array of navigation items, each with a label, icon name, and value identifier.",
              "value": {
                "type": "Array<{label: string, icon?: string, value: string}>",
                "default": "[]"
              }
            },
            {
              "name": "value",
              "description": "The value of the currently active item. Controls which item is highlighted.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when an item is tapped with detail: { value }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "items",
                "description": "Array of navigation items, each with a label, icon name, and value identifier.",
                "type": "Array<{label: string, icon?: string, value: string}>"
              },
              {
                "name": "value",
                "description": "The value of the currently active item. Controls which item is highlighted.",
                "type": "string"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when an item is tapped with detail: { value }."
              }
            ]
          }
        },
        {
          "name": "arc-breadcrumb-item",
          "description": "An individual crumb inside a Breadcrumb trail. Each item represents one level of the page\nhierarchy. Items with an `href` render as clickable links; the item without an `href` (typically\nthe last one) is treated as the current page and lifted to the primary text color.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "Navigation URL for this crumb. When provided, the crumb renders as a clickable link styled in muted text that brightens on hover. Omit this property on the final item to mark it as the current page -- it will receive `aria-current=\"page\"` and the primary text color automatically.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "resolvedHref",
                "description": "Destination, preferring the explicit attribute over an anchor child.\nAuthoring `<arc-breadcrumb-item><a href=\"/docs\">Docs</a></arc-breadcrumb-item>`\nleaves a working trail in the pre-upgrade markup — arc-breadcrumb hides this\nlight DOM only once it has re-rendered it into shadow DOM."
              },
              {
                "name": "label",
                "description": "textContent already reaches through an anchor child, so this needs no special case."
              },
              {
                "name": "href",
                "description": "Navigation URL for this crumb. When provided, the crumb renders as a clickable link styled in muted text that brightens on hover. Omit this property on the final item to mark it as the current page -- it will receive `aria-current=\"page\"` and the primary text color automatically.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-breadcrumb-menu",
          "description": "Each breadcrumb segment doubles as a dropdown showing sibling pages at that hierarchy level.\nDropdown panels match dropdown-menu styling.\n---\n\n\n### **Events:**\n - **arc-navigate** - Fired when a breadcrumb link or dropdown item is clicked with detail: { href }.\n\n### **CSS Parts:**\n - **base**\n- **separator**\n- **item**\n- **link**\n- **dropdown**\n- **dropdown-item**",
          "doc-url": "",
          "attributes": [
            {
              "name": "items",
              "description": "Array of breadcrumb items. Each item has a label and href. Optionally include a siblings array to enable a dropdown at that level.",
              "value": {
                "type": "Array<{label: string, href?: string, siblings?: Array<{label: string, href?: string}>}>",
                "default": "[]"
              }
            },
            {
              "name": "label",
              "value": {
                "type": "string",
                "default": "'Breadcrumb'"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-navigate",
              "type": "CustomEvent",
              "description": "Fired when a breadcrumb link or dropdown item is clicked with detail: { href }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "label",
                "type": "string"
              },
              {
                "name": "items",
                "description": "Array of breadcrumb items. Each item has a label and href. Optionally include a siblings array to enable a dropdown at that level.",
                "type": "Array<{label: string, href?: string, siblings?: Array<{label: string, href?: string}>}>"
              }
            ],
            "events": [
              {
                "name": "arc-navigate",
                "type": "CustomEvent",
                "description": "Fired when a breadcrumb link or dropdown item is clicked with detail: { href }."
              }
            ]
          }
        },
        {
          "name": "arc-breadcrumb",
          "description": "Wayfinding navigation trail that shows the user their current location within a hierarchical\npage structure, with separator icons and current-page indication.\n---\n\n\n### **Events:**\n - **arc-navigate** - Fired when a breadcrumb item is clicked\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **breadcrumb**\n- **current**\n- **link**\n- **separator**",
          "doc-url": "",
          "attributes": [
            {
              "name": "separator",
              "description": "Character used as the separator between breadcrumb items. Common options: '/', '>', '•'.",
              "value": {
                "type": "string",
                "default": "'/'"
              }
            },
            {
              "name": "label",
              "value": {
                "type": "string",
                "default": "'Breadcrumb'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-navigate",
              "type": "CustomEvent",
              "description": "Fired when a breadcrumb item is clicked"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "separator",
                "description": "Character used as the separator between breadcrumb items. Common options: '/', '>', '•'.",
                "type": "string"
              },
              {
                "name": "label",
                "type": "string"
              }
            ],
            "events": [
              {
                "name": "arc-navigate",
                "type": "CustomEvent",
                "description": "Fired when a breadcrumb item is clicked"
              }
            ]
          }
        },
        {
          "name": "arc-command-bar",
          "description": "Always-visible search input designed to sit inside a top bar. Accent-primary bottom border on\nfocus with glow ring.\n---\n\n\n### **Events:**\n - **arc-input** - Fired on every keystroke with detail: { value }.\n- **arc-submit** - Fired when the user presses Enter with detail: { value }.\n\n### **Slots:**\n - **hint**\n\n### **CSS Parts:**\n - **base**\n- **icon**\n- **input**\n- **hint**",
          "doc-url": "",
          "attributes": [
            {
              "name": "placeholder",
              "description": "Placeholder text displayed when the input is empty. Use it to communicate the scope of the search.",
              "value": {
                "type": "string",
                "default": "'Search…'"
              }
            },
            {
              "name": "value",
              "description": "The current value of the input. Set externally to control the input state programmatically.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "icon",
              "description": "Icon name displayed before the input. Accepts any Phosphor icon name.",
              "value": {
                "type": "string",
                "default": "'magnifying-glass'"
              }
            },
            {
              "name": "label",
              "description": "Accessible name for the input, applied as `aria-label`. Defaults to \"Search\". A placeholder is not a name: it is announced inconsistently and disappears the moment the user types.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "hint"
            }
          ],
          "events": [
            {
              "name": "arc-input",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired on every keystroke with detail: { value }."
            },
            {
              "name": "arc-submit",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when the user presses Enter with detail: { value }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "placeholder",
                "description": "Placeholder text displayed when the input is empty. Use it to communicate the scope of the search.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The current value of the input. Set externally to control the input state programmatically.",
                "type": "string"
              },
              {
                "name": "icon",
                "description": "Icon name displayed before the input. Accepts any Phosphor icon name.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "Accessible name for the input, applied as `aria-label`. Defaults to \"Search\". A placeholder is not a name: it is announced inconsistently and disappears the moment the user types.",
                "type": "string"
              }
            ],
            "events": [
              {
                "name": "arc-input",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired on every keystroke with detail: { value }."
              },
              {
                "name": "arc-submit",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when the user presses Enter with detail: { value }."
              }
            ]
          }
        },
        {
          "name": "arc-drawer",
          "description": "Slide-out panel with backdrop overlay, keyboard dismissal, and left/right positioning for\noff-canvas navigation, filters, and detail views.\n---\n\n\n### **Events:**\n - **arc-close** - Fired when the drawer closes via backdrop click or escape key\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **panel** - The sliding panel. Same element as `base`; the scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--drawer-backdrop` custom property.\n- **header**\n- **title**\n- **close**\n- **body**",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Controls the visible state of the drawer. Set to `true` to slide the panel into view and activate the backdrop; set to `false` to run the exit animation, remove the backdrop, and restore body scroll.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "position",
              "description": "Which edge of the viewport the drawer slides in from. Use `left` for primary navigation menus and `right` for contextual detail panels, filter sidebars, or settings trays.",
              "value": {
                "type": "'left' | 'right'",
                "default": "'left'"
              }
            },
            {
              "name": "heading",
              "description": "Text displayed in the drawer header bar. Also used as the `aria-label` for the dialog panel, ensuring screen readers announce the panel purpose when it opens.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-close",
              "type": "CustomEvent<void>",
              "description": "Fired when the drawer closes via backdrop click or escape key"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Text displayed in the drawer header bar. Also used as the `aria-label` for the dialog panel, ensuring screen readers announce the panel purpose when it opens.",
                "type": "string"
              },
              {
                "name": "open",
                "description": "Controls the visible state of the drawer. Set to `true` to slide the panel into view and activate the backdrop; set to `false` to run the exit animation, remove the backdrop, and restore body scroll.",
                "type": "boolean"
              },
              {
                "name": "position",
                "description": "Which edge of the viewport the drawer slides in from. Use `left` for primary navigation menus and `right` for contextual detail panels, filter sidebars, or settings trays.",
                "type": "'left' | 'right'"
              }
            ],
            "events": [
              {
                "name": "arc-close",
                "type": "CustomEvent<void>",
                "description": "Fired when the drawer closes via backdrop click or escape key"
              }
            ]
          }
        },
        {
          "name": "arc-footer",
          "description": "Page footer with branding, link columns, and legal text. Provides a structured layout with slots\nfor a logo, navigational link groups, social icons, and copyright information.\n---\n\n\n### **Slots:**\n - **logo**\n- _default_ - Default content.\n- **social**\n- **legal**\n\n### **CSS Parts:**\n - **brand**\n- **columns**\n- **social**\n- **legal**\n- **base**",
          "doc-url": "",
          "attributes": [
            {
              "name": "density",
              "description": "Visual density. 'compact' reduces internal padding and spacing throughout the footer — for dashboard layouts or admin panels where vertical space is limited.",
              "value": {
                "type": "'default' | 'compact'",
                "default": "'default'"
              }
            },
            {
              "name": "border",
              "description": "Renders a subtle top border on the footer to visually separate it from the page content above. Enabled by default; disable it only when the footer sits against a dark background where the border would be redundant.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "contained",
              "description": "Sets a max-width containment on the footer content. Accepts any CSS length value or named size token.",
              "value": {
                "type": "string",
                "default": "null"
              }
            },
            {
              "name": "align",
              "description": "Controls footer content alignment.",
              "value": {
                "type": "'left' | 'center'",
                "default": "'left'"
              }
            }
          ],
          "slots": [
            {
              "name": "logo"
            },
            {
              "name": "",
              "description": "Default content."
            },
            {
              "name": "social"
            },
            {
              "name": "legal"
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "contained",
                "description": "Sets a max-width containment on the footer content. Accepts any CSS length value or named size token.",
                "type": "string"
              },
              {
                "name": "density",
                "description": "Visual density. 'compact' reduces internal padding and spacing throughout the footer — for dashboard layouts or admin panels where vertical space is limited.",
                "type": "'default' | 'compact'"
              },
              {
                "name": "border",
                "description": "Renders a subtle top border on the footer to visually separate it from the page content above. Enabled by default; disable it only when the footer sits against a dark background where the border would be redundant.",
                "type": "boolean"
              },
              {
                "name": "align",
                "description": "Controls footer content alignment.",
                "type": "'left' | 'center'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-link",
          "description": "Styled anchor with nav, muted, and default variants.\n---\n\n\n### **Slots:**\n - _default_ - Default content. Slotting a single `<a>` as the only child adopts it as the link — the recommended form for links that must work before hydration or without JavaScript. In this form `external` contributes the marker icon only; put `target`/`rel` on your own anchor, and note that `::part(link)` does not apply.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **link**",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "URL destination for the link.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "variant",
              "description": "Link style variant. `default` uses accent-primary color, `muted` uses muted text, `nav` uses secondary text with 14px size and flex layout.",
              "value": {
                "type": "'default' | 'muted' | 'nav'",
                "default": "'default'"
              }
            },
            {
              "name": "underline",
              "description": "Controls underline behavior: 'hover' underlines on hover, 'always' keeps it visible, 'never' omits it.",
              "value": {
                "type": "'hover' | 'always' | 'never'",
                "default": "'hover'"
              }
            },
            {
              "name": "active",
              "description": "Active state — applies accent-primary color for navigation highlighting.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "external",
              "description": "When true, adds `target=\"_blank\"` and `rel=\"noopener noreferrer\"`, and renders an external link icon after the text.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content. Slotting a single `<a>` as the only child adopts it as the link — the recommended form for links that must work before hydration or without JavaScript. In this form `external` contributes the marker icon only; put `target`/`rel` on your own anchor, and note that `::part(link)` does not apply."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "href",
                "description": "URL destination for the link.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Link style variant. `default` uses accent-primary color, `muted` uses muted text, `nav` uses secondary text with 14px size and flex layout.",
                "type": "'default' | 'muted' | 'nav'"
              },
              {
                "name": "active",
                "description": "Active state — applies accent-primary color for navigation highlighting.",
                "type": "boolean"
              },
              {
                "name": "external",
                "description": "When true, adds `target=\"_blank\"` and `rel=\"noopener noreferrer\"`, and renders an external link icon after the text.",
                "type": "boolean"
              },
              {
                "name": "underline",
                "description": "Controls underline behavior: 'hover' underlines on hover, 'always' keeps it visible, 'never' omits it.",
                "type": "'hover' | 'always' | 'never'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-menubar",
          "description": "Desktop-application-style menu bar (File / Edit / View) with nested submenus, keyboard shortcuts\ndisplay, and full WAI-ARIA menubar keyboard navigation.\n---\n\n\n### **Events:**\n - **arc-select** - Fired when a leaf menu item is activated. `detail.path` is the array of labels from the top-level menu to the selected leaf, e.g. `[\"File\", \"Export\", \"PNG\"]`.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **menu**\n- **divider**\n- **item**\n- **shortcut**\n- **bar**\n- **trigger**",
          "doc-url": "",
          "attributes": [
            {
              "name": "items",
              "description": "The menu structure. Entries with an `items` array become submenus (one further nesting level supported); `{ divider: true }` renders a separator. Set as a property, or as a JSON attribute for a menu structure that is static.",
              "value": {
                "type": "Array<{label:string,disabled?:boolean,items:Array<{label?:string,shortcut?:string,disabled?:boolean,divider?:boolean,items?:Array<{label:string,shortcut?:string,disabled?:boolean}>}>}>",
                "default": "[]"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-select",
              "type": "CustomEvent",
              "description": "Fired when a leaf menu item is activated. `detail.path` is the array of labels from the top-level menu to the selected leaf, e.g. `[\"File\", \"Export\", \"PNG\"]`."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "items",
                "description": "The menu structure. Entries with an `items` array become submenus (one further nesting level supported); `{ divider: true }` renders a separator. Set as a property, or as a JSON attribute for a menu structure that is static.",
                "type": "Array<{label:string,disabled?:boolean,items:Array<{label?:string,shortcut?:string,disabled?:boolean,divider?:boolean,items?:Array<{label:string,shortcut?:string,disabled?:boolean}>}>}>"
              }
            ],
            "events": [
              {
                "name": "arc-select",
                "type": "CustomEvent",
                "description": "Fired when a leaf menu item is activated. `detail.path` is the array of labels from the top-level menu to the selected leaf, e.g. `[\"File\", \"Export\", \"PNG\"]`."
              }
            ]
          }
        },
        {
          "name": "arc-nav-item",
          "description": "A single entry inside NavigationMenu. When used at the top level and containing nested NavItem\nchildren, it becomes a dropdown trigger. When used without children, it renders as a direct\nnavigation link. Nest one level deep to populate a dropdown panel.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "Destination URL for the nav item. Required for leaf items that navigate. Omit on parent items that serve only as dropdown triggers.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "active",
              "description": "Highlights the item with an accent-colored bottom border to indicate the current route. Set this on the top-level NavItem that corresponds to the active page.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "variant",
              "description": "Visual style variant. `default` shows a subtle border and muted text with accent glow on active. `primary` uses accent-colored text and border in the resting state with a stronger glow on hover/active. `muted` renders a subdued style with no border and lighter text — ideal for secondary links like \"Blog\" or \"Changelog\".",
              "value": {
                "type": "'default' | 'primary' | 'muted'",
                "default": "'default'"
              }
            },
            {
              "name": "description",
              "description": "Secondary text displayed below the item label inside a dropdown. Use this to add context like \"Real-time dashboards and metrics\" so users can scan the mega-menu without clicking through.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "resolvedHref",
                "description": "Destination, preferring the explicit attribute over an anchor child.\n\nAuthoring `<arc-nav-item><a href=\"/docs\">Docs</a></arc-nav-item>` makes the\npre-upgrade markup a working link list, which is what no-JS visitors and\nanyone on a slow connection actually see — arc-navigation-menu hides this\nlight DOM only once it has upgraded and re-rendered it into shadow DOM."
              },
              {
                "name": "label"
              },
              {
                "name": "subItems",
                "description": "Nested arc-nav-item children for dropdown menus."
              },
              {
                "name": "hasChildren"
              },
              {
                "name": "href",
                "description": "Destination URL for the nav item. Required for leaf items that navigate. Omit on parent items that serve only as dropdown triggers.",
                "type": "string"
              },
              {
                "name": "description",
                "description": "Secondary text displayed below the item label inside a dropdown. Use this to add context like \"Real-time dashboards and metrics\" so users can scan the mega-menu without clicking through.",
                "type": "string"
              },
              {
                "name": "active",
                "description": "Highlights the item with an accent-colored bottom border to indicate the current route. Set this on the top-level NavItem that corresponds to the active page.",
                "type": "boolean"
              },
              {
                "name": "variant",
                "description": "Visual style variant. `default` shows a subtle border and muted text with accent glow on active. `primary` uses accent-colored text and border in the resting state with a stronger glow on hover/active. `muted` renders a subdued style with no border and lighter text — ideal for secondary links like \"Blog\" or \"Changelog\".",
                "type": "'default' | 'primary' | 'muted'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-navigation-menu",
          "description": "Horizontal navigation bar with hover-triggered dropdown sub-menus and full keyboard\naccessibility. Designed for marketing sites, documentation hubs, and product landing pages where\ntop-level sections expand into categorised link lists.\n---\n\n\n### **Events:**\n - **arc-mobile-menu-toggle** - Fired when the mobile hamburger button is clicked. Bubbles composed from the host, so listening on the element or on document both work.\n- **arc-navigate** - Fired when a navigation item is selected\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **nav**\n- **item**\n- **trigger**\n- **dropdown**\n- **dropdown-item**",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "value": {
                "type": "string",
                "default": "'Navigation menu'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-mobile-menu-toggle",
              "type": "CustomEvent<{ value: boolean }>",
              "description": "Fired when the mobile hamburger button is clicked. Bubbles composed from the host, so listening on the element or on document both work."
            },
            {
              "name": "arc-navigate",
              "description": "Fired when a navigation item is selected"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "label",
                "type": "string"
              }
            ],
            "events": [
              {
                "name": "arc-mobile-menu-toggle",
                "type": "CustomEvent<{ value: boolean }>",
                "description": "Fired when the mobile hamburger button is clicked. Bubbles composed from the host, so listening on the element or on document both work."
              },
              {
                "name": "arc-navigate",
                "description": "Fired when a navigation item is selected"
              }
            ]
          }
        },
        {
          "name": "arc-page-indicator",
          "description": "Dot-based position indicator for page-level navigation or onboarding flows. Active dot fills\nwith accent-primary and scales up.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when a dot is clicked (clickable mode only) with detail: { value }.\n\n### **CSS Parts:**\n - **base**\n- **dot**",
          "doc-url": "",
          "attributes": [
            {
              "name": "count",
              "description": "Total number of dots to display.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "value",
              "description": "Zero-based index of the active dot.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "clickable",
              "description": "When true, dots become interactive tap targets that dispatch arc-change on click.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when a dot is clicked (clickable mode only) with detail: { value }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "count",
                "description": "Total number of dots to display.",
                "type": "number"
              },
              {
                "name": "value",
                "description": "Zero-based index of the active dot.",
                "type": "number"
              },
              {
                "name": "clickable",
                "description": "When true, dots become interactive tap targets that dispatch arc-change on click.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when a dot is clicked (clickable mode only) with detail: { value }."
              }
            ]
          }
        },
        {
          "name": "arc-pagination",
          "description": "Page navigation control with previous/next arrows, numbered page buttons, and smart ellipsis\ntruncation.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the current page changes\n\n### **CSS Parts:**\n - **base** - The root element.\n- **prev**\n- **next**\n- **pagination**\n- **label**\n- **ellipsis**\n- **page**",
          "doc-url": "",
          "attributes": [
            {
              "name": "total",
              "description": "Total number of pages. At least 1 — a pager with no pages is still a pager showing page 1 of 1.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "current",
              "description": "The currently active page number (1-based). Reflected as an attribute. Clamped to 1..`total`, so a page number past either end lands on the nearest real page rather than stranding the control.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "siblings",
              "description": "Number of page buttons to show on each side of the current page before ellipsis truncation kicks in. Never negative.",
              "value": {
                "type": "number",
                "default": "1"
              }
            },
            {
              "name": "compact",
              "description": "Shows only previous/next buttons with a 'current / total' label. Hides individual page numbers.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: number }>",
              "description": "Fired when the current page changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "total",
                "description": "Total number of pages. At least 1 — a pager with no pages is still a pager showing page 1 of 1.",
                "type": "number"
              },
              {
                "name": "current",
                "description": "The currently active page number (1-based). Reflected as an attribute. Clamped to 1..`total`, so a page number past either end lands on the nearest real page rather than stranding the control.",
                "type": "number"
              },
              {
                "name": "siblings",
                "description": "Number of page buttons to show on each side of the current page before ellipsis truncation kicks in. Never negative.",
                "type": "number"
              },
              {
                "name": "compact",
                "description": "Shows only previous/next buttons with a 'current / total' label. Hides individual page numbers.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: number }>",
                "description": "Fired when the current page changes"
              }
            ]
          }
        },
        {
          "name": "arc-rail",
          "description": "Ultra-narrow icon-only vertical navigation like VS Code's activity bar. Icons use text-muted at\nrest, accent-primary glow on active. Expands on hover.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when an item is selected with detail: { value }.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base**\n- **item**",
          "doc-url": "",
          "attributes": [
            {
              "name": "items",
              "description": "Array of navigation items, each with an icon name, text label, and value identifier.",
              "value": {
                "type": "Array<{icon: string, label: string, value: string}>",
                "default": "[]"
              }
            },
            {
              "name": "value",
              "description": "The value of the currently active item. Controls which icon receives the accent glow.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "expanded",
              "description": "When true, the Rail widens to show text labels beside each icon. Can be toggled on hover or set permanently.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ value: string }>",
              "description": "Fired when an item is selected with detail: { value }."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "items",
                "description": "Array of navigation items, each with an icon name, text label, and value identifier.",
                "type": "Array<{icon: string, label: string, value: string}>"
              },
              {
                "name": "value",
                "description": "The value of the currently active item. Controls which icon receives the accent glow.",
                "type": "string"
              },
              {
                "name": "expanded",
                "description": "When true, the Rail widens to show text labels beside each icon. Can be toggled on hover or set permanently.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ value: string }>",
                "description": "Fired when an item is selected with detail: { value }."
              }
            ]
          }
        },
        {
          "name": "arc-scroll-spy",
          "description": "Tracks scroll position and highlights the active navigation link.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the active spy target changes during scroll\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **scroll-spy**\n- **heading**\n- **ring**\n- **list**\n- **link**",
          "doc-url": "",
          "attributes": [
            {
              "name": "active",
              "description": "The id of the currently active section. Reflects to an attribute and updates automatically as the user scrolls.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "offset",
              "description": "Pixel distance from the top of the viewport at which a section counts as current. Increase it to account for taller sticky headers.",
              "value": {
                "type": "number",
                "default": "80"
              }
            },
            {
              "name": "progress",
              "description": "How the reader's position through the document is shown. `ring` draws a progress arc beside the heading; `read` recedes the entries already scrolled past; `both` does each. Defaults to `none`, and an unrecognized value lands there too.",
              "value": {
                "type": "'none' | 'ring' | 'read' | 'both'",
                "default": "'none'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when the active spy target changes during scroll"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "active",
                "description": "The id of the currently active section. Reflects to an attribute and updates automatically as the user scrolls.",
                "type": "string"
              },
              {
                "name": "offset",
                "description": "Pixel distance from the top of the viewport at which a section counts as current. Increase it to account for taller sticky headers.",
                "type": "number"
              },
              {
                "name": "progress",
                "description": "How the reader's position through the document is shown. `ring` draws a progress arc beside the heading; `read` recedes the entries already scrolled past; `both` does each. Defaults to `none`, and an unrecognized value lands there too.",
                "type": "'none' | 'ring' | 'read' | 'both'"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when the active spy target changes during scroll"
              }
            ]
          }
        },
        {
          "name": "arc-scroll-to-top",
          "description": "Floating button that appears after scrolling and smoothly returns the user to the top of the\npage.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **button**",
          "doc-url": "",
          "attributes": [
            {
              "name": "threshold",
              "description": "Scroll distance in pixels before the button becomes visible.",
              "value": {
                "type": "number",
                "default": "300"
              }
            },
            {
              "name": "smooth",
              "description": "Use smooth scrolling animation. Falls back to instant when prefers-reduced-motion is set.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "position",
              "description": "Corner placement.",
              "value": {
                "type": "'bottom-right' | 'bottom-left'",
                "default": "'bottom-right'"
              }
            },
            {
              "name": "offset",
              "description": "Distance from viewport edges. Accepts any CSS length value.",
              "value": {
                "type": "string",
                "default": "'var(--space-lg)'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "threshold",
                "description": "Scroll distance in pixels before the button becomes visible.",
                "type": "number"
              },
              {
                "name": "offset",
                "description": "Distance from viewport edges. Accepts any CSS length value.",
                "type": "string"
              },
              {
                "name": "smooth",
                "description": "Use smooth scrolling animation. Falls back to instant when prefers-reduced-motion is set.",
                "type": "boolean"
              },
              {
                "name": "position",
                "description": "Corner placement.",
                "type": "'bottom-right' | 'bottom-left'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-sidebar-link",
          "description": "A navigation link rendered inside a SidebarSection. Supports an active state to indicate the\ncurrent page and provides focus-visible styling for keyboard navigation.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "Destination URL for the link. Can be an absolute path, relative path, or hash anchor. The link renders as a standard anchor element for full accessibility and SEO.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "active",
              "description": "When true, applies a highlighted style (accent-colored text and a left-edge indicator) to signal that this link corresponds to the currently viewed page. Only one link should be active at a time.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "level",
              "description": "Nesting depth for visual indentation. Level 0 links render at default size; level 1+ links are indented and use a smaller font size.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "icon",
              "description": "Name of an icon to render before the label. Use icons consistently within a section — a sidebar where only some links carry one reads as an oversight rather than a hierarchy.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "external",
              "description": "Marks a destination that leaves the surrounding section — an app on its own route, another site, a repository. The link gains a persistent box-arrow glyph in place of the hover chevron, so the departure is legible before the click rather than after it.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "resolvedHref",
                "description": "Destination, preferring the explicit attribute over an anchor child.\nAuthoring `<arc-sidebar-link><a href=\"/docs\">Docs</a></arc-sidebar-link>`\nleaves a working link in the pre-upgrade markup — arc-sidebar hides this\nlight DOM only once it has re-rendered it into shadow DOM."
              },
              {
                "name": "label",
                "description": "textContent already reaches through an anchor child, so this needs no special case."
              },
              {
                "name": "href",
                "description": "Destination URL for the link. Can be an absolute path, relative path, or hash anchor. The link renders as a standard anchor element for full accessibility and SEO.",
                "type": "string"
              },
              {
                "name": "level",
                "description": "Nesting depth for visual indentation. Level 0 links render at default size; level 1+ links are indented and use a smaller font size.",
                "type": "number"
              },
              {
                "name": "icon",
                "description": "Name of an icon to render before the label. Use icons consistently within a section — a sidebar where only some links carry one reads as an oversight rather than a hierarchy.",
                "type": "string"
              },
              {
                "name": "active",
                "description": "When true, applies a highlighted style (accent-colored text and a left-edge indicator) to signal that this link corresponds to the currently viewed page. Only one link should be active at a time.",
                "type": "boolean"
              },
              {
                "name": "external",
                "description": "Marks a destination that leaves the surrounding section — an app on its own route, another site, a repository. The link gains a persistent box-arrow glyph in place of the hover chevron, so the departure is legible before the click rather than after it.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-sidebar-section",
          "description": "A collapsible group within a Sidebar. Each section renders an optional heading label above its\nchild links, creating a visual and semantic grouping that mirrors your information architecture.\nFires an `arc-toggle` event with `{ open }` detail when the section is expanded or collapsed.\n---\n\n\n### **Events:**\n - **arc-toggle** - Fired when a collapsible section expands or collapses.\n\n### **Methods:**\n - **toggle(): _void_** - Collapse an open section or expand a collapsed one, firing `arc-toggle`.\n\nA no-op unless `collapsible` is set: a section that cannot collapse has\nnothing to toggle, and silently doing nothing is better than a state the\nheader offers no way back from.\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "Text label displayed above the group of links. Keep it short (one to three words) so the sidebar stays scannable. When omitted, links render without a heading divider.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "collapsible",
              "description": "When true, the section heading becomes a toggle button that expands/collapses the child links.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "open",
              "description": "Controls whether a collapsible section is expanded (true) or collapsed (false). Only relevant when collapsible is true.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "icon",
              "description": "Name of an icon to render before the heading. Ignored when the section has no heading.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-toggle",
              "type": "CustomEvent<{ open: boolean }>",
              "description": "Fired when a collapsible section expands or collapses."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "links",
                "description": "Get child arc-sidebar-link elements"
              },
              {
                "name": "heading",
                "description": "Text label displayed above the group of links. Keep it short (one to three words) so the sidebar stays scannable. When omitted, links render without a heading divider.",
                "type": "string"
              },
              {
                "name": "icon",
                "description": "Name of an icon to render before the heading. Ignored when the section has no heading.",
                "type": "string"
              },
              {
                "name": "collapsible",
                "description": "When true, the section heading becomes a toggle button that expands/collapses the child links.",
                "type": "boolean"
              },
              {
                "name": "open",
                "description": "Controls whether a collapsible section is expanded (true) or collapsed (false). Only relevant when collapsible is true.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-toggle",
                "type": "CustomEvent<{ open: boolean }>",
                "description": "Fired when a collapsible section expands or collapses."
              }
            ]
          }
        },
        {
          "name": "arc-sidebar",
          "description": "Collapsible navigation sidebar with grouped sections, heading labels, and active link\nhighlighting. Ideal for documentation sites, admin panels, and any layout that needs persistent\nvertical navigation.\n---\n\n\n### **Events:**\n - **arc-navigate** - Fired when a sidebar link is clicked\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **sidebar**\n- **section**\n- **toggle**\n- **heading**\n- **links**\n- **link**\n- **link-icon**\n- **heading-icon**",
          "doc-url": "",
          "attributes": [
            {
              "name": "active",
              "description": "The href of the currently active sidebar link. Used to highlight the matching link with accent styling.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "collapsed",
              "description": "When true, collapses the sidebar away entirely: width 0 with its contents clipped, which is the right behaviour for a rail that slides out of the way but is not an icon-only mode. For a persistent icon rail — the VS Code activity-bar shape — use `arc-rail`, which is a different component with its own labels and tooltips.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "position",
              "description": "Controls which side the sidebar appears on. Moves the border line to the opposite edge.",
              "value": {
                "type": "'left' | 'right'",
                "default": "'left'"
              }
            },
            {
              "name": "width",
              "description": "Width of the sidebar. Accepts any CSS length value. Unset by default, which lets the rail fill whatever container it is placed in — including `arc-app-shell`, whose own rail is 280px wide and reads `--sidebar-width`. Set this only for a standalone sidebar; inside the shell the wrapper wins, and the token is the way to move both together.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "glow",
              "description": "Enables an accent glow effect on the active sidebar link for enhanced visual emphasis.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "label",
              "value": {
                "type": "string",
                "default": "'Sidebar navigation'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-navigate",
              "description": "Fired when a sidebar link is clicked"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "active",
                "description": "The href of the currently active sidebar link. Used to highlight the matching link with accent styling.",
                "type": "string"
              },
              {
                "name": "width",
                "description": "Width of the sidebar. Accepts any CSS length value. Unset by default, which lets the rail fill whatever container it is placed in — including `arc-app-shell`, whose own rail is 280px wide and reads `--sidebar-width`. Set this only for a standalone sidebar; inside the shell the wrapper wins, and the token is the way to move both together.",
                "type": "string"
              },
              {
                "name": "label",
                "type": "string"
              },
              {
                "name": "position",
                "description": "Controls which side the sidebar appears on. Moves the border line to the opposite edge.",
                "type": "'left' | 'right'"
              },
              {
                "name": "collapsed",
                "description": "When true, collapses the sidebar away entirely: width 0 with its contents clipped, which is the right behaviour for a rail that slides out of the way but is not an icon-only mode. For a persistent icon rail — the VS Code activity-bar shape — use `arc-rail`, which is a different component with its own labels and tooltips.",
                "type": "boolean"
              },
              {
                "name": "glow",
                "description": "Enables an accent glow effect on the active sidebar link for enhanced visual emphasis.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-navigate",
                "description": "Fired when a sidebar link is clicked"
              }
            ]
          }
        },
        {
          "name": "arc-skip-link",
          "description": "Accessible skip-to-content link, invisible until focused. On focus shows as accent-primary\nfilled pill with glow ring above the page.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **link**",
          "doc-url": "",
          "attributes": [
            {
              "name": "target",
              "description": "CSS selector for the element that should receive focus when the skip link is activated. Typically an ID like #main.",
              "value": {
                "type": "string",
                "default": "'#main'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "target",
                "description": "CSS selector for the element that should receive focus when the skip link is activated. Typically an ID like #main.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-spy-link",
          "description": "Navigation anchor that highlights when its target section is in view.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "target",
              "description": "ID of the section to observe",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "level",
              "description": "Nesting depth for visual indentation. Level 0 links render at default size; level 1+ links are indented and use a smaller font size.",
              "value": {
                "type": "number",
                "default": "0"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label"
              },
              {
                "name": "target",
                "description": "ID of the section to observe",
                "type": "string"
              },
              {
                "name": "level",
                "description": "Nesting depth for visual indentation. Level 0 links render at default size; level 1+ links are indented and use a smaller font size.",
                "type": "number"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-stepper-nav",
          "description": "Wizard navigation with back/next/skip controls and step validation gates. Steps connected by\ngradient lines with interactive routing.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the active step changes with detail: { step }.\n- **arc-complete** - Fired when the user confirms the final step.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base**\n- **steps**\n- **connector**\n- **indicator**\n- **panel**\n- **controls**",
          "doc-url": "",
          "attributes": [
            {
              "name": "steps",
              "description": "Array of step labels displayed along the progress track.",
              "value": {
                "type": "Array<string>",
                "default": "[]"
              }
            },
            {
              "name": "active",
              "description": "Zero-based index of the currently active step. Clamped to the steps that exist, so it can never name a step the wizard does not have.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "linear",
              "description": "When true, prevents jumping to future steps — the user must complete each step sequentially.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent<{ step: number }>",
              "description": "Fired when the active step changes with detail: { step }."
            },
            {
              "name": "arc-complete",
              "type": "CustomEvent<void>",
              "description": "Fired when the user confirms the final step."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "steps",
                "description": "Array of step labels displayed along the progress track.",
                "type": "Array<string>"
              },
              {
                "name": "active",
                "description": "Zero-based index of the currently active step. Clamped to the steps that exist, so it can never name a step the wizard does not have.",
                "type": "number"
              },
              {
                "name": "linear",
                "description": "When true, prevents jumping to future steps — the user must complete each step sequentially.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent<{ step: number }>",
                "description": "Fired when the active step changes with detail: { step }."
              },
              {
                "name": "arc-complete",
                "type": "CustomEvent<void>",
                "description": "Fired when the user confirms the final step."
              }
            ]
          }
        },
        {
          "name": "arc-tab",
          "description": "An individual tab panel within a Tabs group. Each Tab renders a button in the tab bar and owns\nits associated content panel. Use this sub-component when you need fine-grained control over\nindividual tab behavior, such as disabling a specific tab or attaching per-tab event listeners.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "Text displayed on the tab button. Keep labels concise — one or two words — to prevent the tab bar from overflowing.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, the tab button is dimmed, is skipped by the arrow keys and cannot be selected by click. A disabled tab that is already selected stays visible — disabling is not a way to hide a panel.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Text displayed on the tab button. Keep labels concise — one or two words — to prevent the tab bar from overflowing.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "When true, the tab button is dimmed, is skipped by the arrow keys and cannot be selected by click. A disabled tab that is already selected stays visible — disabling is not a way to hide a panel.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-tabs",
          "description": "Tabbed content navigation with keyboard support and ARIA roles.\n---\n\n\n### **Events:**\n - **arc-change** - Fired when the active tab changes\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **tabs**\n- **indicator** - The light that travels between tabs: the underline in the default variant, the ground behind the selection in `pills` and in vertical bars.",
          "doc-url": "",
          "attributes": [
            {
              "name": "selected",
              "description": "Zero-based index of the currently active tab. Changing this value programmatically switches the visible panel and updates ARIA attributes. Out-of-range values are clamped to the nearest valid index.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "align",
              "description": "Aligns the tab list. Options: 'start', 'center', 'end'.",
              "value": {
                "type": "'start' | 'center' | 'end'",
                "default": "'start'"
              }
            },
            {
              "name": "variant",
              "description": "Visual style of the tabs. Options: 'underline', 'pills'.",
              "value": {
                "type": "'underline' | 'pills'",
                "default": "'underline'"
              }
            },
            {
              "name": "orientation",
              "description": "Layout direction of the tab list. Use 'vertical' to place tabs in a sidebar column with the panel to the right. Arrow-key navigation automatically switches to up/down in vertical mode.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-change",
              "type": "CustomEvent",
              "description": "Fired when the active tab changes"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "selected",
                "description": "Zero-based index of the currently active tab. Changing this value programmatically switches the visible panel and updates ARIA attributes. Out-of-range values are clamped to the nearest valid index.",
                "type": "number"
              },
              {
                "name": "align",
                "description": "Aligns the tab list. Options: 'start', 'center', 'end'.",
                "type": "'start' | 'center' | 'end'"
              },
              {
                "name": "variant",
                "description": "Visual style of the tabs. Options: 'underline', 'pills'.",
                "type": "'underline' | 'pills'"
              },
              {
                "name": "orientation",
                "description": "Layout direction of the tab list. Use 'vertical' to place tabs in a sidebar column with the panel to the right. Arrow-key navigation automatically switches to up/down in vertical mode.",
                "type": "'horizontal' | 'vertical'"
              }
            ],
            "events": [
              {
                "name": "arc-change",
                "type": "CustomEvent",
                "description": "Fired when the active tab changes"
              }
            ]
          }
        },
        {
          "name": "arc-top-bar",
          "description": "Fixed header bar that anchors every page with a brand slot on the left, an optional center\nnavigation area, and a right-aligned actions region for user controls, search, and settings.\n---\n\n\n### **Events:**\n - **eventName**\n- **arc-sidebar-toggle** - Fired when the mobile menu toggle is clicked (sidebar mode)\n- **arc-mobile-menu-toggle** - Fired when the mobile hamburger button is clicked and mobile-menu mode is active. Use this to toggle your own mobile navigation panel.\n\n### **Slots:**\n - **logo**\n- **subtitle**\n- **center**\n- **actions**\n\n### **CSS Parts:**\n - **base** - The root element.\n- **menu-btn**\n- **content**\n- **brand**\n- **center**\n- **actions**\n- **topbar**",
          "doc-url": "",
          "attributes": [
            {
              "name": "heading",
              "description": "Brand text displayed in the top-left corner next to the optional logo slot. Rendered uppercase with wide letter-spacing at the wordmark size. Keep this to one or two words that identify the application.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "home-href",
              "description": "Destination of the brand link. Defaults to `/`; set it when the app is mounted under a sub-path, or to an empty string to render the brand as plain text with no link at all.",
              "value": {
                "type": "string",
                "default": "'/'"
              }
            },
            {
              "name": "scrolled",
              "description": "Reflects whether the page has scrolled past the bar's threshold. Set by the component, not by you — read it to style a scrolled state from outside, via `arc-top-bar[scrolled]`.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "immersive",
              "description": "Renders the bar with no background, blur or border until the page is scrolled, so a hero shows through it. Requires `fixed`. Suits marketing pages whose first screen is one composed image; leave it off in an application layout, where the bar should be a fixed edge among the other panels rather than something that appears and disappears.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "fixed",
              "description": "When true, the bar uses position: fixed so it stays at the top of the viewport while content scrolls underneath. Automatically applied when TopBar is placed inside an AppShell. Be sure to add matching top padding to the content below to prevent overlap.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "contained",
              "description": "Sets a max-width containment on the top bar content area. Accepts any CSS length or named size.",
              "value": {
                "type": "string",
                "default": "null"
              }
            },
            {
              "name": "menuOpen",
              "description": "Reflects whether the mobile hamburger menu is open. Toggling this value updates the aria-expanded attribute on the menu button. Typically managed by AppShell in response to the arc-sidebar-toggle event rather than set directly.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "mobile-menu",
              "description": "Controls the mobile menu behavior. When set to a value like \"nav\", the hamburger toggles an inline navigation panel instead of triggering sidebar toggle.",
              "value": {
                "type": "string",
                "default": "'sidebar'"
              }
            },
            {
              "name": "menu-position",
              "description": "Position of the mobile menu panel when mobile-menu is active.",
              "value": {
                "type": "string",
                "default": "'left'"
              }
            },
            {
              "name": "navAlign",
              "description": "Controls the alignment of content in the center slot. Pulls nav toward the brand or actions without reordering DOM.",
              "value": {
                "type": "'left' | 'center' | 'right'",
                "default": "'center'"
              }
            }
          ],
          "slots": [
            {
              "name": "logo"
            },
            {
              "name": "subtitle"
            },
            {
              "name": "center"
            },
            {
              "name": "actions"
            }
          ],
          "events": [
            {
              "name": "eventName",
              "type": "CustomEvent"
            },
            {
              "name": "arc-sidebar-toggle",
              "description": "Fired when the mobile menu toggle is clicked (sidebar mode)"
            },
            {
              "name": "arc-mobile-menu-toggle",
              "description": "Fired when the mobile hamburger button is clicked and mobile-menu mode is active. Use this to toggle your own mobile navigation panel."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "heading",
                "description": "Brand text displayed in the top-left corner next to the optional logo slot. Rendered uppercase with wide letter-spacing at the wordmark size. Keep this to one or two words that identify the application.",
                "type": "string"
              },
              {
                "name": "homeHref",
                "description": "Destination of the brand link. Defaults to `/`; set it when the app is mounted under a sub-path, or to an empty string to render the brand as plain text with no link at all.",
                "type": "string"
              },
              {
                "name": "contained",
                "description": "Sets a max-width containment on the top bar content area. Accepts any CSS length or named size.",
                "type": "string"
              },
              {
                "name": "mobileMenu",
                "description": "Controls the mobile menu behavior. When set to a value like \"nav\", the hamburger toggles an inline navigation panel instead of triggering sidebar toggle.",
                "type": "string"
              },
              {
                "name": "menuPosition",
                "description": "Position of the mobile menu panel when mobile-menu is active.",
                "type": "string"
              },
              {
                "name": "scrolled",
                "description": "Reflects whether the page has scrolled past the bar's threshold. Set by the component, not by you — read it to style a scrolled state from outside, via `arc-top-bar[scrolled]`.",
                "type": "boolean"
              },
              {
                "name": "immersive",
                "description": "Renders the bar with no background, blur or border until the page is scrolled, so a hero shows through it. Requires `fixed`. Suits marketing pages whose first screen is one composed image; leave it off in an application layout, where the bar should be a fixed edge among the other panels rather than something that appears and disappears.",
                "type": "boolean"
              },
              {
                "name": "fixed",
                "description": "When true, the bar uses position: fixed so it stays at the top of the viewport while content scrolls underneath. Automatically applied when TopBar is placed inside an AppShell. Be sure to add matching top padding to the content below to prevent overlap.",
                "type": "boolean"
              },
              {
                "name": "menuOpen",
                "description": "Reflects whether the mobile hamburger menu is open. Toggling this value updates the aria-expanded attribute on the menu button. Typically managed by AppShell in response to the arc-sidebar-toggle event rather than set directly.",
                "type": "boolean"
              },
              {
                "name": "navAlign",
                "description": "Controls the alignment of content in the center slot. Pulls nav toward the brand or actions without reordering DOM.",
                "type": "'left' | 'center' | 'right'"
              }
            ],
            "events": [
              {
                "name": "eventName",
                "type": "CustomEvent"
              },
              {
                "name": "arc-sidebar-toggle",
                "description": "Fired when the mobile menu toggle is clicked (sidebar mode)"
              },
              {
                "name": "arc-mobile-menu-toggle",
                "description": "Fired when the mobile hamburger button is clicked and mobile-menu mode is active. Use this to toggle your own mobile navigation panel."
              }
            ]
          }
        },
        {
          "name": "arc-tree-item",
          "description": "Node within a TreeView. Can nest for sub-trees.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "Item label text",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "icon",
              "description": "Icon or emoji",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "expanded",
              "description": "Expand child items",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "items",
                "description": "Nested arc-tree-item children"
              },
              {
                "name": "hasChildren"
              },
              {
                "name": "label",
                "description": "Item label text",
                "type": "string"
              },
              {
                "name": "icon",
                "description": "Icon or emoji",
                "type": "string"
              },
              {
                "name": "expanded",
                "description": "Expand child items",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-tree-view",
          "description": "Hierarchical tree structure with expandable/collapsible nodes, selection tracking, keyboard\nnavigation, and indentation guide lines.\n---\n\n\n### **Events:**\n - **arc-toggle** - Fired when a tree node is expanded or collapsed. `path` is the node's label chain from the root and is what identifies it — two nodes may share a label.\n- **arc-select** - Fired when a tree item is selected. `path` is the node's label chain from the root, matching `arc-toggle`.\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **tree** - The root list. The nested lists at deeper levels are `group`.\n- **group** - A nested list under an expanded branch.\n- **item**\n- **row**",
          "doc-url": "",
          "attributes": [],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-toggle",
              "type": "CustomEvent<{ item: { label: string, icon: string }, path: string[], expanded: boolean }>",
              "description": "Fired when a tree node is expanded or collapsed. `path` is the node's label chain from the root and is what identifies it — two nodes may share a label."
            },
            {
              "name": "arc-select",
              "type": "CustomEvent<{ value: string, item: { label: string, icon: string }, path: string[] }>",
              "description": "Fired when a tree item is selected. `path` is the node's label chain from the root, matching `arc-toggle`."
            }
          ],
          "js": {
            "properties": [],
            "events": [
              {
                "name": "arc-toggle",
                "type": "CustomEvent<{ item: { label: string, icon: string }, path: string[], expanded: boolean }>",
                "description": "Fired when a tree node is expanded or collapsed. `path` is the node's label chain from the root and is what identifies it — two nodes may share a label."
              },
              {
                "name": "arc-select",
                "type": "CustomEvent<{ value: string, item: { label: string, icon: string }, path: string[] }>",
                "description": "Fired when a tree item is selected. `path` is the node's label chain from the root, matching `arc-toggle`."
              }
            ]
          }
        },
        {
          "name": "arc-menu-divider",
          "description": "A visual separator between groups of menu items.\n---\n",
          "doc-url": "",
          "attributes": [],
          "slots": [],
          "events": [],
          "js": {
            "properties": [],
            "events": []
          }
        },
        {
          "name": "arc-menu-item",
          "description": "A single action entry inside the context menu.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "Display text for the menu item. Settable, and falls back to the element's text content when unset — `<arc-menu-item label=\"Cut\">` and `<arc-menu-item>Cut</arc-menu-item>` are equivalent.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "shortcut",
              "description": "Keyboard shortcut hint displayed on the right side.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the item, preventing interaction.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "icon",
              "description": "Name of the icon to display before the label.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "value",
              "description": "Stable identifier carried on the arc-select detail. Defaults to the label, which is fine until two items share one — give anything a handler must act on its own value rather than matching against display text.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "displayLabel",
                "description": "The text to draw.\n\n`label` was documented as a prop and implemented as a getter over\ntextContent with no setter and no attribute, so\n`<arc-menu-item label=\"Cut\"></arc-menu-item>` rendered a blank item —\nsilently, and the six generated wrappers exposed a writable `label` that\ndid nothing (finding #32). It is a real property now; the text-content form\nstays the fallback, so every existing consumer is unaffected."
              },
              {
                "name": "selectionValue",
                "description": "What arc-select reports. Falls back to the label so an item that never sets\n`value` behaves as it always did."
              },
              {
                "name": "label",
                "description": "Display text for the menu item. Settable, and falls back to the element's text content when unset — `<arc-menu-item label=\"Cut\">` and `<arc-menu-item>Cut</arc-menu-item>` are equivalent.",
                "type": "string"
              },
              {
                "name": "shortcut",
                "description": "Keyboard shortcut hint displayed on the right side.",
                "type": "string"
              },
              {
                "name": "icon",
                "description": "Name of the icon to display before the label.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "Stable identifier carried on the arc-select detail. Defaults to the label, which is fine until two items share one — give anything a handler must act on its own value rather than matching against display text.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the item, preventing interaction.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-option",
          "description": "Individual option element slotted into the segmented control. The `value` attribute identifies\nthe option and the text content becomes the label.\n\nAlso used inside Select and MultiSelect, where each option provides a value for form submission\nand its text content becomes the label shown in the dropdown.\n---\n\n\n### **Slots:**\n - _default_ - Default content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The value identifier for this option, used to match against the parent control value.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "disabled",
              "description": "When true, dims this option and prevents it from being selected.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "selected",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "Expose text content as label"
              },
              {
                "name": "value",
                "description": "The value identifier for this option, used to match against the parent control value.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "When true, dims this option and prevents it from being selected.",
                "type": "boolean"
              },
              {
                "name": "selected",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-blockquote",
          "description": "Styled pull-quote with optional citation for editorial emphasis.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **blockquote**\n- **quote**\n- **cite**",
          "doc-url": "",
          "attributes": [
            {
              "name": "cite",
              "description": "Citation or attribution text displayed beneath the quote with an em dash prefix",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "variant",
              "description": "Visual variant. Accent applies a gradient text fill to the quote content.",
              "value": {
                "type": "'default' | 'accent'",
                "default": "'default'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "cite",
                "description": "Citation or attribution text displayed beneath the quote with an em dash prefix",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Visual variant. Accent applies a gradient text fill to the quote content.",
                "type": "'default' | 'accent'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-code-block",
          "description": "Syntax-highlighted code display with optional filename and copy button.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **titlebar**\n- **orbs**\n- **filename**\n- **header**\n- **lang**\n- **status-bar**\n- **lines**\n- **code-block**\n- **copy**\n- **body**\n- **pre**\n- **code**",
          "doc-url": "",
          "attributes": [
            {
              "name": "language",
              "description": "Programming language identifier (e.g. `js`, `css`, `html`). Displayed in uppercase in the header bar.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "filename",
              "description": "Optional filename displayed in the header in monospace font. When empty, the header shows only the language.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "code",
              "description": "Code content to display. Used as the `<pre><code>` content and copied to clipboard when the copy button is clicked.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "variant",
              "description": "Visual variant. `default` shows the standard layout with optional filename header and status bar. `window` adds a macOS-style title bar with colored orbs and centered filename. `basic` strips all chrome for a compact, minimal display.",
              "value": {
                "type": "'default' | 'window' | 'basic'",
                "default": "'default'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "language",
                "description": "Programming language identifier (e.g. `js`, `css`, `html`). Displayed in uppercase in the header bar.",
                "type": "string"
              },
              {
                "name": "filename",
                "description": "Optional filename displayed in the header in monospace font. When empty, the header shows only the language.",
                "type": "string"
              },
              {
                "name": "code",
                "description": "Code content to display. Used as the `<pre><code>` content and copied to clipboard when the copy button is clicked.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Visual variant. `default` shows the standard layout with optional filename header and status bar. `window` adds a macOS-style title bar with colored orbs and centered filename. `basic` strips all chrome for a compact, minimal display.",
                "type": "'default' | 'window' | 'basic'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-gradient-text",
          "description": "Inline text wrapper that applies gradient fills to text declaratively.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **text**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Predefined gradient variant to apply",
              "value": {
                "type": "'accent' | 'display' | 'sunset' | 'ocean' | 'custom'",
                "default": "'accent'"
              }
            },
            {
              "name": "gradient",
              "description": "Custom CSS gradient string, used when variant is set to custom",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "animated",
              "description": "Animate the gradient with a shifting background-position cycle",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "gradient",
                "description": "Custom CSS gradient string, used when variant is set to custom",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "Predefined gradient variant to apply",
                "type": "'accent' | 'display' | 'sunset' | 'ocean' | 'custom'"
              },
              {
                "name": "animated",
                "description": "Animate the gradient with a shifting background-position cycle",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-highlight",
          "description": "Text highlighting with search query match markers.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **text**\n- **mark**",
          "doc-url": "",
          "attributes": [
            {
              "name": "text",
              "description": "The full text to display and search within",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "query",
              "description": "The search query to highlight within the text",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "caseSensitive",
              "description": "Whether matching should be case-sensitive",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "text",
                "description": "The full text to display and search within",
                "type": "string"
              },
              {
                "name": "query",
                "description": "The search query to highlight within the text",
                "type": "string"
              },
              {
                "name": "caseSensitive",
                "description": "Whether matching should be case-sensitive",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-kbd",
          "description": "Keyboard key indicator styled like a physical key.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **kbd**",
          "doc-url": "",
          "attributes": [],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [],
            "events": []
          }
        },
        {
          "name": "arc-keyboard-map",
          "description": "A rendered keyboard with highlighted keys and chords — the visual big\nsibling of arc-kbd and arc-hotkey, for shortcut documentation and editor\ncheat sheets. Every key named in `highlight` lights up with the house\nstate marking: accent tint, glow, accent legend text.\n\nThe board is a stylised diagram, not a keyboard configurator: `compact`\n(the default) is a 60%-style block without nav cluster or numpad — enough\nfor almost all shortcut documentation — and `ansi` adds the F-row and nav\ncluster. There is deliberately no ISO/JIS machinery; a diagram that\nchased physical-layout fidelity would trade its one job (making a chord\nlegible at a glance) for configuration surface.\n\nIt is pure display typography — no slots, no click events, nothing\nfocusable. A shortcut diagram that responded to clicks would imply the\nkeys do something; wiring real shortcuts is arc-hotkey's job.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **board**\n- **key**\n- **key-highlighted**\n- **caption**",
          "doc-url": "",
          "attributes": [
            {
              "name": "layout",
              "description": "Board shape: \"compact\" (default, a 60%-style block) or \"ansi\" (adds the F-row and nav cluster). Unknown values fall back to compact.",
              "value": {
                "type": "'compact' | 'ansi'",
                "default": "'compact'"
              }
            },
            {
              "name": "highlight",
              "description": "Key chords to light up: an array property (e.g. [\"mod+z\", \"mod+shift+z\"]) or a comma- or space-separated attribute string. Each chord joins keys with \"+\" (\"mod+shift+p\"); `mod` resolves to Cmd on mac and Ctrl on win, mirroring arc-hotkey's aliases (cmd/command → meta, option → alt, control → ctrl). Single keys are fine (\"g\", \"escape\"). Unknown key names are ignored.",
              "value": {
                "type": "string|string[]",
                "default": "''"
              }
            },
            {
              "name": "labels",
              "description": "Whether keys render their legends. Default true; disable from markup with either `no-labels` or `labels=\"false\"`.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "platform",
              "description": "Which platform's modifier legends and `mod` resolution to use: \"auto\" (default — detected in the browser, mac on the server), \"mac\", or \"win\".",
              "value": {
                "type": "'auto' | 'mac' | 'win'",
                "default": "'auto'"
              }
            },
            {
              "name": "caption",
              "description": "Optional caption rendered below the board in muted text.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "layout",
                "description": "Board shape: \"compact\" (default, a 60%-style block) or \"ansi\" (adds the F-row and nav cluster). Unknown values fall back to compact.",
                "type": "'compact' | 'ansi'"
              },
              {
                "name": "highlight",
                "description": "Key chords to light up: an array property (e.g. [\"mod+z\", \"mod+shift+z\"]) or a comma- or space-separated attribute string. Each chord joins keys with \"+\" (\"mod+shift+p\"); `mod` resolves to Cmd on mac and Ctrl on win, mirroring arc-hotkey's aliases (cmd/command → meta, option → alt, control → ctrl). Single keys are fine (\"g\", \"escape\"). Unknown key names are ignored.",
                "type": "string|string[]"
              },
              {
                "name": "labels",
                "description": "Whether keys render their legends. Default true; disable from markup with either `no-labels` or `labels=\"false\"`.",
                "type": "boolean"
              },
              {
                "name": "platform",
                "description": "Which platform's modifier legends and `mod` resolution to use: \"auto\" (default — detected in the browser, mac on the server), \"mac\", or \"win\".",
                "type": "'auto' | 'mac' | 'win'"
              },
              {
                "name": "caption",
                "description": "Optional caption rendered below the board in muted text.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-markdown",
          "description": "Renders markdown content as styled HTML with zero dependencies. Supports headings, lists, code\nblocks, blockquotes, links, images, and inline formatting.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **markdown**",
          "doc-url": "",
          "attributes": [
            {
              "name": "content",
              "description": "Markdown string to parse and render. Takes precedence over slotted text content.",
              "value": {
                "type": "string",
                "default": "''"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "content",
                "description": "Markdown string to parse and render. Takes precedence over slotted text content.",
                "type": "string"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-number-format",
          "description": "Locale-aware number, currency, percentage, and compact formatter using Intl.NumberFormat.\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **number**",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The number to format",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "type",
              "description": "Formatting style to apply",
              "value": {
                "type": "'number' | 'currency' | 'percent' | 'compact'",
                "default": "'number'"
              }
            },
            {
              "name": "locale",
              "description": "BCP 47 locale tag for locale-aware formatting",
              "value": {
                "type": "string",
                "default": "'en-US'"
              }
            },
            {
              "name": "currency",
              "description": "ISO 4217 currency code, used when type is \"currency\"",
              "value": {
                "type": "string",
                "default": "'USD'"
              }
            },
            {
              "name": "decimals",
              "description": "Number of decimal places, 0 to 20 — `Intl.NumberFormat`'s own range. Unset uses a per-format default: 0 for number, 2 for currency, 1 for percent.",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "notation",
              "description": "Number notation — compact gives \"12.3K\", \"1.2M\"",
              "value": {
                "type": "'standard' | 'compact'",
                "default": "'standard'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "locale",
                "description": "BCP 47 locale tag for locale-aware formatting",
                "type": "string"
              },
              {
                "name": "currency",
                "description": "ISO 4217 currency code, used when type is \"currency\"",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The number to format",
                "type": "number"
              },
              {
                "name": "type",
                "description": "Formatting style to apply",
                "type": "'number' | 'currency' | 'percent' | 'compact'"
              },
              {
                "name": "decimals",
                "description": "Number of decimal places, 0 to 20 — `Intl.NumberFormat`'s own range. Unset uses a per-format default: 0 for number, 2 for currency, 1 for percent.",
                "type": "number"
              },
              {
                "name": "notation",
                "description": "Number notation — compact gives \"12.3K\", \"1.2M\"",
                "type": "'standard' | 'compact'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-prose",
          "description": "Long-form content container that applies typographic rhythm and styling to slotted HTML\nelements.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **prose**",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Controls the base font size of the prose container. Affects paragraph text; headings and code maintain their own scale.",
              "value": {
                "type": "'sm' | 'md' | 'lg'",
                "default": "'md'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "size",
                "description": "Controls the base font size of the prose container. Affects paragraph text; headings and code maintain their own scale.",
                "type": "'sm' | 'md' | 'lg'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-terminal",
          "description": "Animated terminal window: a chrome'd frame that types commands\ncharacter-by-character and prints their output line by line.\n\nThe typing machinery mirrors arc-typewriter's setTimeout chain rather than\nimporting it — typewriter animates one string, this sequences many lines\nwith three behaviors, and a shared chain would serve neither cleanly.\n\nServer-side the full completed transcript renders (no animation in Node);\non the client, autoplay blanks it before first paint and replays it when\nthe element scrolls into view. Under prefers-reduced-motion the transcript\nrenders complete immediately and nothing animates — the same policy\narc-typewriter follows.\n---\n\n\n### **Events:**\n - **arc-complete** - Fired when the whole sequence has finished printing (each cycle, when looping)\n\n### **Methods:**\n - **play(): _void_** - Play the sequence from the beginning.\n- **reset(): _void_** - Return to the blank, pre-animation state without starting playback.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **terminal**\n- **titlebar**\n- **orbs**\n- **title**\n- **body**\n- **line**\n- **prompt**\n- **text**\n- **cursor**",
          "doc-url": "",
          "attributes": [
            {
              "name": "lines",
              "description": "The transcript, as objects of shape { type: 'command' | 'output' | 'comment', text: string, delay?: number }. Commands get the prompt glyph and type character-by-character; output lines appear whole; comments render muted. `delay` is milliseconds before the line starts (default 500 for commands, 150 otherwise). Set it from script, a framework binding, or a JSON attribute.",
              "value": {
                "type": "Array",
                "default": "[]"
              }
            },
            {
              "name": "prompt",
              "description": "Prompt glyph rendered before each command line.",
              "value": {
                "type": "string",
                "default": "'$'"
              }
            },
            {
              "name": "title",
              "description": "Text centered in the window chrome bar. Empty hides it, leaving only the orbs.",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "speed",
              "description": "Milliseconds per character when typing command lines.",
              "value": {
                "type": "number",
                "default": "50"
              }
            },
            {
              "name": "autoplay",
              "description": "Start the animation when the element scrolls into view. Defaults to true; disable from JS or a framework wrapper with a false property value, then drive it with play().",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "loop",
              "description": "Replay the transcript indefinitely, pausing briefly at the end of each cycle.",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-complete",
              "type": "CustomEvent<void>",
              "description": "Fired when the whole sequence has finished printing (each cycle, when looping)"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "prompt",
                "description": "Prompt glyph rendered before each command line.",
                "type": "string"
              },
              {
                "name": "title",
                "description": "Text centered in the window chrome bar. Empty hides it, leaving only the orbs.",
                "type": "string"
              },
              {
                "name": "speed",
                "description": "Milliseconds per character when typing command lines.",
                "type": "number"
              },
              {
                "name": "lines",
                "description": "The transcript, as objects of shape { type: 'command' | 'output' | 'comment', text: string, delay?: number }. Commands get the prompt glyph and type character-by-character; output lines appear whole; comments render muted. `delay` is milliseconds before the line starts (default 500 for commands, 150 otherwise). Set it from script, a framework binding, or a JSON attribute.",
                "type": "Array"
              },
              {
                "name": "autoplay",
                "description": "Start the animation when the element scrolls into view. Defaults to true; disable from JS or a framework wrapper with a false property value, then drive it with play().",
                "type": "boolean"
              },
              {
                "name": "loop",
                "description": "Replay the transcript indefinitely, pausing briefly at the end of each cycle.",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-complete",
                "type": "CustomEvent<void>",
                "description": "Fired when the whole sequence has finished printing (each cycle, when looping)"
              }
            ]
          }
        },
        {
          "name": "arc-text",
          "description": "Typography component with variants matching the arclight type scale.\n---\n\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **text**",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "Typography variant that controls font size, weight, letter-spacing, line-height, and color.",
              "value": {
                "type": "'display' | 'heading' | 'body' | 'muted' | 'ghost' | 'accent' | 'label' | 'wordmark' | 'code'",
                "default": "'body'"
              }
            },
            {
              "name": "as",
              "description": "The HTML element to render. Allows semantic heading hierarchy to be set independently from the visual variant.",
              "value": {
                "type": "'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span'",
                "default": "'p'"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "variant",
                "description": "Typography variant that controls font size, weight, letter-spacing, line-height, and color.",
                "type": "'display' | 'heading' | 'body' | 'muted' | 'ghost' | 'accent' | 'label' | 'wordmark' | 'code'"
              },
              {
                "name": "as",
                "description": "The HTML element to render. Allows semantic heading hierarchy to be set independently from the visual variant.",
                "type": "'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span'"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-time-ago",
          "description": "Relative time display that auto-updates (\"3 minutes ago\", \"yesterday\").\n---\n\n\n### **CSS Parts:**\n - **base** - The root element.\n- **time**",
          "doc-url": "",
          "attributes": [
            {
              "name": "datetime",
              "description": "ISO 8601 date string or any value parseable by new Date().",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "live",
              "description": "Auto-update the relative time on an adaptive interval.",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "locale",
              "description": "BCP 47 locale tag for Intl.RelativeTimeFormat output.",
              "value": {
                "type": "string",
                "default": "'en-US'"
              }
            }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "datetime",
                "description": "ISO 8601 date string or any value parseable by new Date().",
                "type": "string"
              },
              {
                "name": "locale",
                "description": "BCP 47 locale tag for Intl.RelativeTimeFormat output.",
                "type": "string"
              },
              {
                "name": "live",
                "description": "Auto-update the relative time on an adaptive interval.",
                "type": "boolean"
              }
            ],
            "events": []
          }
        },
        {
          "name": "arc-truncate",
          "description": "Multi-line text clamping with expandable show-more toggle.\n---\n\n\n### **Events:**\n - **arc-toggle** - Fired when expand/collapse toggle is clicked, with { expanded } detail\n\n### **Slots:**\n - _default_ - Default content.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **content**\n- **toggle**",
          "doc-url": "",
          "attributes": [
            {
              "name": "lines",
              "description": "Maximum number of visible lines before clamping",
              "value": {
                "type": "number",
                "default": "3"
              }
            },
            {
              "name": "expanded",
              "description": "Whether the text is fully expanded",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Default content."
            }
          ],
          "events": [
            {
              "name": "arc-toggle",
              "type": "CustomEvent<{ expanded: boolean }>",
              "description": "Fired when expand/collapse toggle is clicked, with { expanded } detail"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "lines",
                "description": "Maximum number of visible lines before clamping",
                "type": "number"
              },
              {
                "name": "expanded",
                "description": "Whether the text is fully expanded",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-toggle",
                "type": "CustomEvent<{ expanded: boolean }>",
                "description": "Fired when expand/collapse toggle is clicked, with { expanded } detail"
              }
            ]
          }
        },
        {
          "name": "arc-typewriter",
          "description": "Character-by-character text reveal animation with blinking cursor.\n---\n\n\n### **Events:**\n - **arc-complete** - Fired when the typing animation finishes revealing all characters\n\n### **Methods:**\n - **replay(): _void_** - Restart the typing animation from the beginning.\n\n### **CSS Parts:**\n - **base** - The root element.\n- **text**",
          "doc-url": "",
          "attributes": [
            {
              "name": "text",
              "description": "The text to type out character by character",
              "value": {
                "type": "string",
                "default": "''"
              }
            },
            {
              "name": "speed",
              "description": "Milliseconds per character",
              "value": {
                "type": "number",
                "default": "50"
              }
            },
            {
              "name": "delay",
              "description": "Initial delay in milliseconds before typing starts",
              "value": {
                "type": "number",
                "default": "0"
              }
            },
            {
              "name": "cursor",
              "description": "Show a blinking cursor during and after typing",
              "value": {
                "type": "boolean",
                "default": "true"
              }
            },
            {
              "name": "loop",
              "description": "Loop the animation indefinitely",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "nowrap",
              "value": {
                "type": "boolean",
                "default": "false"
              }
            },
            {
              "name": "pause-end",
              "description": "Milliseconds to pause at the end before looping",
              "value": {
                "type": "number",
                "default": "2000"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "arc-complete",
              "type": "CustomEvent<void>",
              "description": "Fired when the typing animation finishes revealing all characters"
            }
          ],
          "js": {
            "properties": [
              {
                "name": "text",
                "description": "The text to type out character by character",
                "type": "string"
              },
              {
                "name": "speed",
                "description": "Milliseconds per character",
                "type": "number"
              },
              {
                "name": "delay",
                "description": "Initial delay in milliseconds before typing starts",
                "type": "number"
              },
              {
                "name": "pauseEnd",
                "description": "Milliseconds to pause at the end before looping",
                "type": "number"
              },
              {
                "name": "cursor",
                "description": "Show a blinking cursor during and after typing",
                "type": "boolean"
              },
              {
                "name": "loop",
                "description": "Loop the animation indefinitely",
                "type": "boolean"
              },
              {
                "name": "nowrap",
                "type": "boolean"
              }
            ],
            "events": [
              {
                "name": "arc-complete",
                "type": "CustomEvent<void>",
                "description": "Fired when the typing animation finishes revealing all characters"
              }
            ]
          }
        }
      ]
    },
    "css": {
      "properties": [],
      "pseudo-elements": [
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(accordion)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(inner)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(group)"
        },
        {
          "name": "part(overflow)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(img)"
        },
        {
          "name": "part(initials)"
        },
        {
          "name": "part(avatar)"
        },
        {
          "name": "part(status)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(inner)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(carousel)"
        },
        {
          "name": "part(viewport)"
        },
        {
          "name": "part(arrow-prev)"
        },
        {
          "name": "part(arrow-next)"
        },
        {
          "name": "part(dots)"
        },
        {
          "name": "part(dot)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(collapsible)"
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(heading)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(swatch)"
        },
        {
          "name": "part(color)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(background)"
        },
        {
          "name": "part(inner)"
        },
        {
          "name": "part(eyebrow)"
        },
        {
          "name": "part(headline)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(actions)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(divider)"
        },
        {
          "name": "part(line)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(heading)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(actions)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(inner)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(title)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(action)"
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(pin)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)",
          "description": "The clipping frame wrapping both layers."
        },
        {
          "name": "part(before)",
          "description": "The clipped before layer."
        },
        {
          "name": "part(after)",
          "description": "The base after layer."
        },
        {
          "name": "part(divider)",
          "description": "The hairline divider."
        },
        {
          "name": "part(handle)",
          "description": "The circular grab handle (the focusable slider)."
        },
        {
          "name": "part(label-before)",
          "description": "The before caption chip."
        },
        {
          "name": "part(label-after)",
          "description": "The after caption chip."
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(fallback)"
        },
        {
          "name": "part(image)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(end-text)"
        },
        {
          "name": "part(spinner)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(backdrop)"
        },
        {
          "name": "part(bar)"
        },
        {
          "name": "part(counter)"
        },
        {
          "name": "part(zoom)"
        },
        {
          "name": "part(close)"
        },
        {
          "name": "part(prev)"
        },
        {
          "name": "part(next)"
        },
        {
          "name": "part(figure)"
        },
        {
          "name": "part(image)"
        },
        {
          "name": "part(caption)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(group)"
        },
        {
          "name": "part(group-duplicate)"
        },
        {
          "name": "part(base)",
          "description": "The root element. Which element that is depends on `contrast`: the card wrapper when it is set, the svg otherwise — which is the case `base` exists for."
        },
        {
          "name": "part(svg)"
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(scroll-area)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(bar)"
        },
        {
          "name": "part(fill)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(skeleton)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(spinner)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)",
          "description": "The player frame."
        },
        {
          "name": "part(video)",
          "description": "The native video element."
        },
        {
          "name": "part(overlay)",
          "description": "The pre-play overlay covering the poster."
        },
        {
          "name": "part(play-button)",
          "description": "The large centered play button inside the overlay."
        },
        {
          "name": "part(controls)",
          "description": "The control bar."
        },
        {
          "name": "part(play-toggle)",
          "description": "The play/pause button in the control bar."
        },
        {
          "name": "part(time)",
          "description": "The current/total time readout."
        },
        {
          "name": "part(scrubber)",
          "description": "The seek range input."
        },
        {
          "name": "part(mute-button)",
          "description": "The mute toggle button."
        },
        {
          "name": "part(fullscreen-button)",
          "description": "The fullscreen button."
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(spacer)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(heatmap)"
        },
        {
          "name": "part(months)"
        },
        {
          "name": "part(month)"
        },
        {
          "name": "part(weekdays)"
        },
        {
          "name": "part(weekday)"
        },
        {
          "name": "part(grid)"
        },
        {
          "name": "part(cell)"
        },
        {
          "name": "part(detail)"
        },
        {
          "name": "part(legend)"
        },
        {
          "name": "part(swatch)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(badge)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(axis)"
        },
        {
          "name": "part(tooltip)"
        },
        {
          "name": "part(chart)"
        },
        {
          "name": "part(legend)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(face)"
        },
        {
          "name": "part(time)"
        },
        {
          "name": "part(timezone)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(svg)"
        },
        {
          "name": "part(hand-hour)"
        },
        {
          "name": "part(hand-minute)"
        },
        {
          "name": "part(hand-second)"
        },
        {
          "name": "part(pin)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(table)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(feature)"
        },
        {
          "name": "part(cell)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(separator)"
        },
        {
          "name": "part(segment)"
        },
        {
          "name": "part(number)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(header-cell)"
        },
        {
          "name": "part(cell)"
        },
        {
          "name": "part(editor)"
        },
        {
          "name": "part(row)"
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(table)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(term)"
        },
        {
          "name": "part(detail)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(list)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(line)"
        },
        {
          "name": "part(line-number)"
        },
        {
          "name": "part(prefix)"
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(gauge)"
        },
        {
          "name": "part(svg)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(arc)"
        },
        {
          "name": "part(readout)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(unit)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(row)"
        },
        {
          "name": "part(key)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(preview)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(card-label)"
        },
        {
          "name": "part(card-description)"
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(column)"
        },
        {
          "name": "part(column-header)"
        },
        {
          "name": "part(column-title)"
        },
        {
          "name": "part(column-count)"
        },
        {
          "name": "part(list)"
        },
        {
          "name": "part(dropzone)"
        },
        {
          "name": "part(board)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(meter)",
          "description": "The outer wrapper carrying role=\"meter\"."
        },
        {
          "name": "part(track)",
          "description": "The tinted track containing segments or the continuous fill."
        },
        {
          "name": "part(segment)",
          "description": "Each discrete segment (segmented mode only)."
        },
        {
          "name": "part(fill)",
          "description": "The continuous fill bar (segments=0 only)."
        },
        {
          "name": "part(peak)",
          "description": "The thin peak-hold line."
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(list)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(meter)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(fill)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(area)"
        },
        {
          "name": "part(line)"
        },
        {
          "name": "part(bar)"
        },
        {
          "name": "part(svg)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(stat)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(trend)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(stepper)"
        },
        {
          "name": "part(step)"
        },
        {
          "name": "part(line)"
        },
        {
          "name": "part(circle)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(tag)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(remove)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(timeline)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(marker)"
        },
        {
          "name": "part(dot)"
        },
        {
          "name": "part(line)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(title)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(date)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(uptime)"
        },
        {
          "name": "part(summary)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(tick)"
        },
        {
          "name": "part(detail)"
        },
        {
          "name": "part(caption)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(title)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(waveform)",
          "description": "The interactive track region wrapping the SVG and playhead."
        },
        {
          "name": "part(svg)",
          "description": "The SVG element."
        },
        {
          "name": "part(unplayed)",
          "description": "The unplayed (muted) waveform layer. Named `base` before v4, which is the name the root element takes across every component now."
        },
        {
          "name": "part(played)",
          "description": "The played (accent) waveform layer."
        },
        {
          "name": "part(playhead)",
          "description": "The playhead line."
        },
        {
          "name": "part(time)",
          "description": "The time readout row (renders only when duration is set)."
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(alert)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(heading)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(dismiss)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(region)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(banner)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(message)"
        },
        {
          "name": "part(dismiss)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(match)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(dialog)",
          "description": "The palette panel. The scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--palette-backdrop` custom property."
        },
        {
          "name": "part(search)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(results)"
        },
        {
          "name": "part(empty)"
        },
        {
          "name": "part(group-heading)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(message)"
        },
        {
          "name": "part(cancel)"
        },
        {
          "name": "part(confirm)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(status)"
        },
        {
          "name": "part(dot)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(menu)"
        },
        {
          "name": "part(divider)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(conversation)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(dialog)",
          "description": "The dialog panel. Same element as `base`; the scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--dialog-backdrop` and `--dialog-backdrop-filter` custom properties."
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(close)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(divider)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(shortcut)"
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(overlay)"
        },
        {
          "name": "part(spinner)"
        },
        {
          "name": "part(message)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(message)"
        },
        {
          "name": "part(meta)"
        },
        {
          "name": "part(bubble)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(progress)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(spinner)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(fill)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(close)"
        },
        {
          "name": "part(panel)",
          "description": "The sliding panel. The scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--sheet-backdrop` and `--sheet-backdrop-filter` custom properties."
        },
        {
          "name": "part(handle)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(toast)"
        },
        {
          "name": "part(action)"
        },
        {
          "name": "part(dismiss)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(fill)"
        },
        {
          "name": "part(cancel)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(popup)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(group)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(button)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(calendar)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(nav-prev)"
        },
        {
          "name": "part(title)"
        },
        {
          "name": "part(nav-next)"
        },
        {
          "name": "part(grid)"
        },
        {
          "name": "part(dow)"
        },
        {
          "name": "part(day)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(checkbox)"
        },
        {
          "name": "part(box)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(chip)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(picker)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(area)"
        },
        {
          "name": "part(hue-track)"
        },
        {
          "name": "part(hex-row)"
        },
        {
          "name": "part(preview)"
        },
        {
          "name": "part(hex-input)"
        },
        {
          "name": "part(presets)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(listbox)"
        },
        {
          "name": "part(option)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(button)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(input-wrapper)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(calendar)"
        },
        {
          "name": "part(panel-title)"
        },
        {
          "name": "part(day)"
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(input-wrapper)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(presets)"
        },
        {
          "name": "part(preset)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(fieldset)"
        },
        {
          "name": "part(legend)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(dropzone)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(file-list)"
        },
        {
          "name": "part(file-item)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(form)"
        },
        {
          "name": "part(layout)"
        },
        {
          "name": "part(errors)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(button)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(stage)"
        },
        {
          "name": "part(image)"
        },
        {
          "name": "part(skeleton)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(crop)"
        },
        {
          "name": "part(handle)"
        },
        {
          "name": "part(zoom)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(display)",
          "description": "The display-state button wrapping the text and pencil affordance."
        },
        {
          "name": "part(field)",
          "description": "The input or textarea shown while editing."
        },
        {
          "name": "part(icon)",
          "description": "The pencil affordance icon."
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(group)"
        },
        {
          "name": "part(prefix)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(suffix)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(field)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(prefix)"
        },
        {
          "name": "part(suffix)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(knob)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(dial)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(fill)"
        },
        {
          "name": "part(indicator)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(field)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(prefix)"
        },
        {
          "name": "part(suffix)"
        },
        {
          "name": "part(hint)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(control)"
        },
        {
          "name": "part(tag)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(option)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(controls)"
        },
        {
          "name": "part(decrement)"
        },
        {
          "name": "part(field)"
        },
        {
          "name": "part(increment)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(strength)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(field)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(toggle)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(pin)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(boxes)"
        },
        {
          "name": "part(box)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(group)"
        },
        {
          "name": "part(circle)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(range-slider)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(values)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(rail)"
        },
        {
          "name": "part(fill)"
        },
        {
          "name": "part(thumb-low)"
        },
        {
          "name": "part(thumb-high)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(star)"
        },
        {
          "name": "part(rating)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(spinner)"
        },
        {
          "name": "part(clear)"
        },
        {
          "name": "part(suggestions)"
        },
        {
          "name": "part(suggestion)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(control)"
        },
        {
          "name": "part(option)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(select)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(pad)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(canvas)"
        },
        {
          "name": "part(placeholder)"
        },
        {
          "name": "part(clear)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(slider)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(value)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(list)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(handle)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(fieldset)"
        },
        {
          "name": "part(legend)"
        },
        {
          "name": "part(group)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(field)"
        },
        {
          "name": "part(tag)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(option)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(textarea)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(counter)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(button)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(wrapper)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(input-wrapper)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(toggle)"
        },
        {
          "name": "part(track)"
        },
        {
          "name": "part(thumb)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(pane)"
        },
        {
          "name": "part(pane-header)"
        },
        {
          "name": "part(search)"
        },
        {
          "name": "part(listbox)"
        },
        {
          "name": "part(option)"
        },
        {
          "name": "part(controls)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(tree-select)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(row)"
        },
        {
          "name": "part(error)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(shell)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(sidebar)"
        },
        {
          "name": "part(main)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(toc)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(grid)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(shell)"
        },
        {
          "name": "part(form-side)"
        },
        {
          "name": "part(logo)"
        },
        {
          "name": "part(card)"
        },
        {
          "name": "part(footer)"
        },
        {
          "name": "part(aside)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(grid)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(bar)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(masonry)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(above)"
        },
        {
          "name": "part(title-row)"
        },
        {
          "name": "part(heading)"
        },
        {
          "name": "part(aside)"
        },
        {
          "name": "part(description)"
        },
        {
          "name": "part(below)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(layout)"
        },
        {
          "name": "part(sidebar)"
        },
        {
          "name": "part(main)"
        },
        {
          "name": "part(aside)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(container)"
        },
        {
          "name": "part(handle)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(switcher)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(section)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(layout)"
        },
        {
          "name": "part(nav)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(primary)"
        },
        {
          "name": "part(handle)"
        },
        {
          "name": "part(secondary)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(prefix)"
        },
        {
          "name": "part(center)"
        },
        {
          "name": "part(suffix)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(more)"
        },
        {
          "name": "part(overflow-panel)"
        },
        {
          "name": "part(overflow-item)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(prefix)"
        },
        {
          "name": "part(center)"
        },
        {
          "name": "part(suffix)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(separator)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(dropdown-item)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(breadcrumb)"
        },
        {
          "name": "part(current)"
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(separator)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(icon)"
        },
        {
          "name": "part(input)"
        },
        {
          "name": "part(hint)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(panel)",
          "description": "The sliding panel. Same element as `base`; the scrim is `::backdrop`, which is not an element and so cannot be a part — style it with the `--drawer-backdrop` custom property."
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(title)"
        },
        {
          "name": "part(close)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(brand)"
        },
        {
          "name": "part(columns)"
        },
        {
          "name": "part(social)"
        },
        {
          "name": "part(legal)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(menu)"
        },
        {
          "name": "part(divider)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(shortcut)"
        },
        {
          "name": "part(bar)"
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(nav)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(trigger)"
        },
        {
          "name": "part(dropdown)"
        },
        {
          "name": "part(dropdown-item)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(dot)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(prev)"
        },
        {
          "name": "part(next)"
        },
        {
          "name": "part(pagination)"
        },
        {
          "name": "part(label)"
        },
        {
          "name": "part(ellipsis)"
        },
        {
          "name": "part(page)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(scroll-spy)"
        },
        {
          "name": "part(heading)"
        },
        {
          "name": "part(ring)"
        },
        {
          "name": "part(list)"
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(button)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(sidebar)"
        },
        {
          "name": "part(section)"
        },
        {
          "name": "part(toggle)"
        },
        {
          "name": "part(heading)"
        },
        {
          "name": "part(links)"
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(link-icon)"
        },
        {
          "name": "part(heading-icon)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(link)"
        },
        {
          "name": "part(base)"
        },
        {
          "name": "part(steps)"
        },
        {
          "name": "part(connector)"
        },
        {
          "name": "part(indicator)"
        },
        {
          "name": "part(panel)"
        },
        {
          "name": "part(controls)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(tabs)"
        },
        {
          "name": "part(indicator)",
          "description": "The light that travels between tabs: the underline in the default variant, the ground behind the selection in `pills` and in vertical bars."
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(menu-btn)"
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(brand)"
        },
        {
          "name": "part(center)"
        },
        {
          "name": "part(actions)"
        },
        {
          "name": "part(topbar)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(tree)",
          "description": "The root list. The nested lists at deeper levels are `group`."
        },
        {
          "name": "part(group)",
          "description": "A nested list under an expanded branch."
        },
        {
          "name": "part(item)"
        },
        {
          "name": "part(row)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(blockquote)"
        },
        {
          "name": "part(quote)"
        },
        {
          "name": "part(cite)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(titlebar)"
        },
        {
          "name": "part(orbs)"
        },
        {
          "name": "part(filename)"
        },
        {
          "name": "part(header)"
        },
        {
          "name": "part(lang)"
        },
        {
          "name": "part(status-bar)"
        },
        {
          "name": "part(lines)"
        },
        {
          "name": "part(code-block)"
        },
        {
          "name": "part(copy)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(pre)"
        },
        {
          "name": "part(code)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(text)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(text)"
        },
        {
          "name": "part(mark)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(kbd)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(board)"
        },
        {
          "name": "part(key)"
        },
        {
          "name": "part(key-highlighted)"
        },
        {
          "name": "part(caption)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(markdown)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(number)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(prose)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(terminal)"
        },
        {
          "name": "part(titlebar)"
        },
        {
          "name": "part(orbs)"
        },
        {
          "name": "part(title)"
        },
        {
          "name": "part(body)"
        },
        {
          "name": "part(line)"
        },
        {
          "name": "part(prompt)"
        },
        {
          "name": "part(text)"
        },
        {
          "name": "part(cursor)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(text)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(time)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(content)"
        },
        {
          "name": "part(toggle)"
        },
        {
          "name": "part(base)",
          "description": "The root element."
        },
        {
          "name": "part(text)"
        }
      ]
    }
  }
}
