{
  "generatedFrom": "src/registry/componentRegistry.ts",
  "generatedDate": "2026-09-02",
  "packageName": "@crossroads/ui",
  "summary": {
    "total": 113,
    "ready": 92,
    "flagship": 24
  },
  "components": [
    {
      "name": "ButtonBase",
      "group": "Foundations",
      "status": "ready",
      "kind": "primitive",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Shared interaction surface for button-like controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ButtonBase"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { ButtonBase } from \"@crossroads/ui\";\n\n<ButtonBase />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-buttons-buttonbase--docs"
    },
    {
      "name": "ButtonGroup",
      "group": "Foundations",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Logical grouping for related button actions.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ButtonGroup"
      ],
      "props": [
        {
          "description": "Accessible label for the grouped actions; provide aria-label or aria-labelledby.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Grouped button children.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Group color token inherited by child buttons.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "high"
        },
        {
          "description": "Disables all child Crossroads buttons unless a child explicitly overrides it.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Stretch group and children to the available inline size.",
          "name": "fullWidth",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Group orientation.",
          "name": "orientation",
          "type": "\"horizontal\" | \"vertical\"",
          "importance": "high"
        },
        {
          "description": "Group button size inherited by child buttons.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "high"
        },
        {
          "description": "Group variant inherited by child buttons.",
          "name": "variant",
          "type": "\"contained\" | \"outlined\" | \"text\"",
          "importance": "high"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Related actions",
          "code": "import { Button, ButtonGroup } from \"@crossroads/ui\";\n\n<ButtonGroup aria-label=\"Editor actions\">\n  <Button label=\"Save\" />\n  <Button label=\"Copy\" />\n</ButtonGroup>"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonGroup/ButtonGroup.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Button",
        "IconButton",
        "SplitButton"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-buttons-buttongroup--docs"
    },
    {
      "name": "ContrastChecker",
      "group": "Foundations",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Token-aware contrast intelligence with automatic foreground selection and WCAG criterion results.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ContrastChecker"
      ],
      "props": [
        {
          "description": "Foreground color to evaluate; omit when autoForeground is enabled.",
          "name": "foreground",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Background color to evaluate.",
          "name": "background",
          "required": true,
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Select and report the highest-contrast text candidate from the active theme.",
          "name": "autoForeground",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Whether to show large-text thresholds.",
          "name": "showLargeText",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Whether to show non-text/UI contrast.",
          "name": "showUiContrast",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Palette tokens ranked alongside synthetic alternatives; defaults to the active CrossroadsProvider palette.",
          "name": "tokens",
          "type": "Record<string, string>",
          "importance": "normal"
        },
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { ContrastChecker } from \"@crossroads/ui\";\n\n<ContrastChecker />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/colors/ContrastChecker/ContrastChecker.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-colors-contrastchecker--docs"
    },
    {
      "name": "Divider",
      "group": "Foundations",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Visual separator for content and control regions.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Divider"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Divider } from \"@crossroads/ui\";\n\n<Divider />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Divider/Divider.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-utilities-divider--docs"
    },
    {
      "name": "Icon",
      "group": "Foundations",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Semantic vector icon primitive with swappable icon packs.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Icon"
      ],
      "props": [
        {
          "description": "Semantic icon name from the active icon pack.",
          "name": "name",
          "required": true,
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Physical icon box size.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "normal"
        },
        {
          "description": "Glyph color; omit to inherit currentColor from the surrounding plane.",
          "name": "color",
          "type": "IconColor",
          "importance": "normal"
        },
        {
          "description": "Rotation in degrees.",
          "name": "rotation",
          "type": "0 | 45 | 90 | 180 | 270",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for directional icons when direction is RTL; defaults to false.",
          "name": "mirrorInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Decorative icon in a shaped container",
          "code": "import { Icon, Shape } from \"@crossroads/ui\";\n\n<Shape radius=\"full\" size=\"md\" tone=\"primary\">\n  <Icon aria-hidden name=\"palette\" size=\"sm\" />\n</Shape>"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic.",
        "Use decorative icons with aria-hidden; provide aria-label only when the icon itself communicates meaning.",
        "Mirror directional icons in RTL by default unless the icon represents a fixed object or brand."
      ],
      "accessibilityNotes": [
        "Decorative icons must be hidden from assistive technology; meaningful icons need an accessible label."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "search"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "IconButton"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-utilities-icon--docs"
    },
    {
      "name": "Field",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Composable wrapper for labels, help text, and errors.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Field"
      ],
      "props": [
        {
          "description": "Control height applied to the wrapped input — sm 36px, md 40px, lg 44px. Omit for md; multiline controls do not take it.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Field } from \"@crossroads/ui\";\n\n<Field />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "FieldError",
        "HelperText",
        "Label",
        "RequiredIndicator",
        "FormControl"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-field--docs"
    },
    {
      "name": "ControlLabel",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Accessible label wrapper for controls and their supporting text.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ControlLabel"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { ControlLabel } from \"@crossroads/ui\";\n\n<ControlLabel />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "FormControl",
        "RequiredIndicator",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/ControlLabel/ControlLabel.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-controllabel--docs"
    },
    {
      "name": "FormControl",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Context provider for shared form control state.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FormControl",
        "useFormControl"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { FormControl } from \"@crossroads/ui\";\n\n<FormControl />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/FormControl/FormControl.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-formcontrol--docs"
    },
    {
      "name": "FormGroup",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Layout and semantic grouping primitive for related controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FormGroup"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { FormGroup } from \"@crossroads/ui\";\n\n<FormGroup />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/FormGroup/FormGroup.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-formgroup--docs"
    },
    {
      "name": "FieldError",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Accessible validation message primitive.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FieldError"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { FieldError } from \"@crossroads/ui\";\n\n<FieldError />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/FieldError/FieldError.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-fielderror--docs"
    },
    {
      "name": "Fieldset",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Semantic group for related form controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Fieldset"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Fieldset } from \"@crossroads/ui\";\n\n<Fieldset />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "RequiredIndicator",
        "FormControl",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/Fieldset/Fieldset.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-fieldset--docs"
    },
    {
      "name": "HelperText",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Supportive field description text.",
      "importPath": "@crossroads/ui",
      "exports": [
        "HelperText"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { HelperText } from \"@crossroads/ui\";\n\n<HelperText />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/HelperText/HelperText.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-helpertext--docs"
    },
    {
      "name": "Label",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Accessible text label for form controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Label"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Label } from \"@crossroads/ui\";\n\n<Label />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/Label/Label.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-label--docs"
    },
    {
      "name": "RequiredIndicator",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Decorative required-field marker; native control semantics announce the required state.",
      "importPath": "@crossroads/ui",
      "exports": [
        "RequiredIndicator"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { RequiredIndicator } from \"@crossroads/ui\";\n\n<RequiredIndicator />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-forms-requiredindicator--docs"
    },
    {
      "name": "Typography",
      "group": "Foundations",
      "status": "ready",
      "kind": "foundation",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Reusable text roles built on the Crossroads UI type scale.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Text",
        "Heading",
        "Caption",
        "LabelText",
        "ControlText",
        "CodeText"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Text } from \"@crossroads/ui\";\n\n<Text />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/typography/Typography/Typography.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-typography--docs"
    },
    {
      "name": "Spinner",
      "group": "Foundations",
      "status": "ready",
      "kind": "utility",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Loading state indicator with accessible labeling.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Spinner"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Spinner } from \"@crossroads/ui\";\n\n<Spinner />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "VisuallyHidden"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Spinner/Spinner.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-utilities-spinner--docs"
    },
    {
      "name": "Transitions",
      "group": "Foundations",
      "status": "ready",
      "kind": "utility",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Reusable token-backed motion primitives for entering and exiting UI.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Fade",
        "Grow",
        "Zoom",
        "Slide",
        "Collapse"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Fade content",
          "code": "import { Fade } from \"@crossroads/ui\";\n\n<Fade in duration=\"standard\">\n  <div>Animated content</div>\n</Fade>"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic.",
        "Use Fade, Grow, Zoom, Slide, or Collapse directly; Transitions is the documentation family, not an exported component."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Transitions/Transitions.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-utilities-transitions--docs"
    },
    {
      "name": "VisuallyHidden",
      "group": "Foundations",
      "status": "ready",
      "kind": "utility",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": true
      },
      "description": "Assistive-only content for screen reader context.",
      "importPath": "@crossroads/ui",
      "exports": [
        "VisuallyHidden"
      ],
      "props": [
        {
          "description": "Content rendered by the primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override when supported.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { VisuallyHidden } from \"@crossroads/ui\";\n\n<VisuallyHidden />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use foundation components to compose higher-level components instead of raw styled wrappers.",
        "Prefer tokens, variants, and semantic props over hard-coded CSS values.",
        "Keep foundation primitives low-level and free of product-specific business logic."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/VisuallyHidden/VisuallyHidden.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-utilities-visuallyhidden--docs"
    },
    {
      "name": "Button",
      "group": "Buttons",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Contained, outlined, text, loading, and responsive action button.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Button"
      ],
      "props": [
        {
          "description": "Visible button label.",
          "name": "label",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Shows the spinner and disables interaction.",
          "name": "isLoading",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Optional replacement label while loading.",
          "name": "loadingLabel",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Icon before the label.",
          "name": "startIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Icon after the label.",
          "name": "endIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for directional button adornments when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Visible button content. Use localized text for user-facing labels.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "contained",
          "description": "Visual treatment: contained, outlined, or text.",
          "name": "variant",
          "type": "\"contained\" | \"outlined\" | \"text\"",
          "importance": "high"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role used to derive background, border, hover, active, and focus states.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "high"
        },
        {
          "defaultValue": "md",
          "description": "Control size.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "high"
        },
        {
          "description": "Prevents interaction and announces the disabled state to assistive tech.",
          "name": "disabled",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Primary action",
          "code": "import { Button } from \"@crossroads/ui\";\n\n<Button color=\"primary\" label=\"Save changes\" variant=\"contained\" />"
        }
      ],
      "usageRules": [
        "Use for commands that change state, submit forms, or trigger actions.",
        "Prefer Button for text actions and IconButton only when the icon has a clear accessible label.",
        "Choose color for semantic intent; hover, active, selected, and focus states are derived from tokens."
      ],
      "accessibilityNotes": [
        "Use native button semantics and never rely on color alone to communicate state."
      ],
      "componentDependencies": [
        "ButtonBase",
        "Spinner",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/foundations/utilities/Spinner/Spinner.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "ButtonBase",
        "IconButton",
        "ButtonGroup",
        "SplitButton"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-buttons-button--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 5,
        "useCases": [
          "Submit a form",
          "Confirm or cancel in a dialog",
          "Primary call to action on a page"
        ],
        "aiPromptExamples": [
          "Add a primary save button and a secondary cancel button",
          "Show a loading state on the submit button while the form is saving"
        ]
      }
    },
    {
      "name": "FloatingActionButton",
      "group": "Buttons",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Floating Action Button Prominent circular action for a primary screen command.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FloatingActionButton"
      ],
      "props": [
        {
          "description": "Accessible name for the action.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Crossroads icon name.",
          "name": "iconName",
          "required": true,
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Optional visible label for the extended shape.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Button color role.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Border line style.",
          "name": "borderStyle",
          "type": "\"solid\" | \"dashed\" | \"dotted\"",
          "importance": "normal"
        },
        {
          "description": "Border weight from the shared scale.",
          "name": "borderWidth",
          "type": "\"none\" | \"normal\" | \"emphasis\"",
          "importance": "normal"
        },
        {
          "description": "Icon size override.",
          "name": "iconSize",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for a directional floating-action icon when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Logical label placement relative to the icon.",
          "name": "labelPlacement",
          "type": "\"start\" | \"end\"",
          "importance": "normal"
        },
        {
          "description": "Optional fixed screen corner.",
          "name": "placement",
          "type": "\"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\"",
          "importance": "normal"
        },
        {
          "description": "Floating action size.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "normal"
        },
        {
          "description": "Visible button content. Use localized text for user-facing labels.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "contained",
          "description": "Visual treatment: contained, outlined, or text.",
          "name": "variant",
          "type": "\"contained\" | \"outlined\" | \"text\"",
          "importance": "normal"
        },
        {
          "description": "Prevents interaction and announces the disabled state to assistive tech.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Sandbox action",
          "code": "import { FloatingActionButton } from \"@crossroads/ui\";\n\n<FloatingActionButton aria-label=\"Open sandbox\" iconName=\"flask-conical\" />"
        }
      ],
      "usageRules": [
        "Use for commands that change state, submit forms, or trigger actions.",
        "Prefer Button for text actions and IconButton only when the icon has a clear accessible label.",
        "Choose color for semantic intent; hover, active, selected, and focus states are derived from tokens."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ButtonBase",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/buttons/FloatingActionButton/FloatingActionButton.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "edit",
        "shovel"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-buttons-floatingactionbutton--docs"
    },
    {
      "name": "IconButton",
      "group": "Buttons",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Compact icon-only action with mandatory accessible name.",
      "importPath": "@crossroads/ui",
      "exports": [
        "IconButton"
      ],
      "props": [
        {
          "description": "Accessible name for icon-only action.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Semantic icon name from the active icon pack.",
          "name": "iconName",
          "required": true,
          "type": "IconName",
          "importance": "high"
        },
        {
          "description": "Button color role.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "high"
        },
        {
          "description": "Opt-in mirroring for a directional button icon when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Button variant.",
          "name": "variant",
          "type": "\"contained\" | \"outlined\" | \"text\"",
          "importance": "high"
        },
        {
          "description": "Visible button content. Use localized text for user-facing labels.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "md",
          "description": "Control size.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "high"
        },
        {
          "description": "Prevents interaction and announces the disabled state to assistive tech.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { IconButton } from \"@crossroads/ui\";\n\n<IconButton />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for commands that change state, submit forms, or trigger actions.",
        "Prefer Button for text actions and IconButton only when the icon has a clear accessible label.",
        "Choose color for semantic intent; hover, active, selected, and focus states are derived from tokens."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ButtonBase",
        "Icon",
        "Spinner"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "close"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-buttons-iconbutton--docs"
    },
    {
      "name": "SplitButton",
      "group": "Buttons",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Connected primary action with a related action menu.",
      "importPath": "@crossroads/ui",
      "exports": [
        "SplitButton"
      ],
      "props": [
        {
          "description": "Dropdown trigger accessible label.",
          "name": "dropdownLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Menu accessible label and group label.",
          "name": "menuLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Related actions available from the dropdown.",
          "name": "options",
          "required": true,
          "type": "SplitButtonOption[]",
          "importance": "normal"
        },
        {
          "description": "Main action label override.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Icon before the main action label.",
          "name": "startIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Icon after the main action label.",
          "name": "endIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for directional main-action adornments when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Controlled selected option value.",
          "name": "selectedValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Selection behavior for menu choices.",
          "name": "selectionMode",
          "type": "\"change-action\" | \"trigger-action\"",
          "importance": "normal"
        },
        {
          "description": "Called when the main action or trigger-action menu item runs.",
          "name": "onAction",
          "type": "(option: SplitButtonOption) => void",
          "importance": "normal"
        },
        {
          "description": "Called when a menu option is selected.",
          "name": "onSelect",
          "type": "(option: SplitButtonOption) => void",
          "importance": "normal"
        },
        {
          "description": "Visible button content. Use localized text for user-facing labels.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "contained",
          "description": "Visual treatment: contained, outlined, or text.",
          "name": "variant",
          "type": "\"contained\" | \"outlined\" | \"text\"",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role used to derive background, border, hover, active, and focus states.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "defaultValue": "md",
          "description": "Control size.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "normal"
        },
        {
          "description": "Prevents interaction and announces the disabled state to assistive tech.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { SplitButton } from \"@crossroads/ui\";\n\n<SplitButton />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for commands that change state, submit forms, or trigger actions.",
        "Prefer Button for text actions and IconButton only when the icon has a clear accessible label.",
        "Choose color for semantic intent; hover, active, selected, and focus states are derived from tokens."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ButtonGroup",
        "Button",
        "IconButton",
        "Menu",
        "Icon",
        "Portal",
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/foundations/buttons/ButtonGroup/ButtonGroup.css",
        "src/components/buttons/SplitButton/SplitButton.css",
        "src/components/menus/Menu/Menu.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "chevron-right"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density",
        "z-index"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-buttons-splitbutton--docs"
    },
    {
      "name": "SegmentedControl",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Single-choice segmented controller with keyboard support.",
      "importPath": "@crossroads/ui",
      "exports": [
        "SegmentedControl",
        "SegmentedControlOption",
        "SegmentedControlRoot"
      ],
      "props": [
        {
          "description": "Selected option value.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial selected option value.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Shared control size; maps to button padding, height, and icon size.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Inter-option spacing rhythm.",
          "name": "density",
          "type": "\"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "Stretch the group to its parent width and distribute options evenly.",
          "name": "fullWidth",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Visible group label.",
          "name": "legend",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "View switcher",
          "code": "import { SegmentedControl } from \"@crossroads/ui\";\n\n<SegmentedControl.Root defaultValue=\"list\" legend=\"View\">\n  <SegmentedControl.Option value=\"list\">List</SegmentedControl.Option>\n  <SegmentedControl.Option value=\"board\">Board</SegmentedControl.Option>\n</SegmentedControl.Root>"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/controls/SegmentedControl/SegmentedControl.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-segmentedcontrol--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 70,
        "useCases": [
          "Switch between two or three modes",
          "View toggle",
          "Compact filter"
        ],
        "aiPromptExamples": [
          "Add a toggle between list and grid views",
          "Let the user switch between monthly and yearly pricing"
        ]
      }
    },
    {
      "name": "Checkbox",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Binary choice input with label and help text support.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Checkbox",
        "CheckboxControl"
      ],
      "props": [
        {
          "description": "Visible label rendered next to the checkbox when the control owns its text.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name required when no visible label is provided.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Semantic color role applied to the checked and indeterminate fill.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "high"
        },
        {
          "description": "Checked state for controlled usage.",
          "name": "checked",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Initial checked state.",
          "name": "defaultChecked",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Indeterminate visual state.",
          "name": "indeterminate",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Current selected value for controlled usage.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial selected value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Labeled choice",
          "code": "import { Checkbox } from \"@crossroads/ui\";\n\n<Checkbox label=\"Remember this choice\" />"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ControlLabel"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Checkbox/Checkbox.css",
        "src/components/foundations/forms/ControlLabel/ControlLabel.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-checkbox--docs"
    },
    {
      "name": "RadioGroup",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Single-choice radio set with accessible grouping.",
      "importPath": "@crossroads/ui",
      "exports": [
        "RadioControl",
        "RadioGroup",
        "RadioGroupOption",
        "RadioGroupRoot"
      ],
      "props": [
        {
          "description": "Optional visible group label, rendered as the HTML <legend> element; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "RadioGroup.Option children composing the option list.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Current selected value.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial selected value.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Notification frequency",
          "code": "import { RadioGroup } from \"@crossroads/ui\";\n\n<RadioGroup.Root defaultValue=\"daily\" label=\"Notification frequency\" name=\"notification-frequency\">\n  <RadioGroup.Option label=\"Immediately\" value=\"instant\" />\n  <RadioGroup.Option label=\"Daily digest\" value=\"daily\" />\n  <RadioGroup.Option label=\"Weekly digest\" value=\"weekly\" />\n</RadioGroup.Root>"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ControlLabel",
        "Fieldset",
        "FormGroup"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/RadioGroup/RadioGroup.css",
        "src/components/foundations/forms/Fieldset/Fieldset.css",
        "src/components/foundations/forms/FormGroup/FormGroup.css",
        "src/components/foundations/forms/ControlLabel/ControlLabel.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-radiogroup--docs"
    },
    {
      "name": "Select",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Native select wrapper with field states.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Select",
        "SelectControl",
        "SelectOption",
        "SelectRoot"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "owner": "Root",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Select.Option children composing the native select options.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Selected value.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Placeholder option text.",
          "name": "placeholder",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Initial selected value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Status selector",
          "code": "import { Select } from \"@crossroads/ui\";\n\n<Select.Root defaultValue=\"active\" label=\"Status\">\n  <Select.Option value=\"active\">Active</Select.Option>\n  <Select.Option value=\"paused\">Paused</Select.Option>\n  <Select.Option value=\"archived\">Archived</Select.Option>\n</Select.Root>"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Field",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Select/Select.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-select--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 11,
        "useCases": [
          "Choose one option from a known list",
          "Settings dropdown",
          "Filter control"
        ],
        "aiPromptExamples": [
          "Add a digest frequency select with daily and weekly options",
          "Let the user pick a country from a dropdown"
        ]
      }
    },
    {
      "name": "Switch",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Binary switch control with RTL-aware layout.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Switch",
        "SwitchControl"
      ],
      "props": [
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Semantic role color for the switch track and checked state.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Switch geometry size shared with other controls.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Controlled checked state.",
          "name": "checked",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial checked state.",
          "name": "defaultChecked",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Current selected value for controlled usage.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial selected value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Boolean setting",
          "code": "import { Switch } from \"@crossroads/ui\";\n\n<Switch label=\"Enable notifications\" />"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ControlLabel"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Switch/Switch.css",
        "src/components/foundations/forms/ControlLabel/ControlLabel.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-switch--docs"
    },
    {
      "name": "Slider",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Range input with pointer and keyboard support.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Slider"
      ],
      "props": [
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Semantic role color applied to the filled track and thumb.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Current slider value.",
          "name": "value",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Optional output text displayed beside the slider.",
          "name": "outputLabel",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Initial selected value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Bounded range",
          "code": "import { Slider } from \"@crossroads/ui\";\n\n<Slider label=\"Volume\" defaultValue={64} />"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Field"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Slider/Slider.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-slider--docs"
    },
    {
      "name": "Rating",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Discrete rating control with accessible value text.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Rating"
      ],
      "props": [
        {
          "description": "Accessible label for the empty rating option.",
          "name": "emptyLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Consumer-owned accessible label for each numeric rating option.",
          "name": "getValueLabel",
          "required": true,
          "type": "(value: number, max: number) => string",
          "importance": "normal"
        },
        {
          "description": "Required visible group label, rendered as the HTML <legend> element.",
          "name": "label",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Current rating value.",
          "name": "value",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Maximum stars.",
          "name": "max",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Read-only mode.",
          "name": "readOnly",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Initial selected value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when a segment is selected.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Rating } from \"@crossroads/ui\";\n\n<Rating />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Fieldset",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Rating/Rating.css",
        "src/components/foundations/forms/Fieldset/Fieldset.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "star"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-rating--docs"
    },
    {
      "name": "ColorPicker",
      "group": "Controls",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Accessible opaque color selection with normalized hex input.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ColorPicker"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Consumer-owned labels for the native picker, preset group, and validation errors.",
          "name": "labels",
          "required": true,
          "type": "ColorPickerLabels",
          "importance": "normal"
        },
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled color value in #RGB or #RRGGBB format.",
          "name": "value",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Initial value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Called with a normalized six-digit uppercase hex value.",
          "name": "onChange",
          "type": "(value: string) => void",
          "importance": "high"
        },
        {
          "description": "Optional flat preset swatches.",
          "name": "presets",
          "type": "ColorPickerPreset[]",
          "importance": "high"
        },
        {
          "description": "Optional grouped preset swatches, e.g. from tokenPresetGroups().",
          "name": "presetGroups",
          "type": "ColorPickerPresetGroup[]",
          "importance": "normal"
        },
        {
          "description": "Options rendered as mutually exclusive segments.",
          "name": "items",
          "required": true,
          "type": "Array<{ label: ReactNode; value: string; disabled?: boolean }>",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Brand color",
          "code": "import { ColorPicker } from \"@crossroads/ui\";\n\n<ColorPicker\n  label=\"Brand color\"\n  labels={{\n    invalidInput: \"Enter a valid color in #RGB or #RRGGBB format.\",\n    invalidValue: \"The provided value is not a valid color.\",\n    picker: \"Choose brand color\",\n    presets: \"Color presets\"\n  }}\n/>"
        }
      ],
      "usageRules": [
        "Use for compact mode or state selection when all options are visible.",
        "Keep labels short and localized.",
        "Do not use segmented controls for navigation across pages."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Field"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/ColorPicker/ColorPicker.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-controls-colorpicker--docs"
    },
    {
      "name": "ActionCard",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Reusable icon-bearing navigation card for indexes and action lists.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ActionCard"
      ],
      "props": [
        {
          "description": "Card title. Accepts every VisualCard content and visual prop.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Disables navigation or callback activation.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Destination for anchor action cards. Mutually exclusive with onClick.",
          "name": "href",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Callback for accessible action cards. Mutually exclusive with href.",
          "name": "onClick",
          "type": "MouseEventHandler<HTMLElement>",
          "importance": "high"
        },
        {
          "description": "Relationship hint for anchor action cards.",
          "name": "rel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Target browsing context for anchor action cards.",
          "name": "target",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { ActionCard } from \"@crossroads/ui\";\n\n<ActionCard />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "VisualCard"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/cards/ActionCard/ActionCard.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-cards-actioncard--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 33,
        "useCases": [
          "Navigate to a section",
          "Launch a task from a dashboard",
          "Quick action tile"
        ],
        "aiPromptExamples": [
          "Add quick-action tiles for import, export, and invite",
          "Make a card that links to the reports page"
        ]
      }
    },
    {
      "name": "Avatar",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Initials or image representation for a person or entity.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Avatar"
      ],
      "props": [
        {
          "defaultValue": "Tsvi Daphna",
          "description": "Accessible person or entity name used to generate fallback initials.",
          "name": "name",
          "required": true,
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Alternative text for the image. Defaults to name.",
          "name": "alt",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Semantic tone used for the initials fallback background and foreground.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "high"
        },
        {
          "description": "Explicit fallback initials. Derived from name when omitted.",
          "name": "initials",
          "type": "string",
          "importance": "high"
        },
        {
          "defaultValue": "md",
          "description": "Avatar size.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"",
          "importance": "high"
        },
        {
          "description": "Image source URL.",
          "name": "src",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Initials fallback",
          "code": "import { Avatar } from \"@crossroads/ui\";\n\n<Avatar name=\"Tsvi Daphna\" />"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Shape"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/Avatar/Avatar.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-avatar--docs"
    },
    {
      "name": "Badge",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Compact status label for semantic metadata.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Badge"
      ],
      "props": [
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Status badge",
          "code": "import { Badge } from \"@crossroads/ui\";\n\n<Badge color=\"success\">Active</Badge>"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Pill.css",
        "src/components/data-display/Badge/Badge.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Tag",
        "Chip"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-badge--docs"
    },
    {
      "name": "Card",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Bounded content container for repeated display items.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Card",
        "CardActionArea",
        "CardActions",
        "CardContent",
        "CardHeader",
        "CardMedia"
      ],
      "props": [
        {
          "description": "Card content or composed card subcomponents.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Rendered element.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Card border style.",
          "name": "borderStyle",
          "type": "\"solid\" | \"dashed\" | \"dotted\"",
          "importance": "normal"
        },
        {
          "description": "Card border width.",
          "name": "borderWidth",
          "type": "\"none\" | \"normal\" | \"emphasis\"",
          "importance": "normal"
        },
        {
          "description": "Surface elevation level.",
          "name": "elevation",
          "type": "0 | 1 | 2 | 3 | 4",
          "importance": "high"
        },
        {
          "description": "Internal card spacing.",
          "name": "padding",
          "type": "\"none\" | \"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "high"
        },
        {
          "description": "Step on the shared radius scale; full for pills and circles.",
          "name": "radius",
          "type": "\"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"full\"",
          "importance": "normal"
        },
        {
          "description": "Surface role. Use elevation separately for depth.",
          "name": "tone",
          "type": "\"background\" | \"surface\" | \"overlay\" | \"glass\"",
          "importance": "high"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Card } from \"@crossroads/ui\";\n\n<Card />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Surface",
        "Box",
        "Inline",
        "Stack",
        "Typography",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/cards/Card/Card.css",
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "scrim"
      ],
      "relatedComponents": [
        "Surface",
        "ActionCard",
        "VisualCard"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-cards-card--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 31,
        "useCases": [
          "Group related content",
          "Settings section",
          "Summary panel"
        ],
        "aiPromptExamples": [
          "Group the billing settings into a card with a heading",
          "Wrap this form in a card with a title and description"
        ]
      }
    },
    {
      "name": "VisualCard",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Media-forward card for visual content, posters, uploads, and feature previews.",
      "importPath": "@crossroads/ui",
      "exports": [
        "VisualCard"
      ],
      "props": [
        {
          "description": "Card title.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Actions shown in the card action row.",
          "name": "actions",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Alignment for visual card content.",
          "name": "contentAlign",
          "type": "\"start\" | \"center\" | \"end\"",
          "importance": "normal"
        },
        {
          "description": "Placement for visual card content.",
          "name": "contentPlacement",
          "type": "\"default\" | \"overlay\" | \"overlay-bottom\"",
          "importance": "normal"
        },
        {
          "description": "Short supporting description.",
          "name": "description",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Card depth level.",
          "name": "elevation",
          "type": "0 | 1 | 2 | 3 | 4",
          "importance": "normal"
        },
        {
          "description": "Small label above the title.",
          "name": "eyebrow",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Preset visual card layout.",
          "name": "layout",
          "type": "\"vertical\" | \"horizontal\" | \"feature\"",
          "importance": "normal"
        },
        {
          "description": "Raw custom media slot for authored compositions.",
          "name": "media",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible label for image media.",
          "name": "mediaAlt",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Media aspect ratio.",
          "name": "mediaAspectRatio",
          "type": "\"1/1\" | \"4/3\" | \"16/9\" | \"21/9\"",
          "importance": "normal"
        },
        {
          "description": "Semantic icon used when mediaType is icon.",
          "name": "mediaIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Icon size for icon media.",
          "name": "mediaIconSize",
          "type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"",
          "importance": "normal"
        },
        {
          "description": "Media placement inside the card.",
          "name": "mediaPlacement",
          "type": "\"top\" | \"bottom\" | \"start\" | \"end\" | \"background\"",
          "importance": "normal"
        },
        {
          "description": "Image source used when mediaType is image.",
          "name": "mediaSrc",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Explicit media rendering mode.",
          "name": "mediaType",
          "type": "\"none\" | \"image\" | \"icon\" | \"custom\"",
          "importance": "normal"
        },
        {
          "description": "Compact metadata beside the title.",
          "name": "meta",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Internal card spacing.",
          "name": "padding",
          "type": "\"none\" | \"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "Primary action slot supplied by the consumer.",
          "name": "primaryAction",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Card border style.",
          "name": "borderStyle",
          "type": "\"solid\" | \"dashed\" | \"dotted\"",
          "importance": "normal"
        },
        {
          "description": "Card border width.",
          "name": "borderWidth",
          "type": "\"none\" | \"normal\" | \"emphasis\"",
          "importance": "normal"
        },
        {
          "description": "Step on the shared radius scale; full for pills and circles.",
          "name": "radius",
          "type": "\"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"full\"",
          "importance": "normal"
        },
        {
          "description": "Semantic surface role.",
          "name": "tone",
          "type": "\"background\" | \"surface\" | \"overlay\" | \"glass\"",
          "importance": "normal"
        },
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { VisualCard } from \"@crossroads/ui\";\n\n<VisualCard />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Card",
        "Box",
        "Stack",
        "Typography",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/cards/Card/Card.css",
        "src/components/data-display/cards/VisualCard/VisualCard.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/utilities/Icon/Icon.css",
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [
        "background",
        "card",
        "chevron-right",
        "land-plot",
        "link",
        "square-dashed"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "Card",
        "ActionCard",
        "SelectableCard"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-cards-visualcard--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 30,
        "useCases": [
          "Marketing feature card",
          "Content tile with media",
          "Product listing"
        ],
        "aiPromptExamples": [
          "Build a three-column feature grid with images and titles",
          "Show a product card with a thumbnail and price"
        ]
      }
    },
    {
      "name": "DescriptionList",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Semantic term and detail pairs.",
      "importPath": "@crossroads/ui",
      "exports": [
        "DescriptionDetails",
        "DescriptionList",
        "DescriptionListItem",
        "DescriptionTerm"
      ],
      "props": [
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Account summary",
          "code": "import { DescriptionDetails, DescriptionList, DescriptionListItem, DescriptionTerm } from \"@crossroads/ui\";\n\n<DescriptionList>\n  <DescriptionListItem>\n    <DescriptionTerm>Status</DescriptionTerm>\n    <DescriptionDetails>Active</DescriptionDetails>\n  </DescriptionListItem>\n  <DescriptionListItem>\n    <DescriptionTerm>Plan</DescriptionTerm>\n    <DescriptionDetails>Professional</DescriptionDetails>\n  </DescriptionListItem>\n</DescriptionList>"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/DescriptionList/DescriptionList.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-descriptionlist--docs"
    },
    {
      "name": "List",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Ordered, unordered, and unstyled semantic lists.",
      "importPath": "@crossroads/ui",
      "exports": [
        "List",
        "ListItem"
      ],
      "props": [
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Task list",
          "code": "import { List, ListItem } from \"@crossroads/ui\";\n\n<List>\n  <ListItem>Review the component</ListItem>\n  <ListItem>Adjust its props</ListItem>\n  <ListItem>Verify the canvas</ListItem>\n</List>"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/List/List.css",
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-list--docs"
    },
    {
      "name": "SelectableCard",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Card-shaped selectable option for button, radio, and checkbox flows.",
      "importPath": "@crossroads/ui",
      "exports": [
        "SelectableCard",
        "SelectableCardGroup"
      ],
      "props": [
        {
          "description": "Card title. Accepts every VisualCard content and visual prop.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Disables interaction.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Shows or hides the selection indicator.",
          "name": "indicator",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Shows or hides the indicator's circle background and border.",
          "name": "indicatorBackground",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Renders the indicator as an element or card pseudo-element.",
          "name": "indicatorMode",
          "type": "\"element\" | \"pseudo\"",
          "importance": "normal"
        },
        {
          "description": "Selection indicator placement.",
          "name": "indicatorPlacement",
          "type": "\"start\" | \"end\" | \"corner\"",
          "importance": "normal"
        },
        {
          "description": "Size of the selection indicator.",
          "name": "indicatorSize",
          "type": "\"md\" | \"lg\" | \"xl\"",
          "importance": "normal"
        },
        {
          "description": "Adds hover border and elevation treatment.",
          "name": "isHoverable",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when standalone selection changes.",
          "name": "onSelectedChange",
          "type": "(selected: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Semantic color token used for the selected border.",
          "name": "selectedBorderColor",
          "type": "ColorTokenName",
          "importance": "normal"
        },
        {
          "description": "Semantic color token used for the mark on the selected indicator.",
          "name": "selectedIconColor",
          "type": "ColorTokenName",
          "importance": "normal"
        },
        {
          "description": "Border style applied when selected.",
          "name": "selectedBorderStyle",
          "type": "\"solid\" | \"dashed\" | \"dotted\"",
          "importance": "normal"
        },
        {
          "description": "Border width applied when selected.",
          "name": "selectedBorderWidth",
          "type": "\"none\" | \"normal\" | \"emphasis\"",
          "importance": "normal"
        },
        {
          "description": "Selected visual state for standalone usage.",
          "name": "selected",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Icon shown inside the selected indicator.",
          "name": "selectedIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Option value used by SelectableCardGroup.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { SelectableCard } from \"@crossroads/ui\";\n\n<SelectableCard />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Fieldset",
        "Icon",
        "Box",
        "VisualCard"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/cards/SelectableCard/SelectableCard.css",
        "src/components/foundations/forms/Fieldset/Fieldset.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [
        "check"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "Card",
        "RadioGroup",
        "Checkbox"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-cards-selectablecard--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 32,
        "useCases": [
          "Plan or tier picker",
          "Choose one of several options visually",
          "Onboarding choice"
        ],
        "aiPromptExamples": [
          "Build a pricing tier selector with three selectable cards",
          "Let the user choose a workspace type from visual options"
        ]
      }
    },
    {
      "name": "Stat",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Metric block for dashboards and summaries.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Stat"
      ],
      "props": [
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Summary metric",
          "code": "import { Stat } from \"@crossroads/ui\";\n\n<Stat helperText=\"Updated just now\" label=\"Active members\" value=\"24\" />"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/Stat/Stat.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-stat--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 21,
        "useCases": [
          "Dashboard KPI",
          "Summary figure with trend",
          "Metric tile above a chart"
        ],
        "aiPromptExamples": [
          "Add a row of KPI tiles for revenue, signups, and churn",
          "Show monthly active users with a trend indicator"
        ]
      }
    },
    {
      "name": "Table",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Responsive semantic table with density controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Table",
        "TableBody",
        "TableCaption",
        "TableCell",
        "TableEmpty",
        "TableFooter",
        "TableHead",
        "TableHeaderCell",
        "TableLoading",
        "TablePagination",
        "TableRow",
        "TableSelectionCell",
        "TableSortButton"
      ],
      "props": [
        {
          "description": "Table density.",
          "name": "density",
          "type": "\"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "Accessible label that opts the horizontal scroll container into a keyboard-reachable region.",
          "name": "responsiveLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Opt-in sticky header that keeps column headers visible while the Table scroll region moves; preserves native table semantics.",
          "name": "stickyHeader",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Table rows.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Member table",
          "code": "import { Badge, Table, TableBody, TableCaption, TableCell, TableHead, TableHeaderCell, TableRow } from \"@crossroads/ui\";\n\n<Table responsiveLabel=\"Scrollable member table\">\n  <TableCaption>Members</TableCaption>\n  <TableHead>\n    <TableRow>\n      <TableHeaderCell>Name</TableHeaderCell>\n      <TableHeaderCell>Status</TableHeaderCell>\n    </TableRow>\n  </TableHead>\n  <TableBody>\n    <TableRow>\n      <TableCell>Ada Lovelace</TableCell>\n      <TableCell><Badge color=\"success\">Active</Badge></TableCell>\n    </TableRow>\n    <TableRow>\n      <TableCell>Grace Hopper</TableCell>\n      <TableCell><Badge>Invited</Badge></TableCell>\n    </TableRow>\n  </TableBody>\n</Table>"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "Checkbox",
        "ButtonBase",
        "Pagination"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/Table/Table.css",
        "src/components/layout/layout.css",
        "src/components/navigation/Pagination/Pagination.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-table--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 20,
        "useCases": [
          "List records with sorting",
          "Admin data view",
          "Dense reporting screen"
        ],
        "aiPromptExamples": [
          "Show a sortable table of invoices with status and amount",
          "Add an empty state to the table when there are no results"
        ]
      }
    },
    {
      "name": "Tag",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Dismissible or static metadata chip.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Tag"
      ],
      "props": [
        {
          "description": "Paint step. Omit it and the control follows the density row it sits in — compact xs, comfortable sm, spacious md. The pointer target is unchanged at every step.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Tag label.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Whether to show the remove action.",
          "name": "deletable",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Accessible label for the remove action.",
          "name": "deleteLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Tag } from \"@crossroads/ui\";\n\n<Tag />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Pill.css",
        "src/components/data-display/Tag/Tag.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "close-circle"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Badge",
        "Chip"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-tag--docs"
    },
    {
      "name": "Chip",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Interactive compact value or filter control.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Chip"
      ],
      "props": [
        {
          "description": "Paint step. Omit it and the control follows the density row it sits in — compact xs, comfortable sm, spacious md. The pointer target is unchanged at every step.",
          "name": "size",
          "type": "\"xs\" | \"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Chip text.",
          "name": "label",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Makes the chip interactive.",
          "name": "clickable",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Whether to show the delete action.",
          "name": "deletable",
          "type": "boolean",
          "importance": "high"
        },
        {
          "description": "Called when the delete action is clicked.",
          "name": "onDelete",
          "type": "() => void",
          "importance": "high"
        },
        {
          "description": "Icon before the label.",
          "name": "startIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Icon after the label.",
          "name": "endIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for directional chip adornments when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Chip } from \"@crossroads/ui\";\n\n<Chip />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/Chip/Chip.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "close-circle"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Tag",
        "Badge",
        "Button"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-chip--docs"
    },
    {
      "name": "EmptyState",
      "group": "Data Display",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Centered empty content message with optional action.",
      "importPath": "@crossroads/ui",
      "exports": [
        "EmptyState"
      ],
      "props": [
        {
          "description": "Primary empty-state heading.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supporting copy under the title.",
          "name": "description",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Semantic icon name from the active icon pack.",
          "name": "icon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Buttons rendered under the copy.",
          "name": "actions",
          "type": "EmptyStateAction[]",
          "importance": "normal"
        },
        {
          "description": "Rendered content for the display primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "primary",
          "description": "Theme color role for status or emphasis.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"surface\"",
          "importance": "normal"
        },
        {
          "description": "Compact, default, or emphasized visual treatment when supported.",
          "name": "variant",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Small or medium sizing when supported.",
          "name": "size",
          "type": "\"sm\" | \"md\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { EmptyState } from \"@crossroads/ui\";\n\n<EmptyState />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use for presenting information, status, and compact metadata.",
        "Do not use static metadata components for clickable commands; use Chip or Button when interaction is required.",
        "Keep labels concise and preserve semantic HTML where possible."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon",
        "Button",
        "Box",
        "Shape",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/data-display/EmptyState/EmptyState.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-data-display-emptystate--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 63,
        "useCases": [
          "No results after filtering",
          "First-run experience",
          "Cleared inbox"
        ],
        "aiPromptExamples": [
          "Show a friendly empty state when there are no projects yet",
          "Explain that no results matched the filters and offer to clear them"
        ]
      }
    },
    {
      "name": "Accordion",
      "group": "Disclosure",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Multi-section disclosure with keyboard navigation.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Accordion",
        "AccordionContent",
        "AccordionItem",
        "AccordionRoot",
        "AccordionTrigger"
      ],
      "props": [
        {
          "description": "Heading, trigger, or summary text shown when the content is collapsed.",
          "name": "heading",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Content revealed by the disclosure interaction.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Current open state for controlled usage.",
          "name": "open",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial open state for uncontrolled usage.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Account details",
          "code": "import { Accordion } from \"@crossroads/ui\";\n\n<Accordion.Root defaultValue={[\"profile\"]}>\n  <Accordion.Item id=\"profile\">\n    <Accordion.Trigger>Profile</Accordion.Trigger>\n    <Accordion.Content>Manage your name, avatar, and contact details.</Accordion.Content>\n  </Accordion.Item>\n  <Accordion.Item id=\"security\">\n    <Accordion.Trigger>Security</Accordion.Trigger>\n    <Accordion.Content>Review passwords and active sessions.</Accordion.Content>\n  </Accordion.Item>\n</Accordion.Root>"
        }
      ],
      "usageRules": [
        "Use disclosure patterns to hide secondary content without navigating away.",
        "Use Accordion for multiple related sections; use Collapsible or Disclosure for a single region.",
        "Keep trigger text descriptive because it announces the expandable content."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/disclosure/Accordion/Accordion.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Collapsible",
        "Disclosure"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-disclosure-accordion--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 64,
        "useCases": [
          "FAQ section",
          "Progressive disclosure in dense settings",
          "Grouped detail panels"
        ],
        "aiPromptExamples": [
          "Build an FAQ with expandable questions",
          "Group advanced settings into collapsible sections"
        ]
      }
    },
    {
      "name": "Collapsible",
      "group": "Disclosure",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Expandable region with controlled and uncontrolled modes.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Collapsible"
      ],
      "props": [
        {
          "description": "Heading, trigger, or summary text shown when the content is collapsed.",
          "name": "heading",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Content revealed by the disclosure interaction.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Current open state for controlled usage.",
          "name": "open",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial open state for uncontrolled usage.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Collapsible } from \"@crossroads/ui\";\n\n<Collapsible />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use disclosure patterns to hide secondary content without navigating away.",
        "Use Accordion for multiple related sections; use Collapsible or Disclosure for a single region.",
        "Keep trigger text descriptive because it announces the expandable content."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/disclosure/Collapsible/Collapsible.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Disclosure",
        "Accordion"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-disclosure-collapsible--docs"
    },
    {
      "name": "Disclosure",
      "group": "Disclosure",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Single disclosure trigger and panel primitive.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Disclosure"
      ],
      "props": [
        {
          "description": "Heading, trigger, or summary text shown when the content is collapsed.",
          "name": "heading",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Content revealed by the disclosure interaction.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Current open state for controlled usage.",
          "name": "open",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial open state for uncontrolled usage.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Disclosure } from \"@crossroads/ui\";\n\n<Disclosure />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use disclosure patterns to hide secondary content without navigating away.",
        "Use Accordion for multiple related sections; use Collapsible or Disclosure for a single region.",
        "Keep trigger text descriptive because it announces the expandable content."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon",
        "VisuallyHidden",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/disclosure/Disclosure/Disclosure.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Collapsible",
        "Accordion"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-disclosure-disclosure--docs"
    },
    {
      "name": "Autocomplete",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Text input with suggested options and keyboard navigation.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Autocomplete"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Available suggestions.",
          "name": "options",
          "required": true,
          "type": "AutocompleteOption[]",
          "importance": "high"
        },
        {
          "description": "Selection form behavior or action-oriented search behavior.",
          "name": "mode",
          "type": "\"select\" | \"search\"",
          "importance": "high"
        },
        {
          "description": "Selected option value.",
          "name": "value",
          "type": "string | null",
          "importance": "high"
        },
        {
          "description": "Called when text changes.",
          "name": "onInputChange",
          "type": "(value: string) => void",
          "importance": "high"
        },
        {
          "description": "Called when an option is activated in either mode.",
          "name": "onOptionSelect",
          "type": "(option: AutocompleteOption) => void",
          "importance": "high"
        },
        {
          "description": "Node shown before the input value.",
          "name": "startAdornment",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Node shown before clear and chevron controls.",
          "name": "endAdornment",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "comfortable",
          "description": "Token-backed row spacing; every density retains the target floor.",
          "name": "density",
          "type": "Density",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Fruit selector",
          "code": "import { Autocomplete } from \"@crossroads/ui\";\n\n<Autocomplete\n  label=\"Fruit\"\n  options={[\n    { label: \"Apple\", value: \"apple\" },\n    { label: \"Banana\", value: \"banana\" },\n    { label: \"Orange\", value: \"orange\" }\n  ]}\n  helperText=\"Start typing and choose one option.\"\n/>"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed."
      ],
      "accessibilityNotes": [
        "Use combobox semantics, keep aria-expanded synchronized with the popup, and preserve keyboard option navigation."
      ],
      "componentDependencies": [
        "Field",
        "IconButton",
        "Popper",
        "Portal",
        "Surface",
        "VisuallyHidden"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Autocomplete/Autocomplete.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/foundations/utilities/Icon/Icon.css",
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [
        "chevron-right",
        "close"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density",
        "z-index"
      ],
      "relatedComponents": [
        "TextField",
        "Menu",
        "Popover"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-autocomplete--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 12,
        "useCases": [
          "Pick from a long list",
          "Assign a person to a task",
          "Type-ahead search"
        ],
        "aiPromptExamples": [
          "Add an assignee picker that filters people as you type",
          "Build a searchable product selector"
        ]
      }
    },
    {
      "name": "Combobox",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Searchable single select over a closed vocabulary; only options commit and uncommitted text reverts on blur.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Combobox",
        "ComboboxEmpty",
        "ComboboxGroup",
        "ComboboxGroupLabel",
        "ComboboxLoading",
        "ComboboxOption",
        "ComboboxRoot"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "owner": "Root",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Every assistive string: clear, trigger, loading, noResults, resultsAnnouncement, selectedAnnouncement. No defaults are shipped.",
          "name": "labels",
          "required": true,
          "type": "ComboboxLabels",
          "importance": "high"
        },
        {
          "description": "Field label, rendered visually hidden when labelVisibility is hidden; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Accessible name used when no label is provided.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Combobox.Option and Combobox.Group children composing the closed vocabulary.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Committed selection; null when nothing is committed.",
          "name": "value",
          "type": "string | null",
          "importance": "high"
        },
        {
          "defaultValue": "null",
          "description": "Initial committed selection for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string | null",
          "importance": "high"
        },
        {
          "description": "Called when an option commits or the selection clears.",
          "name": "onValueChange",
          "type": "(value: string | null) => void",
          "importance": "high"
        },
        {
          "description": "Controlled filter text; decoupled from the committed value.",
          "name": "inputValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial filter text for uncontrolled usage.",
          "name": "defaultInputValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called on every filter-text change.",
          "name": "onInputValueChange",
          "type": "(text: string) => void",
          "importance": "normal"
        },
        {
          "description": "Controlled popup state.",
          "name": "open",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial popup state for uncontrolled usage.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the popup opens or closes.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Replaces the locale-aware diacritic-folding contains match; false disables client filtering for async/external mode.",
          "name": "filter",
          "type": "((textValue: string, query: string) => boolean) | false",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Marks the popup busy: renders the loading slot and sets aria-busy while results load.",
          "name": "loading",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether the clear action renders while a value is committed.",
          "name": "clearable",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "visible",
          "description": "Whether the label paints visibly or stays screen-reader-only.",
          "name": "labelVisibility",
          "type": "\"visible\" | \"hidden\"",
          "importance": "normal"
        },
        {
          "defaultValue": "start",
          "description": "Logical inline alignment of the popup against the input.",
          "name": "placement",
          "type": "\"start\" | \"end\"",
          "importance": "normal"
        },
        {
          "description": "Submits the committed value through a hidden input for native forms.",
          "name": "name",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "comfortable",
          "description": "Vertical rhythm of the control row and option rows.",
          "name": "density",
          "type": "\"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Fruit picker",
          "code": "import { Combobox } from \"@crossroads/ui\";\n\n<Combobox.Root\n  label=\"Fruit\"\n  labels={{\n    clear: \"Clear selection\",\n    loading: \"Loading fruit\",\n    noResults: \"No matching fruit\",\n    resultsAnnouncement: (count) => `${count} results available`,\n    selectedAnnouncement: (textValue) => `${textValue} selected`,\n    trigger: \"Show fruit options\"\n  }}\n>\n  <Combobox.Option value=\"apple\" textValue=\"Apple\" />\n  <Combobox.Option value=\"banana\" textValue=\"Banana\" />\n  <Combobox.Option value=\"cherry\" textValue=\"Cherry\" />\n</Combobox.Root>"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed.",
        "Only options commit: uncommitted input text reverts to the committed option on blur. Reach for Autocomplete when free text must commit, and Select when the list needs no text filtering.",
        "Compose Combobox.Option children with a unique value and a plain-text textValue; filtering, the input echo, and announcements all read textValue.",
        "Escape closes the popup first and reverts uncommitted text second; the key reaches an enclosing dialog only once the combobox is settled.",
        "For server-filtered options pass filter={false}, fetch in onInputValueChange, set loading while the query runs, and cancel stale queries so the latest query wins; Combobox.Loading and Combobox.Empty replace the default busy and no-results rows."
      ],
      "accessibilityNotes": [
        "ARIA 1.2 editable combobox with list popup: DOM focus never leaves the input; the highlighted option is conveyed through aria-activedescendant while the listbox popup is controlled via aria-expanded and aria-controls.",
        "A polite live region announces result counts while filtering, the busy state while loading, and the committed option on selection, using the required labels object; no assistive string is hardcoded.",
        "While loading, the listbox carries aria-busy and shows the loading slot instead of the no-results row."
      ],
      "componentDependencies": [
        "TextField",
        "Field",
        "Label",
        "HelperText",
        "FieldError",
        "IconButton",
        "Icon",
        "Popper",
        "Portal",
        "Spinner",
        "Surface",
        "VisuallyHidden",
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/Combobox/Combobox.css",
        "src/components/forms/TextField/TextField.css",
        "src/components/layout/layout.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/foundations/utilities/Icon/Icon.css",
        "src/components/foundations/utilities/Spinner/Spinner.css",
        "src/components/foundations/utilities/VisuallyHidden/VisuallyHidden.css",
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [
        "check",
        "chevron-right",
        "close"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density",
        "z-index"
      ],
      "relatedComponents": [
        "Select",
        "Autocomplete",
        "MultiSelect",
        "Menu",
        "Popover"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-combobox--docs"
    },
    {
      "name": "MultiSelect",
      "group": "Forms",
      "status": "in-progress",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Searchable multiple select over a closed vocabulary; commits toggle membership, chips render inside the field, and the popup stays open.",
      "importPath": "@crossroads/ui",
      "exports": [
        "MultiSelect",
        "MultiSelectEmpty",
        "MultiSelectGroup",
        "MultiSelectGroupLabel",
        "MultiSelectLoading",
        "MultiSelectOption",
        "MultiSelectRoot",
        "MultiSelectSelectAll"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "owner": "Root",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Every assistive string, including removeChip, overflowSummary, selectAll, clearAll, and selectionAnnouncement. No defaults are shipped.",
          "name": "labels",
          "owner": "Root",
          "required": true,
          "type": "MultiSelectLabels",
          "importance": "normal"
        },
        {
          "description": "Field label, rendered visually hidden when labelVisibility is hidden; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no label is provided.",
          "name": "aria-label",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "ID of visible consumer-authored text naming the field when no label is provided.",
          "name": "aria-labelledby",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Text direction for the field.",
          "name": "dir",
          "owner": "Root",
          "type": "\"ltr\" | \"rtl\"",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "MultiSelect.Option and MultiSelect.Group children composing the closed vocabulary.",
          "name": "children",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Committed selected values.",
          "name": "selectedValues",
          "owner": "Root",
          "type": "string[]",
          "importance": "normal"
        },
        {
          "defaultValue": "[]",
          "description": "Initial selected values for uncontrolled usage.",
          "name": "defaultSelectedValues",
          "owner": "Root",
          "type": "string[]",
          "importance": "normal"
        },
        {
          "description": "Called when membership toggles or the selection clears.",
          "name": "onSelectedValuesChange",
          "owner": "Root",
          "type": "(values: string[]) => void",
          "importance": "normal"
        },
        {
          "description": "Controlled filter text; cleared after each commit.",
          "name": "inputValue",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial filter text for uncontrolled usage.",
          "name": "defaultInputValue",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called on every filter-text change.",
          "name": "onInputValueChange",
          "owner": "Root",
          "type": "(text: string) => void",
          "importance": "normal"
        },
        {
          "description": "Controlled popup state. Commits do not close the popup.",
          "name": "open",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial popup state for uncontrolled usage.",
          "name": "defaultOpen",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the popup opens or closes.",
          "name": "onOpenChange",
          "owner": "Root",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Replaces the locale-aware contains match; false disables client filtering for async/external mode.",
          "name": "filter",
          "owner": "Root",
          "type": "((textValue: string, query: string) => boolean) | false",
          "importance": "normal"
        },
        {
          "defaultValue": "auto",
          "description": "Visible chip cap, or container-measured overflow into the summary.",
          "name": "maxVisibleChips",
          "owner": "Root",
          "type": "number | \"auto\"",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Renders the default SelectAll row above the options. SelectAll operates on enabled filtered items.",
          "name": "showSelectAll",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Marks the popup busy: renders the loading slot and sets aria-busy while results load.",
          "name": "loading",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether the clear-all action renders while values are committed.",
          "name": "clearable",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "visible",
          "description": "Whether the label paints visibly or stays screen-reader-only.",
          "name": "labelVisibility",
          "owner": "Root",
          "type": "\"visible\" | \"hidden\"",
          "importance": "normal"
        },
        {
          "defaultValue": "start",
          "description": "Logical inline alignment of the popup against the field.",
          "name": "placement",
          "owner": "Root",
          "type": "\"start\" | \"end\"",
          "importance": "normal"
        },
        {
          "description": "Submits each selected value through a repeated hidden input.",
          "name": "name",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "comfortable",
          "description": "Option-row sizing. Chips stay sm; the field keeps its full-height target.",
          "name": "density",
          "owner": "Root",
          "type": "MultiSelectDensity",
          "importance": "normal"
        },
        {
          "description": "Committed option value; must be unique within the multiselect.",
          "name": "value",
          "owner": "Option",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Plain text used for filtering, chips, and announcements.",
          "name": "textValue",
          "owner": "Option",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Custom option content; defaults to textValue.",
          "name": "children",
          "owner": "Option",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Prevents the option from being committed.",
          "name": "disabled",
          "owner": "Option",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Custom select-all row label; defaults to labels.selectAll or labels.clearAll.",
          "name": "children",
          "owner": "SelectAll",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Custom empty-state content when nothing matches.",
          "name": "children",
          "owner": "Empty",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Custom loading-state content while results load.",
          "name": "children",
          "owner": "Loading",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Grouped options.",
          "name": "children",
          "owner": "Group",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name for the option group.",
          "name": "children",
          "owner": "GroupLabel",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Fruit multi-select",
          "code": "import { MultiSelect } from \"@crossroads/ui\";\n\n<MultiSelect.Root\n  label=\"Fruit\"\n  labels={{\n    clear: \"Clear all\",\n    clearAll: \"Clear visible\",\n    loading: \"Loading fruit\",\n    noResults: \"No matching fruit\",\n    overflowSummary: (count) => `${count} more`,\n    removeChip: (text) => `Remove ${text}`,\n    resultsAnnouncement: (count) => `${count} results available`,\n    selectAll: \"Select all visible\",\n    selectionAnnouncement: (text, selected, count) =>\n      selected ? `${text} selected, ${count} total` : `${text} removed, ${count} total`,\n    trigger: \"Show fruit options\"\n  }}\n>\n  <MultiSelect.Option value=\"apple\" textValue=\"Apple\" />\n  <MultiSelect.Option value=\"banana\" textValue=\"Banana\" />\n  <MultiSelect.Option value=\"cherry\" textValue=\"Cherry\" />\n</MultiSelect.Root>"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed.",
        "Compose MultiSelect.Option children with a unique value and a plain-text textValue; do not pass an items array.",
        "Chips use real-focus roving tabindex, not aria-activedescendant. Treat NVDA and VoiceOver as a human gate before promoting this family.",
        "SelectAll toggles enabled options that match the current filter, not the full unfiltered set.",
        "Escape closes the popup first and clears chip focus second. Backspace in an empty input activates the last chip, then removes it."
      ],
      "accessibilityNotes": [
        "ARIA 1.2 combobox with aria-multiselectable on the options listbox. Chips use real-focus roving tabindex; NVDA and VoiceOver remain a human gate before Phase 1 exit.",
        "labels.selectionAnnouncement fires on every toggle. Chip remove controls use labels.removeChip(text). Escape closes the popup first, then clears chip focus.",
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "TextField",
        "Field",
        "Label",
        "HelperText",
        "FieldError",
        "IconButton",
        "Button",
        "Icon",
        "Chip",
        "Popper",
        "Portal",
        "Spinner",
        "Surface",
        "VisuallyHidden",
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/MultiSelect/MultiSelect.css",
        "src/components/forms/TextField/TextField.css",
        "src/components/layout/layout.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/data-display/Chip/Chip.css",
        "src/components/foundations/utilities/Icon/Icon.css",
        "src/components/foundations/utilities/Spinner/Spinner.css",
        "src/components/foundations/utilities/VisuallyHidden/VisuallyHidden.css",
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [
        "check",
        "chevron-right",
        "close"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density",
        "z-index"
      ],
      "relatedComponents": [
        "Combobox",
        "Select",
        "Autocomplete",
        "Chip"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-multiselect--docs"
    },
    {
      "name": "FileUpload",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Native file picker with optional dropzone, client-side accept/size/count validation, and a file list. Upload transport stays with the consumer.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FileUpload",
        "FileUploadDropzone",
        "FileUploadHiddenInput",
        "FileUploadItem",
        "FileUploadList",
        "FileUploadRoot",
        "FileUploadTrigger"
      ],
      "props": [
        {
          "description": "Trigger button text.",
          "name": "triggerLabel",
          "owner": "Root",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polite announcement after files are accepted.",
          "name": "filesAddedAnnouncement",
          "owner": "Root",
          "required": true,
          "type": "(count: number) => string",
          "importance": "normal"
        },
        {
          "description": "Polite announcement after files are rejected.",
          "name": "dropRejectedAnnouncement",
          "owner": "Root",
          "required": true,
          "type": "(count: number) => string",
          "importance": "normal"
        },
        {
          "description": "Accessible name for each file's remove control.",
          "name": "removeFileLabel",
          "owner": "Root",
          "required": true,
          "type": "(file: File) => string",
          "importance": "normal"
        },
        {
          "description": "Field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no label is provided.",
          "name": "aria-label",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "ID of visible consumer-authored text naming the field when no label is provided.",
          "name": "aria-labelledby",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Disables the trigger, dropzone, and native input.",
          "name": "disabled",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Composed Trigger, Dropzone, List, Item, and HiddenInput parts.",
          "name": "children",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accepted files for controlled usage.",
          "name": "files",
          "owner": "Root",
          "type": "File[]",
          "importance": "normal"
        },
        {
          "defaultValue": "[]",
          "description": "Initial accepted files for uncontrolled usage.",
          "name": "defaultFiles",
          "owner": "Root",
          "type": "File[]",
          "importance": "normal"
        },
        {
          "description": "Called with the accepted-files array after a selection, drop, or removal.",
          "name": "onFilesChange",
          "owner": "Root",
          "type": "(files: File[]) => void",
          "importance": "normal"
        },
        {
          "description": "Called with every rejected file and its reasons.",
          "name": "onFilesRejected",
          "owner": "Root",
          "type": "(rejections: FileUploadRejection[]) => void",
          "importance": "normal"
        },
        {
          "description": "Native accept string; also drives drop filtering.",
          "name": "accept",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "When false, a new selection replaces the current file.",
          "name": "multiple",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Per-file size cap in bytes.",
          "name": "maxSize",
          "owner": "Root",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Cap across selections when multiple is true.",
          "name": "maxFiles",
          "owner": "Root",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Required when accept, maxSize, or maxFiles is set. All user-facing rejection text.",
          "name": "validationMessages",
          "owner": "Root",
          "type": "FileUploadValidationMessages",
          "importance": "normal"
        },
        {
          "description": "Visible instruction inside Dropzone. Required when Dropzone is composed.",
          "name": "dropzoneHint",
          "owner": "Root",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Full row override where consumers inject progress or status UI.",
          "name": "renderItem",
          "owner": "Root",
          "type": "(args: { file: File; remove: () => void }) => ReactNode",
          "importance": "normal"
        },
        {
          "description": "Submits the native file input through a form.",
          "name": "name",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Custom trigger content; defaults to triggerLabel.",
          "name": "children",
          "owner": "Trigger",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Dropzone contents; defaults to Trigger plus dropzoneHint.",
          "name": "children",
          "owner": "Dropzone",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "List items; defaults to one Item per accepted file.",
          "name": "children",
          "owner": "List",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "The file this row represents.",
          "name": "file",
          "owner": "Item",
          "required": true,
          "type": "File",
          "importance": "normal"
        },
        {
          "description": "Custom item content; defaults to the file name and remove control.",
          "name": "children",
          "owner": "Item",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Attachment picker",
          "code": "import { FileUpload } from \"@crossroads/ui\";\n\n<FileUpload.Root\n  label=\"Attachments\"\n  triggerLabel=\"Choose files\"\n  filesAddedAnnouncement={(count) => `${count} files added`}\n  dropRejectedAnnouncement={(count) => `${count} files rejected`}\n  removeFileLabel={(file) => `Remove ${file.name}`}\n>\n  <FileUpload.Trigger />\n  <FileUpload.List />\n</FileUpload.Root>"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed.",
        "Keep upload transport, progress, and retries in consumer state; renderItem is the status slot.",
        "Always render Trigger. Dropzone is pointer enhancement only and requires dropzoneHint.",
        "Supply validationMessages whenever accept, maxSize, or maxFiles is set.",
        "Root already owns the native hidden file input. Do not compose FileUpload.HiddenInput as a child of Root."
      ],
      "accessibilityNotes": [
        "The native file input stays in the DOM and visually hidden so form semantics and screen-reader file-upload announcements remain native.",
        "Dropzone is pointer enhancement only; Trigger is always the keyboard path. List uses role=list/listitem, and remove buttons return focus to the next item or Trigger.",
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Button",
        "IconButton",
        "Field",
        "Label",
        "HelperText",
        "FieldError",
        "Icon",
        "Typography",
        "VisuallyHidden",
        "Box",
        "Inline",
        "Surface"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/FileUpload/FileUpload.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/foundations/typography/Typography/Typography.css",
        "src/components/foundations/utilities/Icon/Icon.css",
        "src/components/foundations/utilities/VisuallyHidden/VisuallyHidden.css",
        "src/components/layout/layout.css",
        "src/components/surfaces/Shape/Shape.css"
      ],
      "iconDependencies": [
        "close",
        "upload"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "Button",
        "Field",
        "Progress"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-fileupload--docs"
    },
    {
      "name": "TextArea",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Dedicated multiline field with Field parity, logical resize, autosize, and an optional character-count slot. Absorbs the retired TextareaAutosize placeholder.",
      "importPath": "@crossroads/ui",
      "exports": [
        "TextArea"
      ],
      "props": [
        {
          "description": "Field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no label is provided.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "ID of visible consumer-authored text naming the field when no label is provided.",
          "name": "aria-labelledby",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled value.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "",
          "description": "Initial value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when the textarea value changes.",
          "name": "onValueChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Helper copy under the field; replaced by error while invalid.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Error copy; forces the invalid state.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "3",
          "description": "Visible rows when autosize is off.",
          "name": "rows",
          "type": "number",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Grows and shrinks with content between minRows and maxRows.",
          "name": "autosize",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "1",
          "description": "Autosize lower clamp.",
          "name": "minRows",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Autosize upper clamp; overflow scrolls beyond it.",
          "name": "maxRows",
          "type": "number",
          "importance": "normal"
        },
        {
          "defaultValue": "block",
          "description": "Logical resize axes. Maps to CSS resize.",
          "name": "resize",
          "type": "TextAreaResize",
          "importance": "normal"
        },
        {
          "description": "Native maxLength; also the count denominator.",
          "name": "maxLength",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Character-count slot. The visible node is aria-hidden.",
          "name": "renderCount",
          "type": "(args: TextAreaCountArgs) => ReactNode",
          "importance": "normal"
        },
        {
          "description": "Required when renderCount is set. Debounced polite live-region string.",
          "name": "countAnnouncementLabel",
          "type": "(args: { remaining: number }) => string",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Notes field",
          "code": "import { TextArea } from \"@crossroads/ui\";\n\n<TextArea label=\"Notes\" helperText=\"Visible to your team.\" rows={4} />"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed.",
        "TextArea owns every multiline field; TextField is single-line only and has no multiline mode.",
        "Pass countAnnouncementLabel whenever renderCount is set; the visible count is aria-hidden."
      ],
      "accessibilityNotes": [
        "Plain labelled textarea with implicit multiline semantics. Error, helper, and count are chained through aria-describedby; the visible count is aria-hidden and a polite live region announces remaining characters.",
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Field",
        "Label",
        "HelperText",
        "FieldError",
        "VisuallyHidden",
        "useDebouncedCallback"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/TextArea/TextArea.css",
        "src/components/forms/TextField/TextField.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/foundations/utilities/VisuallyHidden/VisuallyHidden.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "TextField",
        "SearchField",
        "Field"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-textarea--docs"
    },
    {
      "name": "TextField",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Single-line text input with labels, descriptions, errors, and leading or trailing icons.",
      "importPath": "@crossroads/ui",
      "exports": [
        "TextField",
        "TextFieldControl"
      ],
      "props": [
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Icon before the input value.",
          "name": "startIcon",
          "type": "IconName",
          "importance": "high"
        },
        {
          "description": "Icon after the input value.",
          "name": "endIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for directional field adornments when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Input value.",
          "name": "value",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Native input type; TextField is single-line only.",
          "name": "type",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Required field with a leading icon",
          "code": "import { TextField } from \"@crossroads/ui\";\n\n<TextField\n  label=\"Account name\"\n  required\n  startIcon=\"user\"\n  helperText=\"Use a name people can recognize.\"\n/>"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed.",
        "TextField is single-line only. Use TextArea for any multiline field — it owns rows, autosize, resize and the character-count slot.",
        "Reach for SearchField for search, NumberField for numeric entry, and Select or Combobox when the value is constrained."
      ],
      "accessibilityNotes": [
        "Every field needs a visible label or equivalent accessible name; error text replaces helper text while invalid."
      ],
      "componentDependencies": [
        "Field",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/TextField/TextField.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Field",
        "Label",
        "HelperText",
        "FieldError"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-textfield--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 10,
        "useCases": [
          "Collect a name or email",
          "Search input",
          "Field with helper text and validation errors"
        ],
        "aiPromptExamples": [
          "Build a sign-in form with email and password fields",
          "Add an email field that shows a validation error when invalid"
        ]
      }
    },
    {
      "name": "NumberField",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Native numeric input with validation and step controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "NumberField"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Optional visible field label; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name used when no visible label is rendered.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Numeric value.",
          "name": "value",
          "type": "number",
          "importance": "high"
        },
        {
          "description": "Minimum allowed value.",
          "name": "min",
          "type": "number",
          "importance": "high"
        },
        {
          "description": "Maximum allowed value.",
          "name": "max",
          "type": "number",
          "importance": "high"
        },
        {
          "description": "Step increment.",
          "name": "step",
          "type": "number",
          "importance": "high"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Quantity input",
          "code": "import { NumberField } from \"@crossroads/ui\";\n\n<NumberField label=\"Quantity\" defaultValue={1} min={1} />"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Field"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/NumberField/NumberField.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-numberfield--docs"
    },
    {
      "name": "SearchField",
      "group": "Forms",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Dedicated searchbox with a debounced committed-query callback, an owned clear action, and a loading state.",
      "importPath": "@crossroads/ui",
      "exports": [
        "SearchField"
      ],
      "props": [
        {
          "description": "Control height — sm 36px, md 40px, lg 44px. Omit for md. Multiline controls do not take it.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "importance": "normal"
        },
        {
          "description": "Accessible name for the clear action.",
          "name": "clearLabel",
          "required": true,
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Field label, rendered visually hidden unless labelVisibility is visible; provide aria-label or aria-labelledby when omitted.",
          "name": "label",
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Accessible name used when no label is provided.",
          "name": "aria-label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled query value.",
          "name": "value",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Initial value for uncontrolled usage.",
          "name": "defaultValue",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called on every keystroke with the current value.",
          "name": "onValueChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Debounced committed-query callback; also fires immediately on Enter and on clear.",
          "name": "onSearch",
          "type": "(query: string) => void",
          "importance": "high"
        },
        {
          "defaultValue": "300",
          "description": "Trailing-edge debounce for onSearch; 0 makes onSearch track every change.",
          "name": "debounceMs",
          "type": "number",
          "importance": "high"
        },
        {
          "defaultValue": "true",
          "description": "Whether the clear action renders while the field has text.",
          "name": "clearable",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "hidden",
          "description": "Whether the label paints visibly or stays screen-reader-only.",
          "name": "labelVisibility",
          "type": "\"visible\" | \"hidden\"",
          "importance": "normal"
        },
        {
          "description": "Shows the end-slot spinner; loadingLabel is required alongside it.",
          "name": "loading",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Screen reader announcement for the busy state.",
          "name": "loadingLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Node shown before the input value; defaults to the pack magnifier icon, null removes the slot.",
          "name": "startAdornment",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Debounced product search",
          "code": "import { SearchField } from \"@crossroads/ui\";\n\n<SearchField\n  label=\"Search products\"\n  clearLabel=\"Clear search\"\n  placeholder=\"Search products\"\n  helperText=\"Results update when you pause typing.\"\n/>"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed.",
        "Fetch results in onSearch, not onValueChange; the debounced callback is the committed query.",
        "SearchField consumes Escape while it has text to clear itself; the key reaches an enclosing dialog only once the field is already empty.",
        "Wrap the field in a form with role=\"search\" for landmark navigation, and reach for Autocomplete when suggestions are needed."
      ],
      "accessibilityNotes": [
        "The input is a searchbox named by a visually hidden label by default; the inconsistent native cancel button is suppressed so the single clear button serves pointer and screen reader users alike.",
        "Loading is announced politely through the spinner's live region; per-keystroke results are never announced."
      ],
      "componentDependencies": [
        "TextField",
        "Field",
        "Label",
        "HelperText",
        "FieldError",
        "VisuallyHidden",
        "IconButton",
        "Icon",
        "Spinner",
        "Box",
        "useDebouncedCallback"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/forms/SearchField/SearchField.css",
        "src/components/forms/TextField/TextField.css",
        "src/components/foundations/forms/Field/Field.css",
        "src/components/foundations/forms/Label/Label.css",
        "src/components/foundations/forms/HelperText/HelperText.css",
        "src/components/foundations/forms/FieldError/FieldError.css",
        "src/components/foundations/forms/RequiredIndicator/RequiredIndicator.css",
        "src/components/buttons/IconButton/IconButton.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/foundations/utilities/Icon/Icon.css",
        "src/components/foundations/utilities/Spinner/Spinner.css",
        "src/components/foundations/utilities/VisuallyHidden/VisuallyHidden.css"
      ],
      "iconDependencies": [
        "close",
        "search"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "TextField",
        "Autocomplete"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-forms-searchfield--docs"
    },
    {
      "name": "ToggleButton",
      "group": "Forms",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Pressed-state button for toolbar and mode selection.",
      "importPath": null,
      "exports": [
        "ToggleButton"
      ],
      "props": [
        {
          "description": "Visible field label. Keep it localized and concise.",
          "name": "label",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Marks the field as required and renders the required indicator.",
          "name": "required",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Disables the field and prevents user input.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Validation message. When present, it replaces helper text.",
          "name": "error",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supportive guidance shown when there is no error.",
          "name": "helperText",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// ToggleButton is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use visible labels for every field unless another accessible name is explicitly provided.",
        "When error is present, show error instead of helper text; restore helper text when error clears.",
        "Required state must be visible and programmatically exposed."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "Box",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Low-level polymorphic primitive for replacing raw wrapper elements.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Box"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Structural container",
          "code": "import { Box } from \"@crossroads/ui\";\n\n<Box as=\"section\" style={{ padding: \"var(--cr-space-4)\", background: \"var(--cr-color-surface-subtle)\" }}>\n  Box content\n</Box>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-box--docs"
    },
    {
      "name": "Container",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Responsive content width and page padding primitive.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Container"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Constrained content",
          "code": "import { Container } from \"@crossroads/ui\";\n\n<Container size=\"md\">Width-constrained content with tokenized inline padding.</Container>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-container--docs"
    },
    {
      "name": "Grid",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Grid layout primitive with auto-fit or explicit column tracks and spanning items.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Grid",
        "GridItem",
        "GridRoot"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Responsive cards",
          "code": "import { Card, Grid } from \"@crossroads/ui\";\n\n<Grid.Root gap=\"4\">\n  <Card>First item</Card>\n  <Card>Second item</Card>\n  <Card>Third item</Card>\n</Grid.Root>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-grid--docs"
    },
    {
      "name": "Inline",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Inline flex layout for compact controls.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Inline"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Inline actions",
          "code": "import { Button, Inline } from \"@crossroads/ui\";\n\n<Inline gap=\"3\">\n  <Button label=\"Save\" />\n  <Button label=\"Cancel\" variant=\"outlined\" />\n</Inline>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-inline--docs"
    },
    {
      "name": "Spacer",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Logical spacer for block or inline rhythm.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Spacer"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Spacer } from \"@crossroads/ui\";\n\n<Spacer />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-spacer--docs"
    },
    {
      "name": "Stack",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Vertical stack layout with tokenized gaps.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Stack",
        "StackItem",
        "StackRoot"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Vertical content",
          "code": "import { Stack } from \"@crossroads/ui\";\n\n<Stack.Root direction=\"column\" gap=\"3\">\n  <strong>Account details</strong>\n  <span>Profile information</span>\n  <span>Security settings</span>\n</Stack.Root>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-stack--docs"
    },
    {
      "name": "ResizablePanels",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Compound layout for pointer and keyboard-resizable panels.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ResizablePanels",
        "ResizablePanelsHandle",
        "ResizablePanelsPanel",
        "ResizablePanelsRoot"
      ],
      "props": [
        {
          "description": "Accessible name for the panel group.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled panel sizes as percentages totaling 100.",
          "name": "sizes",
          "type": "number[]",
          "importance": "normal"
        },
        {
          "description": "Initial panel sizes as percentages totaling 100.",
          "name": "defaultSizes",
          "type": "number[]",
          "importance": "normal"
        },
        {
          "description": "Panel orientation.",
          "name": "orientation",
          "type": "\"horizontal\" | \"vertical\"",
          "importance": "normal"
        },
        {
          "description": "Disables all panel handles.",
          "name": "disabled",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called after a panel resize.",
          "name": "onSizesChange",
          "type": "(sizes: number[]) => void",
          "importance": "normal"
        },
        {
          "description": "Composed ResizablePanels.Panel and ResizablePanels.Handle children.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Two-panel workspace",
          "code": "import { Box, ResizablePanels } from \"@crossroads/ui\";\n\n<ResizablePanels.Root\n  aria-label=\"Workspace panels\"\n  defaultSizes={[35, 65]}\n  style={{ blockSize: \"16rem\", inlineSize: \"100%\" }}\n>\n  <ResizablePanels.Panel id=\"navigation\" minSize={20}>\n    <Box style={{ padding: \"var(--cr-space-4)\" }}>Navigation</Box>\n  </ResizablePanels.Panel>\n  <ResizablePanels.Handle aria-label=\"Resize navigation panel\" />\n  <ResizablePanels.Panel id=\"content\" minSize={40}>\n    <Box style={{ padding: \"var(--cr-space-4)\" }}>Content</Box>\n  </ResizablePanels.Panel>\n</ResizablePanels.Root>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/ResizablePanels/ResizablePanels.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-resizablepanels--docs"
    },
    {
      "name": "WorkspaceWindow",
      "group": "Layout",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Non-modal workspace surface that can float, resize, dock, or fill its host.",
      "importPath": "@crossroads/ui",
      "exports": [
        "WorkspaceWindow",
        "WorkspaceWindowContent",
        "WorkspaceWindowRoot",
        "WorkspaceWindowTitleBar"
      ],
      "props": [
        {
          "description": "Accessible name for the workspace surface.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Current window, dock, or fullscreen presentation.",
          "name": "mode",
          "required": true,
          "type": "\"window\" | \"docked-start\" | \"docked-end\" | \"fullscreen\"",
          "importance": "normal"
        },
        {
          "description": "Controlled floating position and dimensions.",
          "name": "geometry",
          "required": true,
          "type": "WorkspaceWindowGeometry",
          "importance": "normal"
        },
        {
          "description": "Controlled docked width.",
          "name": "dockWidth",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Reports floating position and size changes.",
          "name": "onGeometryChange",
          "required": true,
          "type": "(geometry: WorkspaceWindowGeometry) => void",
          "importance": "normal"
        },
        {
          "description": "Reports dock width changes.",
          "name": "onDockWidthChange",
          "type": "(width: number) => void",
          "importance": "normal"
        },
        {
          "description": "Composed title bar and content.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Floating workspace",
          "code": "import { Box, WorkspaceWindow } from \"@crossroads/ui\";\n\n<WorkspaceWindow.Root\n  aria-label=\"Example workspace\"\n  geometry={{ x: 8, y: 8, width: 420, height: 300 }}\n  minHeight={200}\n  minWidth={280}\n  mode=\"window\"\n  onGeometryChange={Function.prototype}\n>\n  <WorkspaceWindow.TitleBar><strong>Workspace</strong></WorkspaceWindow.TitleBar>\n  <WorkspaceWindow.Content>\n    <Box style={{ padding: \"var(--cr-space-4)\" }}>Drag or resize this window.</Box>\n  </WorkspaceWindow.Content>\n</WorkspaceWindow.Root>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/WorkspaceWindow/WorkspaceWindow.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-workspacewindow--docs"
    },
    {
      "name": "ImageList",
      "group": "Layout",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Responsive image collection layout for visual media grids.",
      "importPath": null,
      "exports": [
        "ImageList"
      ],
      "props": [
        {
          "description": "Layout content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Polymorphic element override for semantic HTML.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "defaultValue": "4",
          "description": "Tokenized spacing between children.",
          "name": "gap",
          "type": "0 | 1 | 2 | 3 | 4 | 6 | 8 | 12",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// ImageList is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "PageShell",
      "group": "Layout",
      "status": "in-progress",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Structural page frame with skip navigation, one main target, named landmarks, and container-responsive tracks without application state.",
      "importPath": "@crossroads/ui",
      "exports": [
        "PageShell",
        "PageShellRoot",
        "PageShellSkipLink",
        "PageShellHeader",
        "PageShellNav",
        "PageShellMain",
        "PageShellAside",
        "PageShellFooter"
      ],
      "props": [
        {
          "description": "PageShell parts in semantic reading order; include exactly one Main.",
          "name": "children",
          "owner": "Root",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "single",
          "description": "Landmark track recipe that never changes DOM order or application state.",
          "name": "layout",
          "owner": "Root",
          "type": "PageShellLayout",
          "importance": "normal"
        },
        {
          "description": "Stable ID shared by SkipLink and Main; must not contain whitespace.",
          "name": "mainId",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "full",
          "description": "Maximum inline size from the shared content-width scale.",
          "name": "maxWidth",
          "owner": "Root",
          "type": "PageShellMaxWidth",
          "importance": "normal"
        },
        {
          "defaultValue": "adaptive",
          "description": "Adaptive stacks tracks in narrow containers; fixed preserves the chosen recipe.",
          "name": "responsiveDisplay",
          "owner": "Root",
          "type": "PageShellResponsiveDisplay",
          "importance": "normal"
        },
        {
          "description": "Localized skip-link text.",
          "name": "children",
          "owner": "SkipLink",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional fragment target override; Root.mainId is used by default.",
          "name": "targetId",
          "owner": "SkipLink",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Header content; PageShell does not prescribe product chrome.",
          "name": "children",
          "owner": "Header",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Consumer-authored navigation landmark name.",
          "name": "aria-label",
          "owner": "Nav",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "ID of visible consumer-authored text naming the navigation landmark.",
          "name": "aria-labelledby",
          "owner": "Nav",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Navigation content, normally NavList with landmark disabled.",
          "name": "children",
          "owner": "Nav",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Deliberately unavailable in v1; responsive navigation behavior belongs to AppShell or NavigationDrawer.",
          "name": "collapsible",
          "owner": "Nav",
          "type": "never",
          "importance": "normal"
        },
        {
          "description": "Primary page content and the one registered skip destination.",
          "name": "children",
          "owner": "Main",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Consumer-authored complementary landmark name.",
          "name": "aria-label",
          "owner": "Aside",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "ID of visible consumer-authored text naming the complementary landmark.",
          "name": "aria-labelledby",
          "owner": "Aside",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Complementary content; omit Aside entirely when no content exists.",
          "name": "children",
          "owner": "Aside",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Footer content.",
          "name": "children",
          "owner": "Footer",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Navigation, content, and related region",
          "code": "import { NavList, PageShell, Panel } from \"@crossroads/ui\";\n\n<PageShell.Root layout=\"nav-main-aside\" mainId=\"page-content\">\n  <PageShell.SkipLink>Skip to main content</PageShell.SkipLink>\n  <PageShell.Header>Workspace header</PageShell.Header>\n  <PageShell.Nav aria-label=\"Primary navigation\">\n    <NavList.Root label=\"Primary navigation\" landmark={false}>\n      <NavList.Item href=\"/overview\" value=\"overview\">Overview</NavList.Item>\n    </NavList.Root>\n  </PageShell.Nav>\n  <PageShell.Main>\n    <h1>Workspace overview</h1>\n    <Panel.Root>\n      <Panel.Header><Panel.Title>Summary</Panel.Title></Panel.Header>\n      <Panel.Body>Page content</Panel.Body>\n    </Panel.Root>\n  </PageShell.Main>\n  <PageShell.Aside aria-label=\"Related information\">Related links</PageShell.Aside>\n  <PageShell.Footer>Workspace footer</PageShell.Footer>\n</PageShell.Root>"
        }
      ],
      "usageRules": [
        "Use Box, Stack, Inline, Grid, Container, and Surface instead of raw div wrappers in library examples.",
        "Use logical spacing and direction-aware alignment for LTR and RTL.",
        "Prefer intrinsic responsive layouts over viewport-specific hard-coded breakpoints.",
        "Reach for the intrinsic knobs first: Grid.Root minItemInlineSize and Stack.Item flexBasis take a measure (2xs-xl) and reflow on their own, with no query and no wrapper.",
        "Express a responsive value as a step map keyed to container steps, never to the viewport: Grid.Item span={{ base: 'full', md: 6 }}, Stack.Root direction={{ base: 'column', md: 'row' }}. There are no viewport-keyed props in this library.",
        "A step map above `base` resolves against the nearest enclosing layout space, so wrap it in Container; with no layout space it silently falls back to `base`. Always set `base`, and make it the narrow layout.",
        "Author SkipLink first and include exactly one Main in every Root.",
        "Use NavList with landmark=false inside PageShell.Nav so one consumer-owned name labels the navigation landmark.",
        "Choose layout for structural tracks only; PageShell never owns route selection, drawer state, authentication, data fetching, or analytics.",
        "Use responsiveDisplay=fixed only when the consumer intentionally preserves the multi-column recipe in narrow containers.",
        "Use PageShell for landmarks and AppShell later for responsive application chrome composed from PageShell, AppBar, and NavigationDrawer."
      ],
      "accessibilityNotes": [
        "Root requires exactly one Main. Main is the native main landmark and receives tabIndex=-1 so native fragment navigation can move focus without adding it to normal Tab order.",
        "SkipLink is a native fragment link, stays first in DOM and keyboard order when authored first, and exposes a token-backed target when focused.",
        "Nav and Aside require consumer-owned accessible names; omit Aside rather than rendering an empty complementary landmark.",
        "Adaptive layout changes only CSS grid tracks. Header, Nav, Main, Aside, and Footer remain in semantic DOM order in LTR, RTL, and narrow containers.",
        "PageShell owns document structure only. Routing, selection, drawers, application state, and product chrome belong to consumers or AppShell.",
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [
        {
          "name": "NavList",
          "reason": "Storybook composition proves nested navigation without duplicate nav landmarks."
        },
        {
          "name": "Panel",
          "reason": "Storybook composition proves realistic main and complementary content without runtime coupling."
        }
      ],
      "cssDependencies": [
        "src/components/layout/PageShell/PageShell.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "breakpoint",
        "z-index"
      ],
      "relatedComponents": [
        "AppBar",
        "NavigationDrawer",
        "NavList",
        "Panel",
        "Toolbar",
        "ActionBar"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": false,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-layout-pageshell--docs",
      "showcase": {
        "aiPromptExamples": [
          "Create an accessible page frame with skip navigation, primary navigation, main content, and related information",
          "Build a container-responsive settings page shell that preserves landmark order in RTL"
        ],
        "clientSuitability": "supporting",
        "priority": 45,
        "useCases": [
          "Application page structure",
          "Documentation or settings layouts",
          "Accessible skip-navigation frame"
        ]
      }
    },
    {
      "name": "DropdownButton",
      "group": "Menus",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Responsive menu trigger with mobile panel behavior.",
      "importPath": "@crossroads/ui",
      "exports": [
        "DropdownButton",
        "DropdownButtonContent",
        "DropdownButtonItem",
        "DropdownButtonRoot",
        "DropdownButtonTrigger"
      ],
      "props": [
        {
          "description": "Compound parts: DropdownButton.Trigger, .Content, and .Item children.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Open state for controlled usage.",
          "name": "open",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial open state.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Fired whenever the menu opens or closes.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "defaultValue": "comfortable",
          "description": "Row height density shared with list and table patterns.",
          "name": "density",
          "type": "\"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "Called when a menu item is selected.",
          "name": "onSelect",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Actions dropdown",
          "code": "import { DropdownButton } from \"@crossroads/ui\";\n\n<DropdownButton.Root>\n  <DropdownButton.Trigger icon=\"layout-dashboard\" label=\"Actions\" />\n  <DropdownButton.Content aria-label=\"Action menu\">\n    <DropdownButton.Item icon=\"edit\">Edit</DropdownButton.Item>\n    <DropdownButton.Item icon=\"copy\">Duplicate</DropdownButton.Item>\n    <DropdownButton.Item icon=\"trash\" tone=\"danger\">Delete</DropdownButton.Item>\n  </DropdownButton.Content>\n</DropdownButton.Root>"
        }
      ],
      "usageRules": [
        "Use Menu for a standalone command list and DropdownButton when the trigger and open behavior should be managed together.",
        "Keep menu rows keyboard navigable and preserve focus return after dismissal.",
        "Use density consistently with table and list row sizing.",
        "DropdownButton responsiveDisplay collapses the trigger against the nearest enclosing layout space, not the viewport, so it needs a Container ancestor; without one the label stays visible. Pair an icon-only trigger with a Tooltip."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ButtonBase",
        "Menu",
        "Icon",
        "Portal",
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css",
        "src/components/menus/DropdownButton/DropdownButton.css",
        "src/components/menus/Menu/Menu.css",
        "src/components/foundations/utilities/Icon/Icon.css"
      ],
      "iconDependencies": [
        "chevron-right"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "Menu",
        "ButtonBase",
        "Popover",
        "SplitButton"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-menus-dropdownbutton--docs"
    },
    {
      "name": "Menu",
      "group": "Menus",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Keyboard-navigable menu list and actions.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Menu",
        "MenuItem",
        "MenuRoot"
      ],
      "props": [
        {
          "description": "Menu.Item children composing the command list.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Which enabled item receives focus when autoFocus runs.",
          "name": "initialFocus",
          "type": "\"first\" | \"last\"",
          "importance": "normal"
        },
        {
          "description": "Accessible label when no external label exists.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "comfortable",
          "description": "Row height density shared with list and table patterns.",
          "name": "density",
          "type": "\"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "Called when a menu item is selected.",
          "name": "onSelect",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Actions menu",
          "code": "import { Menu } from \"@crossroads/ui\";\n\n<Menu.Root aria-label=\"Actions\">\n  <Menu.Item icon=\"edit\">Edit</Menu.Item>\n  <Menu.Item icon=\"copy\">Duplicate</Menu.Item>\n  <Menu.Item icon=\"trash\" tone=\"danger\">Delete</Menu.Item>\n</Menu.Root>"
        }
      ],
      "usageRules": [
        "Use Menu for a standalone command list and DropdownButton when the trigger and open behavior should be managed together.",
        "Keep menu rows keyboard navigable and preserve focus return after dismissal.",
        "Use density consistently with table and list row sizing.",
        "DropdownButton responsiveDisplay collapses the trigger against the nearest enclosing layout space, not the viewport, so it needs a Container ancestor; without one the label stays visible. Pair an icon-only trigger with a Tooltip."
      ],
      "accessibilityNotes": [
        "Menu items must support arrow-key navigation, Escape dismissal, and focus return to the trigger."
      ],
      "componentDependencies": [
        "Surface",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/layout/layout.css",
        "src/components/menus/Menu/Menu.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "DropdownButton",
        "Popover",
        "Drawer"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-menus-menu--docs"
    },
    {
      "name": "Link",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Inline and standalone link with logical icon placement.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Link"
      ],
      "props": [
        {
          "description": "Link text.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Destination URL.",
          "name": "href",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Icon before the text.",
          "name": "startIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Icon after the text.",
          "name": "endIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Opt-in mirroring for directional link icons when direction is RTL; defaults to false.",
          "name": "mirrorIconInRtl",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Inline link",
          "code": "import { Link } from \"@crossroads/ui\";\n\n<Link href=\"#details\" endIcon=\"chevron-right\" mirrorIconInRtl>View details</Link>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/Link/Link.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-link--docs"
    },
    {
      "name": "Tabs",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Keyboard-friendly tablist and tab panel navigation.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Tabs",
        "TabsList",
        "TabsPanel",
        "TabsRoot",
        "TabsTab"
      ],
      "props": [
        {
          "description": "Selected tab value.",
          "name": "value",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Initial selected tab value.",
          "name": "defaultValue",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Called when the selected tab changes.",
          "name": "onValueChange",
          "type": "(value: string) => void",
          "importance": "high"
        },
        {
          "description": "Tab-list orientation.",
          "name": "orientation",
          "type": "\"horizontal\" | \"vertical\"",
          "importance": "high"
        },
        {
          "description": "Activation behavior when focus moves between tabs.",
          "name": "activationMode",
          "type": "\"automatic\" | \"manual\"",
          "importance": "normal"
        },
        {
          "description": "Spacing rhythm while preserving the target floor.",
          "name": "density",
          "type": "\"compact\" | \"comfortable\" | \"spacious\"",
          "importance": "normal"
        },
        {
          "description": "What the strip shows when its own container is narrow: text-only drops the decorative tab icons, full keeps them at every width. Never affects scroll affordances.",
          "name": "responsiveDisplay",
          "type": "\"full\" | \"text-only\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Account sections",
          "code": "import { Tabs } from \"@crossroads/ui\";\n\n<Tabs.Root defaultValue=\"overview\">\n  <Tabs.List aria-label=\"Account sections\" scrollBackwardLabel=\"Scroll tabs backward\" scrollForwardLabel=\"Scroll tabs forward\">\n    <Tabs.Tab value=\"overview\">Overview</Tabs.Tab>\n    <Tabs.Tab value=\"activity\">Activity</Tabs.Tab>\n  </Tabs.List>\n  <Tabs.Panel value=\"overview\">Review the account summary.</Tabs.Panel>\n  <Tabs.Panel value=\"activity\">Follow recent account activity.</Tabs.Panel>\n</Tabs.Root>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions.",
        "responsiveDisplay controls the strip's own narrow-container adaptation: \"text-only\" (default) drops the decorative tab icons, \"full\" keeps them at every width. It never affects scroll affordances, so no tab becomes unreachable either way."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/Tabs/Tabs.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-tabs--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 42,
        "useCases": [
          "Switch between views in one page",
          "Settings sections",
          "Detail page panels"
        ],
        "aiPromptExamples": [
          "Split this settings page into profile, billing, and security tabs",
          "Add tabs for overview and activity"
        ]
      }
    },
    {
      "name": "BottomNavigation",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Mobile-friendly destination switcher for app sections.",
      "importPath": "@crossroads/ui",
      "exports": [
        "BottomNavigation",
        "BottomNavigationItem",
        "BottomNavigationRoot"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Primary destinations",
          "code": "import { BottomNavigation } from \"@crossroads/ui\";\n\n<BottomNavigation.Root aria-label=\"Primary navigation\" defaultValue=\"home\">\n  <BottomNavigation.Item icon=\"home\" value=\"home\">Home</BottomNavigation.Item>\n  <BottomNavigation.Item icon=\"search\" value=\"search\">Search</BottomNavigation.Item>\n  <BottomNavigation.Item icon=\"settings\" value=\"settings\">Settings</BottomNavigation.Item>\n</BottomNavigation.Root>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/BottomNavigation/BottomNavigation.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-bottomnavigation--docs"
    },
    {
      "name": "Breadcrumbs",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Hierarchical navigation trail with current-page semantics.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Breadcrumbs",
        "BreadcrumbsItem",
        "BreadcrumbsRoot"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Page hierarchy",
          "code": "import { Breadcrumbs } from \"@crossroads/ui\";\n\n<Breadcrumbs.Root aria-label=\"Breadcrumb\">\n  <Breadcrumbs.Item href=\"#home\">Home</Breadcrumbs.Item>\n  <Breadcrumbs.Item href=\"#projects\">Projects</Breadcrumbs.Item>\n  <Breadcrumbs.Item current>Sandbox</Breadcrumbs.Item>\n</Breadcrumbs.Root>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/Breadcrumbs/Breadcrumbs.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-breadcrumbs--docs"
    },
    {
      "name": "Pagination",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Page navigation control for long result sets.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Pagination"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Pagination } from \"@crossroads/ui\";\n\n<Pagination />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ButtonBase",
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/Pagination/Pagination.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-pagination--docs"
    },
    {
      "name": "Stepper",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Progressive multi-step workflow indicator.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Stepper",
        "StepperRoot",
        "StepperStep"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Setup progress",
          "code": "import { Stepper } from \"@crossroads/ui\";\n\n<Stepper.Root aria-label=\"Setup progress\">\n  <Stepper.Step status=\"complete\">Account</Stepper.Step>\n  <Stepper.Step status=\"current\" description=\"Choose your preferences\">Preferences</Stepper.Step>\n  <Stepper.Step>Review</Stepper.Step>\n</Stepper.Root>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/Stepper/Stepper.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-stepper--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 43,
        "useCases": [
          "Multi-step onboarding",
          "Checkout flow",
          "Progress through a wizard"
        ],
        "aiPromptExamples": [
          "Build a three-step onboarding flow with a progress indicator",
          "Show checkout steps for cart, shipping, and payment"
        ]
      }
    },
    {
      "name": "AppBar",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Top application bar for product navigation and actions.",
      "importPath": "@crossroads/ui",
      "exports": [
        "AppBar"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { AppBar } from \"@crossroads/ui\";\n\n<AppBar />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/AppBar/AppBar.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-appbar--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 40,
        "useCases": [
          "Application top bar",
          "Page header with actions",
          "Brand plus account menu"
        ],
        "aiPromptExamples": [
          "Add a top bar with the product name and an account menu",
          "Put a search field and notifications icon in the app bar"
        ]
      }
    },
    {
      "name": "NavigationDrawer",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Collapsible sidebar navigation with icon rail and responsive behavior.",
      "importPath": "@crossroads/ui",
      "exports": [
        "NavigationDrawer",
        "NavigationDrawerBody",
        "NavigationDrawerDivider",
        "NavigationDrawerFooter",
        "NavigationDrawerHeader",
        "NavigationDrawerItem",
        "NavigationDrawerNav",
        "NavigationDrawerRoot",
        "NavigationDrawerToggle"
      ],
      "props": [
        {
          "description": "Composed navigation drawer parts.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Active navigation item id.",
          "name": "activeId",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Accessible label for the expanded-state collapse control.",
          "name": "collapseLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled mini/collapsed state.",
          "name": "collapsed",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Icon shown while the drawer is collapsed.",
          "name": "collapsedIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Semantic accent color for selected and interactive states.",
          "name": "color",
          "type": "\"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Icon shown while the drawer is expanded.",
          "name": "expandIcon",
          "type": "IconName",
          "importance": "normal"
        },
        {
          "description": "Accessible label for the collapsed-state expand control.",
          "name": "expandLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Initial mini/collapsed state.",
          "name": "defaultCollapsed",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when mini/collapsed state changes.",
          "name": "onCollapsedChange",
          "type": "(collapsed: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Responsive container-query behavior.",
          "name": "responsiveBehavior",
          "type": "\"container\" | \"none\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Workspace navigation",
          "code": "import { NavigationDrawer } from \"@crossroads/ui\";\n\n<NavigationDrawer.Root aria-label=\"Workspace navigation\" activeId=\"overview\" responsiveBehavior=\"none\">\n  <NavigationDrawer.Header>\n    <strong>Workspace</strong>\n    <NavigationDrawer.Toggle />\n  </NavigationDrawer.Header>\n  <NavigationDrawer.Body>\n    <NavigationDrawer.Nav aria-label=\"Sections\">\n      <NavigationDrawer.Item id=\"overview\" icon=\"home\">Overview</NavigationDrawer.Item>\n      <NavigationDrawer.Item id=\"projects\" icon=\"folder\">Projects</NavigationDrawer.Item>\n      <NavigationDrawer.Item id=\"settings\" icon=\"settings\">Settings</NavigationDrawer.Item>\n    </NavigationDrawer.Nav>\n  </NavigationDrawer.Body>\n</NavigationDrawer.Root>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Divider",
        "IconButton",
        "List",
        "Icon"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/NavigationDrawer/NavigationDrawer.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-navigationdrawer--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 41,
        "useCases": [
          "Primary app navigation",
          "Collapsible sidebar",
          "Mobile navigation panel"
        ],
        "aiPromptExamples": [
          "Build an app shell with a sidebar for dashboard, reports, and settings",
          "Make the sidebar collapse on small screens"
        ]
      }
    },
    {
      "name": "SpeedDial",
      "group": "Navigation",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Expandable floating action menu for related actions.",
      "importPath": null,
      "exports": [
        "SpeedDial"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// SpeedDial is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "NavList",
      "group": "Navigation",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Generic vertical or horizontal navigation list for persistent sections and sidebars.",
      "importPath": "@crossroads/ui",
      "exports": [
        "NavList",
        "NavListRoot",
        "NavListItem",
        "NavListGroup",
        "NavListCollapsibleGroup",
        "NavListDivider"
      ],
      "props": [
        {
          "description": "Accessible name for the navigation landmark or, when landmark is false, the root list.",
          "name": "label",
          "owner": "Root",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Current item identity for controlled usage.",
          "name": "value",
          "owner": "Root",
          "type": "string | null",
          "importance": "normal"
        },
        {
          "description": "Initial current item identity for uncontrolled usage.",
          "name": "defaultValue",
          "owner": "Root",
          "type": "string | null",
          "importance": "normal"
        },
        {
          "description": "Called when an enabled navigation item is activated.",
          "name": "onValueChange",
          "owner": "Root",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Expanded group identities for controlled usage.",
          "name": "expandedValues",
          "owner": "Root",
          "type": "string[]",
          "importance": "normal"
        },
        {
          "description": "Initial expanded group identities for uncontrolled usage.",
          "name": "defaultExpandedValues",
          "owner": "Root",
          "type": "string[]",
          "importance": "normal"
        },
        {
          "description": "Called with the complete expanded-group set after a group toggles.",
          "name": "onExpandedValuesChange",
          "owner": "Root",
          "type": "(values: string[]) => void",
          "importance": "normal"
        },
        {
          "defaultValue": "vertical",
          "description": "Navigation flow. Horizontal mode intentionally disallows nested groups.",
          "name": "orientation",
          "owner": "Root",
          "type": "NavListOrientation",
          "importance": "normal"
        },
        {
          "defaultValue": "comfortable",
          "description": "Token-backed row spacing; every density retains the target floor.",
          "name": "density",
          "owner": "Root",
          "type": "Density",
          "importance": "normal"
        },
        {
          "defaultValue": "adaptive",
          "description": "Narrow-container spacing policy; fixed disables the adaptation.",
          "name": "responsiveDisplay",
          "owner": "Root",
          "type": "NavListResponsiveDisplay",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether Root owns a navigation landmark.",
          "name": "landmark",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "NavList parts composing the navigation hierarchy.",
          "name": "children",
          "owner": "Root",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Stable item identity used by Root's current-value model.",
          "name": "value",
          "owner": "Item",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Destination passed to the native anchor or custom router link.",
          "name": "href",
          "owner": "Item",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Custom router-link element; native anchor is the default.",
          "name": "as",
          "owner": "Item",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Visible localized link label.",
          "name": "children",
          "owner": "Item",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Decorative leading content, normally Icon.",
          "name": "icon",
          "owner": "Item",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supplementary visual content paired with badgeLabel.",
          "name": "badge",
          "owner": "Item",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Consumer-authored accessible text for badge content.",
          "name": "badgeLabel",
          "owner": "Item",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Prevents navigation and removes the item from the Tab order.",
          "name": "disabled",
          "owner": "Item",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "page",
          "description": "Value exposed through aria-current while active.",
          "name": "currentMode",
          "owner": "Item",
          "type": "NavListCurrentMode",
          "importance": "normal"
        },
        {
          "description": "Called after Root accepts activation.",
          "name": "onSelect",
          "owner": "Item",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Visible localized group heading.",
          "name": "label",
          "owner": "Group",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "3",
          "description": "Semantic heading level within the consuming page.",
          "name": "headingLevel",
          "owner": "Group",
          "type": "2 | 3 | 4 | 5 | 6",
          "importance": "normal"
        },
        {
          "description": "Navigation items in the group.",
          "name": "children",
          "owner": "Group",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Stable group identity in Root's expanded-values model.",
          "name": "value",
          "owner": "CollapsibleGroup",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Visible localized group label.",
          "name": "label",
          "owner": "CollapsibleGroup",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Consumer-authored accessible action name for the disclosure trigger.",
          "name": "toggleLabel",
          "owner": "CollapsibleGroup",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Prevents the disclosure trigger from changing state.",
          "name": "disabled",
          "owner": "CollapsibleGroup",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Native trigger attributes excluding state owned by the group.",
          "name": "triggerProps",
          "owner": "CollapsibleGroup",
          "type": "ButtonHTMLAttributes<HTMLButtonElement>",
          "importance": "normal"
        },
        {
          "description": "Navigation items in the collapsible group.",
          "name": "children",
          "owner": "CollapsibleGroup",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Workspace navigation",
          "code": "import { Badge, Icon, NavList } from \"@crossroads/ui\";\n\n<NavList.Root\n  defaultExpandedValues={[\"projects\"]}\n  defaultValue=\"overview\"\n  label=\"Workspace navigation\"\n>\n  <NavList.Item href=\"/overview\" icon={<Icon name=\"home\" />} value=\"overview\">\n    Overview\n  </NavList.Item>\n  <NavList.Item\n    badge={<Badge count={4} />}\n    badgeLabel=\"4 unread reports\"\n    href=\"/reports\"\n    value=\"reports\"\n  >\n    Reports\n  </NavList.Item>\n  <NavList.CollapsibleGroup\n    label=\"Projects\"\n    toggleLabel=\"Toggle project links\"\n    value=\"projects\"\n  >\n    <NavList.Item href=\"/projects/crossroads\" value=\"crossroads\">\n      Crossroads UI\n    </NavList.Item>\n  </NavList.CollapsibleGroup>\n</NavList.Root>"
        }
      ],
      "usageRules": [
        "Use navigation components for movement between views, pages, or workflow steps.",
        "Expose current item state programmatically.",
        "Use links for URL navigation and buttons for in-place actions.",
        "Use NavList for persistent destination links; use Menu for actions and Tabs for switching panels without navigation.",
        "Use Group and CollapsibleGroup only in vertical orientation.",
        "When a parent such as NavigationDrawer already owns the named navigation landmark, set landmark=false and keep label meaningful for the root list.",
        "ResponsiveDisplay changes spacing only; it never hides destinations, labels, or accessibility information."
      ],
      "accessibilityNotes": [
        "Root renders a named navigation landmark by default; set landmark=false only when an already-named ancestor owns the landmark.",
        "Items remain native links in normal Tab order. NavList never applies menu roles or arrow-key navigation.",
        "Collapsible groups expose aria-expanded and aria-controls, return focus to their trigger when controlled state closes a focused subtree, and require a consumer-authored toggle label.",
        "Badge visuals are hidden from the accessibility tree and require badgeLabel so supplementary information is announced once.",
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Divider",
        "Icon",
        "Transitions",
        "VisuallyHidden",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/navigation/NavList/NavList.css"
      ],
      "iconDependencies": [
        "chevron-right"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "NavigationDrawer",
        "Menu",
        "Breadcrumbs",
        "Tabs",
        "List",
        "PageShell"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-navigation-navlist--docs",
      "showcase": {
        "aiPromptExamples": [
          "Build persistent workspace navigation with current-page and collapsible project sections",
          "Add a compact horizontal page navigation list that scrolls when space is constrained"
        ],
        "clientSuitability": "supporting",
        "priority": 44,
        "useCases": [
          "Sidebar section navigation",
          "Settings page navigation",
          "Documentation section links"
        ]
      }
    },
    {
      "name": "Dialog",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Modal dialog with focus restoration and escape handling.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Dialog"
      ],
      "props": [
        {
          "description": "Dialog title.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Accessible name for the dialog trigger.",
          "name": "label",
          "required": true,
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Accessible close-button label.",
          "name": "closeLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Optional supporting description under the title.",
          "name": "description",
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Dialog body. Action buttons go here — there is no footer prop.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Dialog } from \"@crossroads/ui\";\n\n<Dialog />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ModalBase",
        "ButtonBase",
        "Icon",
        "Portal"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "z-index"
      ],
      "relatedComponents": [
        "Modal",
        "Drawer"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-dialog--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 50,
        "useCases": [
          "Confirm a destructive action",
          "Focused form in an overlay",
          "Detail view without leaving the page"
        ],
        "aiPromptExamples": [
          "Ask the user to confirm before deleting the project",
          "Open an edit form in a modal dialog"
        ]
      }
    },
    {
      "name": "Drawer",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Edge-attached modal panel with logical placement.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Drawer",
        "DrawerBody",
        "DrawerClose",
        "DrawerContent",
        "DrawerDescription",
        "DrawerDivider",
        "DrawerFooter",
        "DrawerHeader",
        "DrawerRoot",
        "DrawerTitle",
        "DrawerTrigger"
      ],
      "props": [
        {
          "description": "Drawer title rendered by Drawer.Title or the compatibility API.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Optional supporting description rendered by Drawer.Description.",
          "name": "description",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible close-button label.",
          "name": "closeLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Whether backdrop clicks close the drawer.",
          "name": "closeOnBackdropClick",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Whether Escape closes the drawer.",
          "name": "closeOnEscapeKeyDown",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial open state for uncontrolled usage.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Whether the page scroll is locked while open.",
          "name": "lockScroll",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the drawer opens or closes.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Logical drawer edge.",
          "name": "placement",
          "type": "\"start\" | \"end\"",
          "importance": "high"
        },
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Layered overlay content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Drawer } from \"@crossroads/ui\";\n\n<Drawer />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Modal",
        "ButtonBase",
        "IconButton",
        "Divider",
        "Stack",
        "Typography",
        "Portal"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "z-index"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-drawer--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 51,
        "useCases": [
          "Side panel for details",
          "Filters panel",
          "Edit form beside the list"
        ],
        "aiPromptExamples": [
          "Open a details panel from the right when a row is clicked",
          "Put the filters in a slide-over panel"
        ]
      }
    },
    {
      "name": "Popover",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Anchored floating panel with responsive mobile behavior.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Popover"
      ],
      "props": [
        {
          "description": "Popover panel content.",
          "name": "content",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Preferred placement.",
          "name": "placement",
          "type": "\"top\" | \"bottom\" | \"start\" | \"end\"",
          "importance": "normal"
        },
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Accessible title or label for modal and dialog content.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Layered overlay content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Popover } from \"@crossroads/ui\";\n\n<Popover />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "ButtonBase",
        "Portal",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "z-index"
      ],
      "relatedComponents": [
        "Tooltip",
        "DropdownButton"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-popover--docs"
    },
    {
      "name": "Tooltip",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Hover and focus disclosure for short contextual help.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Tooltip"
      ],
      "props": [
        {
          "description": "Tooltip content.",
          "name": "content",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Element that owns hover and focus interactions.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Preferred logical tooltip placement.",
          "name": "placement",
          "type": "\"top\" | \"bottom\" | \"start\" | \"end\"",
          "importance": "normal"
        },
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Accessible title or label for modal and dialog content.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Contextual help",
          "code": "import { Button, Tooltip } from \"@crossroads/ui\";\n\n<Tooltip arrow content=\"This action saves your changes.\" defaultOpen placement=\"bottom\">\n  <Button label=\"Save changes\" />\n</Tooltip>"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Portal",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "z-index"
      ],
      "relatedComponents": [
        "Popover"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-tooltip--docs"
    },
    {
      "name": "Backdrop",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Page-blocking overlay layer for modal and loading states.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Backdrop"
      ],
      "props": [
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Accessible title or label for modal and dialog content.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Layered overlay content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Backdrop } from \"@crossroads/ui\";\n\n<Backdrop />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Portal",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-backdrop--docs"
    },
    {
      "name": "Modal",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Lower-level modal primitive for custom dialog compositions.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Modal"
      ],
      "props": [
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Accessible title or label for modal and dialog content.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Layered overlay content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Modal } from \"@crossroads/ui\";\n\n<Modal />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Portal",
        "Backdrop"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Dialog",
        "Drawer",
        "Backdrop"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-modal--docs"
    },
    {
      "name": "Popper",
      "group": "Overlays",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Positioned floating primitive for anchored UI.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Popper"
      ],
      "props": [
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Accessible title or label for modal and dialog content.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Layered overlay content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Popper } from \"@crossroads/ui\";\n\n<Popper />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Portal"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Popover",
        "Tooltip"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-popper--docs"
    },
    {
      "name": "Portal",
      "group": "Overlays",
      "status": "ready",
      "kind": "provider",
      "dependencyMode": "hidden",
      "visibility": {
        "dashboard": false,
        "docs": false,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "DOM escape hatch for layered rendering.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Portal"
      ],
      "props": [
        {
          "description": "Controls whether the overlay is visible.",
          "name": "open",
          "required": true,
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the overlay requests dismissal.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Accessible title or label for modal and dialog content.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Layered overlay content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Portal } from \"@crossroads/ui\";\n\n<Portal />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use overlays only when content must float above the current page context.",
        "Modal overlays must manage focus, escape dismissal, and accessible naming.",
        "Use the z-index token model instead of local z-index values."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/overlays/overlay.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-overlays-portal--docs"
    },
    {
      "name": "Alert",
      "group": "Feedback",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Inline feedback message for success, warning, info, and error states.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Alert"
      ],
      "props": [
        {
          "defaultValue": "info",
          "description": "Semantic tone for visual status and accessible meaning.",
          "name": "tone",
          "type": "\"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Primary message title or visible label.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supporting message content.",
          "name": "message",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Alert } from \"@crossroads/ui\";\n\n<Alert />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use Alert for persistent inline feedback and Snackbar for temporary non-blocking feedback.",
        "Use semantic tone for status, not decoration.",
        "Ensure live-region and accessible names describe the user-visible status."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Icon",
        "Box",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/feedback/Alert/Alert.css"
      ],
      "iconDependencies": [
        "field-error",
        "info",
        "ready"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-feedback-alert--docs"
    },
    {
      "name": "Progress",
      "group": "Feedback",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Linear and circular progress indicators for determinate and indeterminate work.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Progress"
      ],
      "props": [
        {
          "description": "Accessible progress label.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Current progress value from 0 to 100.",
          "name": "value",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Visible progress label.",
          "name": "label",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Progress shape.",
          "name": "shape",
          "type": "\"linear\" | \"circular\"",
          "importance": "normal"
        },
        {
          "description": "Places percentage in the center for circular progress.",
          "name": "centerPercentage",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "info",
          "description": "Semantic tone for visual status and accessible meaning.",
          "name": "tone",
          "type": "\"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Primary message title or visible label.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supporting message content.",
          "name": "message",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Progress } from \"@crossroads/ui\";\n\n<Progress />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use Alert for persistent inline feedback and Snackbar for temporary non-blocking feedback.",
        "Use semantic tone for status, not decoration.",
        "Ensure live-region and accessible names describe the user-visible status."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/feedback/Progress/Progress.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-feedback-progress--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 61,
        "useCases": [
          "File upload progress",
          "Multi-step completion",
          "Indeterminate loading"
        ],
        "aiPromptExamples": [
          "Show upload progress as a percentage",
          "Add a loading indicator while the report generates"
        ]
      }
    },
    {
      "name": "Skeleton",
      "group": "Feedback",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Placeholder loading state for content that is not ready yet.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Skeleton"
      ],
      "props": [
        {
          "defaultValue": "info",
          "description": "Semantic tone for visual status and accessible meaning.",
          "name": "tone",
          "type": "\"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Primary message title or visible label.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supporting message content.",
          "name": "message",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { Skeleton } from \"@crossroads/ui\";\n\n<Skeleton />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use Alert for persistent inline feedback and Snackbar for temporary non-blocking feedback.",
        "Use semantic tone for status, not decoration.",
        "Ensure live-region and accessible names describe the user-visible status."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/feedback/Skeleton/Skeleton.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-feedback-skeleton--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 62,
        "useCases": [
          "Placeholder while data loads",
          "Perceived performance on lists",
          "Card loading state"
        ],
        "aiPromptExamples": [
          "Show placeholder rows while the table data loads",
          "Add a loading skeleton for the profile card"
        ]
      }
    },
    {
      "name": "LazyContent",
      "group": "Feedback",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Composition wrapper that swaps content chunks with Skeleton while loading.",
      "importPath": "@crossroads/ui",
      "exports": [
        "LazyContent"
      ],
      "props": [
        {
          "description": "Content to render after loading is complete.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Whether to render skeleton placeholders instead of children.",
          "name": "isLoading",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Number of skeleton rows or blocks to render.",
          "name": "skeletonCount",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Accessible loading label announced by assistive technology.",
          "name": "skeletonLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Skeleton placeholder shape.",
          "name": "skeletonShape",
          "type": "\"block\" | \"text\"",
          "importance": "normal"
        },
        {
          "defaultValue": "info",
          "description": "Semantic tone for visual status and accessible meaning.",
          "name": "tone",
          "type": "\"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Primary message title or visible label.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supporting message content.",
          "name": "message",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Skeleton-backed content chunk",
          "code": "import { Card, LazyContent } from \"@crossroads/ui\";\n\n<LazyContent isLoading skeletonCount={3} skeletonLabel=\"Loading account summary\">\n  <Card>Account summary loaded.</Card>\n</LazyContent>"
        }
      ],
      "usageRules": [
        "Use Alert for persistent inline feedback and Snackbar for temporary non-blocking feedback.",
        "Use semantic tone for status, not decoration.",
        "Ensure live-region and accessible names describe the user-visible status.",
        "Use LazyContent around chunk-level content that can be temporarily represented by Skeleton.",
        "Keep skeletonLabel specific enough for assistive technology, especially when loading icon packs, panels, or async sections."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Box",
        "Skeleton"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/feedback/LazyContent/LazyContent.css",
        "src/components/feedback/Skeleton/Skeleton.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-feedback-lazycontent--docs"
    },
    {
      "name": "Snackbar",
      "group": "Feedback",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Temporary non-blocking notification with optional action.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Snackbar"
      ],
      "props": [
        {
          "description": "Snackbar visual style.",
          "name": "variant",
          "type": "\"alert\" | \"toast\"",
          "importance": "normal"
        },
        {
          "description": "Snackbar tone when variant is alert.",
          "name": "tone",
          "type": "\"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "high"
        },
        {
          "description": "Primary snackbar title.",
          "name": "title",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional supporting message.",
          "name": "message",
          "type": "ReactNode",
          "importance": "high"
        },
        {
          "description": "Optional action button label.",
          "name": "actionLabel",
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Edge the snackbar animates from.",
          "name": "enterFrom",
          "type": "\"top\" | \"right\" | \"bottom\" | \"left\"",
          "importance": "normal"
        },
        {
          "description": "Optional accessible label for a dismiss button.",
          "name": "closeLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when the dismiss button is activated.",
          "name": "onClose",
          "type": "() => void",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Temporary success feedback",
          "code": "import { Snackbar } from \"@crossroads/ui\";\n\n<Snackbar\n  title=\"Saved\"\n  message=\"Settings were saved.\"\n  actionLabel=\"Undo\"\n  enterFrom=\"bottom\"\n/>"
        }
      ],
      "usageRules": [
        "Use Alert for persistent inline feedback and Snackbar for temporary non-blocking feedback.",
        "Use semantic tone for status, not decoration.",
        "Ensure live-region and accessible names describe the user-visible status.",
        "Use Snackbar as a declarative styled leaf; prefer Toast.Provider for app-wide queued notifications.",
        "Keep snackbar actions short and visually distinct from body text."
      ],
      "accessibilityNotes": [
        "Use a live region for transient status and keep actions short enough for quick recovery."
      ],
      "componentDependencies": [
        "Button",
        "IconButton",
        "Icon",
        "Box",
        "Typography"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/feedback/Snackbar/Snackbar.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css"
      ],
      "iconDependencies": [
        "field-error",
        "info",
        "ready"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "z-index"
      ],
      "relatedComponents": [
        "Alert"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-feedback-snackbar--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 60,
        "useCases": [
          "Confirm an action succeeded",
          "Non-blocking error notice",
          "Undo affordance"
        ],
        "aiPromptExamples": [
          "Show a confirmation message after saving",
          "Tell the user the upload failed and let them retry"
        ]
      }
    },
    {
      "name": "Toast",
      "group": "Feedback",
      "status": "ready",
      "kind": "provider",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "App-wide queued notifications with imperative show, update, dismiss, and promise flows.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Toast",
        "ToastProvider",
        "useToast"
      ],
      "props": [
        {
          "description": "Application subtree that can enqueue notifications.",
          "name": "children",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible name for each toast region.",
          "name": "regionLabel",
          "required": true,
          "type": "string",
          "importance": "high"
        },
        {
          "description": "Consumer-owned assistive labels.",
          "name": "labels",
          "required": true,
          "type": "{ close: string }",
          "importance": "high"
        },
        {
          "defaultValue": "\"bottom-end\"",
          "description": "Default logical viewport placement.",
          "name": "placement",
          "type": "ToastPlacement",
          "importance": "high"
        },
        {
          "defaultValue": "3",
          "description": "Maximum number of visible FIFO notifications.",
          "name": "maxVisible",
          "type": "number",
          "importance": "high"
        },
        {
          "defaultValue": "5000",
          "description": "Default auto-dismiss duration; null keeps notifications persistent.",
          "name": "duration",
          "type": "number | null",
          "importance": "normal"
        },
        {
          "description": "Controlled notification queue.",
          "name": "toasts",
          "type": "ToastItem[]",
          "importance": "normal"
        },
        {
          "defaultValue": "[]",
          "description": "Initial uncontrolled notification queue.",
          "name": "defaultToasts",
          "type": "ToastItem[]",
          "importance": "normal"
        },
        {
          "description": "Called whenever the queue changes.",
          "name": "onToastsChange",
          "type": "(toasts: ToastItem[]) => void",
          "importance": "normal"
        }
      ],
      "examples": [
        {
          "title": "Queued application feedback",
          "code": "import { Button, Toast, useToast } from \"@crossroads/ui\";\n\nfunction SaveButton() {\n  const toast = useToast();\n  return <Button label=\"Save\" onClick={() => toast.show({ title: \"Saved\", description: \"Settings were saved.\", tone: \"success\" })} />;\n}\n\n<Toast.Provider labels={{ close: \"Dismiss notification\" }} regionLabel=\"Notifications\">\n  <SaveButton />\n</Toast.Provider>"
        }
      ],
      "usageRules": [
        "Use Alert for persistent inline feedback and Snackbar for temporary non-blocking feedback.",
        "Use semantic tone for status, not decoration.",
        "Ensure live-region and accessible names describe the user-visible status.",
        "Mount one Toast.Provider near the application root and call useToast only within its subtree.",
        "Supply localized region and close labels; use null duration for notifications that must remain available."
      ],
      "accessibilityNotes": [
        "Notifications use polite announcements except danger messages, which use assertive announcements.",
        "Radix pauses auto-dismiss while the region is hovered, focused, or the window is blurred; showing a toast never steals focus."
      ],
      "componentDependencies": [
        "Snackbar",
        "Portal",
        "IconButton"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/feedback/Toast/Toast.css",
        "src/components/feedback/Snackbar/Snackbar.css",
        "src/components/foundations/buttons/ButtonBase/ButtonBase.css"
      ],
      "iconDependencies": [
        "close",
        "field-error",
        "info",
        "ready"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider",
        "PortalRoot"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "react-dom",
        "portal-root",
        "focus-management",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "z-index"
      ],
      "relatedComponents": [
        "Snackbar",
        "Alert",
        "Dialog"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-feedback-toast--docs",
      "showcase": {
        "clientSuitability": "flagship",
        "priority": 65,
        "useCases": [
          "Queue application notifications",
          "Track async work",
          "Offer a non-blocking recovery action"
        ],
        "aiPromptExamples": [
          "Show a localized success notification after saving",
          "Track an upload promise and update one notification when it completes"
        ]
      }
    },
    {
      "name": "Shape",
      "group": "Surfaces",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Tokenized visual primitive: tone, emphasis, radius, border, elevation, padding, and fixed size.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Shape"
      ],
      "props": [
        {
          "description": "Semantic element to render.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Neutral plane or semantic role.",
          "name": "tone",
          "type": "\"surface\" | \"background\" | \"overlay\" | \"glass\" | \"primary\" | \"secondary\" | \"tertiary\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
          "importance": "normal"
        },
        {
          "description": "Tonal or filled treatment; role tones only.",
          "name": "emphasis",
          "type": "\"soft\" | \"solid\"",
          "importance": "normal"
        },
        {
          "description": "Border weight.",
          "name": "border",
          "type": "\"none\" | \"normal\" | \"emphasis\"",
          "importance": "normal"
        },
        {
          "description": "Border line style.",
          "name": "borderStyle",
          "type": "\"solid\" | \"dashed\" | \"dotted\"",
          "importance": "normal"
        },
        {
          "description": "Depth, independent of tone.",
          "name": "elevation",
          "type": "0 | 1 | 2 | 3 | 4",
          "importance": "normal"
        },
        {
          "description": "Step on the shared radius scale; full for pills and circles.",
          "name": "radius",
          "type": "\"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"full\"",
          "importance": "normal"
        },
        {
          "description": "Inner spacing from the space scale.",
          "name": "padding",
          "type": "\"none\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"12\"",
          "importance": "normal"
        },
        {
          "description": "Fixed square size; omit to size to content.",
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"",
          "importance": "normal"
        },
        {
          "description": "Surface content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Overflow behavior for scrollable planes.",
          "name": "overflow",
          "type": "\"visible\" | \"hidden\" | \"auto\" | \"scroll\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Filled medallion",
          "code": "import { Icon, Shape } from \"@crossroads/ui\";\n\n<Shape emphasis=\"solid\" radius=\"full\" size=\"lg\" tone=\"primary\">\n  <Icon aria-hidden name=\"check\" size=\"md\" />\n</Shape>"
        }
      ],
      "usageRules": [
        "Use Surface for background, border, radius, elevation, glass, and overflow treatment.",
        "Avoid transparent surfaces except for inspection or temporary toast-like UI.",
        "Use elevation tokens instead of ad-hoc shadows."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/surfaces/Shape/Shape.css",
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-surfaces-shape--docs"
    },
    {
      "name": "Surface",
      "group": "Surfaces",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Paper preset of Shape: a bordered, padded, medium-radius content plane.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Surface"
      ],
      "props": [
        {
          "description": "Semantic element to render.",
          "name": "as",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Neutral plane role. Use elevation separately for depth.",
          "name": "tone",
          "type": "\"background\" | \"surface\" | \"overlay\" | \"glass\"",
          "importance": "normal"
        },
        {
          "description": "Inner spacing from the space scale.",
          "name": "padding",
          "type": "\"none\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"12\"",
          "importance": "normal"
        },
        {
          "description": "Border weight.",
          "name": "border",
          "type": "\"none\" | \"normal\" | \"emphasis\"",
          "importance": "normal"
        },
        {
          "description": "Border line style.",
          "name": "borderStyle",
          "type": "\"solid\" | \"dashed\" | \"dotted\"",
          "importance": "normal"
        },
        {
          "description": "Surface elevation level.",
          "name": "elevation",
          "type": "0 | 1 | 2 | 3 | 4",
          "importance": "normal"
        },
        {
          "description": "Step on the shared radius scale; full for pills and circles.",
          "name": "radius",
          "type": "\"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"full\"",
          "importance": "normal"
        },
        {
          "description": "Surface content.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Overflow behavior for scrollable planes.",
          "name": "overflow",
          "type": "\"visible\" | \"hidden\" | \"auto\" | \"scroll\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Elevated section",
          "code": "import { Surface } from \"@crossroads/ui\";\n\n<Surface as=\"section\" elevation={2} radius=\"md\" tone=\"surface\">\n  Content\n</Surface>"
        }
      ],
      "usageRules": [
        "Use Surface for background, border, radius, elevation, glass, and overflow treatment.",
        "Avoid transparent surfaces except for inspection or temporary toast-like UI.",
        "Use elevation tokens instead of ad-hoc shadows.",
        "Use Surface before inventing local wrapper styles for panels, cards, and docs examples."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Shape"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/surfaces/Shape/Shape.css",
        "src/components/layout/layout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Card",
        "Box"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-surfaces-surface--docs"
    },
    {
      "name": "Panel",
      "group": "Surfaces",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": true,
        "storybook": true
      },
      "description": "Semantic in-page section with title, description, body, actions, footer, collapse, and loading composition.",
      "importPath": "@crossroads/ui",
      "exports": [
        "Panel",
        "PanelRoot",
        "PanelHeader",
        "PanelTitle",
        "PanelDescription",
        "PanelBody",
        "PanelFooter",
        "PanelSeparator"
      ],
      "props": [
        {
          "defaultValue": "section",
          "description": "Semantic root element; div opts out of a region landmark in dense collections.",
          "name": "as",
          "owner": "Root",
          "type": "ElementType",
          "importance": "normal"
        },
        {
          "description": "Panel parts composing one in-page section; include exactly one Panel.Title.",
          "name": "children",
          "owner": "Root",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Enables the discrete disclosure trigger rendered by Panel.Header.",
          "name": "collapsible",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Initial disclosure state for uncontrolled usage.",
          "name": "defaultOpen",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Opts Root into an aria-describedby relationship with Panel.Description.",
          "name": "describe",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "0",
          "description": "Surface elevation; plain panels always render at zero.",
          "name": "elevation",
          "owner": "Root",
          "type": "0 | 1 | 2 | 3 | 4",
          "importance": "normal"
        },
        {
          "description": "Explicit title id when another element labels the Panel.",
          "name": "labelledBy",
          "owner": "Root",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled disclosure state.",
          "name": "open",
          "owner": "Root",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the disclosure trigger requests a state change.",
          "name": "onOpenChange",
          "owner": "Root",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "defaultValue": "lg",
          "description": "Radius from the shared layout scale.",
          "name": "radius",
          "owner": "Root",
          "type": "\"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"full\"",
          "importance": "normal"
        },
        {
          "defaultValue": "adaptive",
          "description": "Narrow-container spacing and wrapping policy.",
          "name": "responsiveDisplay",
          "owner": "Root",
          "type": "PanelResponsiveDisplay",
          "importance": "normal"
        },
        {
          "defaultValue": "outlined",
          "description": "Visual treatment independent of section semantics.",
          "name": "variant",
          "owner": "Root",
          "type": "PanelVariant",
          "importance": "normal"
        },
        {
          "description": "Root overflow behavior.",
          "name": "overflow",
          "owner": "Root",
          "type": "\"visible\" | \"hidden\" | \"clip\" | \"auto\" | \"scroll\"",
          "importance": "normal"
        },
        {
          "description": "Root inline-axis overflow behavior.",
          "name": "overflowX",
          "owner": "Root",
          "type": "\"visible\" | \"hidden\" | \"clip\" | \"auto\" | \"scroll\"",
          "importance": "normal"
        },
        {
          "description": "Root block-axis overflow behavior.",
          "name": "overflowY",
          "owner": "Root",
          "type": "\"visible\" | \"hidden\" | \"clip\" | \"auto\" | \"scroll\"",
          "importance": "normal"
        },
        {
          "description": "Panel.Title and optional Panel.Description content.",
          "name": "children",
          "owner": "Header",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "End-aligned controls whose product logic remains consumer-owned.",
          "name": "actions",
          "owner": "Header",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Decorative leading content, normally Icon.",
          "name": "icon",
          "owner": "Header",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Consumer-authored accessible name required when Root is collapsible.",
          "name": "toggleLabel",
          "owner": "Header",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Localized panel heading.",
          "name": "children",
          "owner": "Title",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "3",
          "description": "Semantic level in the consuming page outline; visual size remains stable.",
          "name": "headingLevel",
          "owner": "Title",
          "type": "2 | 3 | 4 | 5 | 6",
          "importance": "normal"
        },
        {
          "description": "Explicit title id paired with Root.labelledBy.",
          "name": "id",
          "owner": "Title",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Localized supporting description.",
          "name": "children",
          "owner": "Description",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Explicit id for a consumer-owned aria-describedby relationship.",
          "name": "id",
          "owner": "Description",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Main in-page section content.",
          "name": "children",
          "owner": "Body",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Marks Body busy and makes its content inert.",
          "name": "loading",
          "owner": "Body",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Consumer-authored status text required while loading.",
          "name": "loadingLabel",
          "owner": "Body",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Footer content, commonly ActionBar or ButtonGroup.",
          "name": "children",
          "owner": "Footer",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Collapsible account section",
          "code": "import { Button, Icon, Panel } from \"@crossroads/ui\";\n\n<Panel.Root collapsible describe>\n  <Panel.Header\n    actions={<Button label=\"Edit\" variant=\"text\" />}\n    icon={<Icon name=\"user\" />}\n    toggleLabel=\"Toggle account details\"\n  >\n    <Panel.Title headingLevel={2}>Account details</Panel.Title>\n    <Panel.Description>Manage profile and workspace preferences.</Panel.Description>\n  </Panel.Header>\n  <Panel.Separator />\n  <Panel.Body>Account settings</Panel.Body>\n  <Panel.Separator />\n  <Panel.Footer>\n    <Button label=\"Save changes\" />\n  </Panel.Footer>\n</Panel.Root>"
        }
      ],
      "usageRules": [
        "Use Surface for background, border, radius, elevation, glass, and overflow treatment.",
        "Avoid transparent surfaces except for inspection or temporary toast-like UI.",
        "Use elevation tokens instead of ad-hoc shadows.",
        "Use Panel for a static in-page section, Card for a repeated teaser object, and Surface for a bare visual plane.",
        "Include exactly one Panel.Title and choose headingLevel from the consuming page outline; the visual title size does not change with that level.",
        "Use as=div when a dense dashboard would otherwise create too many region landmarks.",
        "Keep header actions independent; only the discrete disclosure button changes open state.",
        "Use responsiveDisplay=fixed only when the consumer intentionally owns narrow-container spacing and action wrapping."
      ],
      "accessibilityNotes": [
        "Root is a section labelled by exactly one Panel.Title by default; render as div in dense collections where many region landmarks would add noise.",
        "The collapsible variant uses one discrete native button with aria-expanded and aria-controls; header actions remain independent controls.",
        "Closing controlled state while focus is in Body returns focus to the disclosure trigger.",
        "Loading content is marked aria-busy and inert while Spinner announces the required consumer-authored loadingLabel.",
        "The collapsible body deliberately has no region role because repeating the root title on a nested region creates duplicate landmarks.",
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [
        "Surface",
        "Divider",
        "Icon",
        "Spinner",
        "Transitions"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/surfaces/Panel/Panel.css"
      ],
      "iconDependencies": [
        "chevron-right"
      ],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root",
        "IconProvider"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion",
        "keyboard-navigation"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon",
        "density"
      ],
      "relatedComponents": [
        "Card",
        "Surface",
        "Accordion",
        "ActionBar",
        "Toolbar",
        "PageShell"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": true,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-surfaces-panel--docs",
      "showcase": {
        "aiPromptExamples": [
          "Group account settings into a semantic panel with edit and save actions",
          "Make this dashboard section collapsible and show an accessible loading state"
        ],
        "clientSuitability": "flagship",
        "priority": 34,
        "useCases": [
          "Settings section",
          "Dashboard content region",
          "Form section with actions"
        ]
      }
    },
    {
      "name": "Toolbar",
      "group": "Patterns",
      "status": "planned",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Generic command region with roving focus and responsive overflow.",
      "importPath": null,
      "exports": [
        "Toolbar"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// Toolbar is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "ActionBar",
      "group": "Patterns",
      "status": "planned",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Responsive primary/secondary action region with normal Tab order.",
      "importPath": null,
      "exports": [
        "ActionBar"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// ActionBar is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "AsyncSection",
      "group": "Patterns",
      "status": "in-progress",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Four-state async region with busy semantics and one live announcement surface.",
      "importPath": "@crossroads/ui",
      "exports": [
        "AsyncSection",
        "AsyncSectionEmpty",
        "AsyncSectionError",
        "AsyncSectionLoading",
        "AsyncSectionReady",
        "AsyncSectionRoot"
      ],
      "props": [
        {
          "description": "Current async state.",
          "name": "state",
          "required": true,
          "type": "\"loading\" | \"error\" | \"empty\" | \"ready\"",
          "importance": "normal"
        },
        {
          "description": "Polite live-region content for the current state.",
          "name": "announcement",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether to render the polite announcement region.",
          "name": "announce",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Minimum time before loading content is shown.",
          "name": "minLoadingMs",
          "type": "number",
          "importance": "normal"
        },
        {
          "description": "Accessible label for the progress indicator.",
          "name": "loadingLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Error-state message.",
          "name": "errorMessage",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Error-state title.",
          "name": "errorTitle",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Empty-state description.",
          "name": "emptyDescription",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Empty-state title.",
          "name": "emptyTitle",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Retry callback for the error presentation.",
          "name": "onRetry",
          "type": "() => void",
          "importance": "normal"
        },
        {
          "description": "Label for the built-in retry button; required for onRetry to render it.",
          "name": "retryLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Content for the active state slot.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Async region states",
          "code": "import { AsyncSection } from \"@crossroads/ui\";\n\n<AsyncSection.Root\n  errorMessage=\"The request did not complete.\"\n  loadingLabel=\"Loading results\"\n  retryLabel=\"Try again\"\n  state=\"error\"\n/>"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them.",
        "Render exactly one state at a time and provide a specific loadingLabel when loading.",
        "Keep the ready slot shape aligned with the loading skeleton; the pattern owns aria-busy and the polite announcement region.",
        "Responsive policy is none: state slots inherit the container's own behavior rather than adapting themselves.",
        "Provide retryLabel with onRetry so the built-in error presentation renders an accessible retry button."
      ],
      "accessibilityNotes": [
        "Root uses aria-busy=true only while loading UI is visible. Ready content stays mounted but inert during that window.",
        "Announcements are polite, consumer-authored, and silent on the initial ready mount unless a later state change requests them."
      ],
      "componentDependencies": [
        "Skeleton",
        "Progress",
        "Alert",
        "EmptyState",
        "Button",
        "VisuallyHidden"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/patterns/AsyncSection/AsyncSection.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Skeleton",
        "Alert",
        "EmptyState",
        "FormLayout"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      },
      "docsLink": "/?path=/docs/patterns-asyncsection--docs"
    },
    {
      "name": "PageHeader",
      "group": "Patterns",
      "status": "in-progress",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Page title, supporting content, navigation, and action composition.",
      "importPath": "@crossroads/ui",
      "exports": [
        "PageHeader",
        "PageHeaderActions",
        "PageHeaderBreadcrumbs",
        "PageHeaderDescription",
        "PageHeaderRoot",
        "PageHeaderTabs",
        "PageHeaderTitle"
      ],
      "props": [
        {
          "description": "Breadcrumbs, title, description, actions, and tabs slots.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "adaptive",
          "description": "Structural reflow policy: \"adaptive\" stacks the actions under the title block in narrow containers; \"none\" keeps one row at every width.",
          "name": "responsiveLayout",
          "type": "\"adaptive\" | \"none\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Page chrome",
          "code": "import { IconButton, PageHeader } from \"@crossroads/ui\";\n\n<PageHeader.Root>\n  <PageHeader.Title>Workspace</PageHeader.Title>\n  <PageHeader.Description>Manage the workspace.</PageHeader.Description>\n  <PageHeader.Actions aria-label=\"Page actions\">\n    <IconButton aria-label=\"Share\" iconName=\"share\" variant=\"outlined\" />\n    <IconButton aria-label=\"Save\" iconName=\"save\" />\n  </PageHeader.Actions>\n</PageHeader.Root>"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them.",
        "Use exactly one PageHeader.Title per header; it renders the page h1.",
        "Keep secondary actions in the Actions slot; responsiveLayout \"adaptive\" stacks the actions under the title block in containers narrower than 30rem."
      ],
      "accessibilityNotes": [
        "Title is the page h1. Use exactly one Title per Root.",
        "Actions is a named group; breadcrumbs keep the composed Breadcrumbs accessible name."
      ],
      "componentDependencies": [
        "Breadcrumbs",
        "Typography",
        "ButtonGroup"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/patterns/PageHeader/PageHeader.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Breadcrumbs",
        "PageShell",
        "Toolbar",
        "ActionBar"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      },
      "docsLink": "/?path=/docs/patterns-pageheader--docs"
    },
    {
      "name": "FormLayout",
      "group": "Patterns",
      "status": "in-progress",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Sectioned form scaffolding with fieldset semantics and error summary support.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FormLayout",
        "FormLayoutErrorSummary",
        "FormLayoutRoot",
        "FormLayoutRow",
        "FormLayoutSection"
      ],
      "props": [
        {
          "description": "Section, Row, and ErrorSummary slots.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "adaptive",
          "description": "Structural reflow policy: \"adaptive\" lets a Row render two columns in wide containers; \"none\" keeps one column at every width.",
          "name": "responsiveLayout",
          "type": "\"adaptive\" | \"none\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Sectioned form",
          "code": "import { FormLayout, TextField } from \"@crossroads/ui\";\n\n<FormLayout.Root>\n  <FormLayout.Section description=\"Shown to other people.\" title=\"Profile\">\n    <FormLayout.Row>\n      <TextField label=\"First name\" />\n      <TextField label=\"Last name\" />\n    </FormLayout.Row>\n  </FormLayout.Section>\n</FormLayout.Root>"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them.",
        "Use Section for related controls so every section has real fieldset semantics.",
        "Give ErrorSummary an actionLabel so it renders the button that moves focus to the first aria-invalid field; onFocusFirstInvalid is the notification, not the mechanism.",
        "Use Row for paired fields; responsiveLayout \"adaptive\" renders it as two columns only when the form's own container is 48rem or wider."
      ],
      "accessibilityNotes": [
        "Every Section is a fieldset whose legend is the title, styled only by LabelText.",
        "ErrorSummary is an alert. Its action focuses the first invalid control in this form, skipping hidden and disabled fields."
      ],
      "componentDependencies": [
        "Fieldset",
        "Stack",
        "Divider",
        "Alert",
        "Button"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/patterns/FormLayout/FormLayout.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Fieldset",
        "FormActions",
        "Field"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      },
      "docsLink": "/?path=/docs/patterns-formlayout--docs"
    },
    {
      "name": "FormActions",
      "group": "Patterns",
      "status": "in-progress",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Form action slots with tokenized ordering, busy, and sticky behavior.",
      "importPath": "@crossroads/ui",
      "exports": [
        "FormActions",
        "FormActionsPrimary",
        "FormActionsRoot",
        "FormActionsSecondary",
        "FormActionsTertiary"
      ],
      "props": [
        {
          "description": "Accessible name for the action group.",
          "name": "aria-label",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "adaptive",
          "description": "Structural reflow policy: \"adaptive\" stacks the actions full-width in narrow containers; \"none\" keeps one row at every width.",
          "name": "responsiveLayout",
          "type": "\"adaptive\" | \"none\"",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Disables sibling actions while the primary action is busy.",
          "name": "busy",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Keeps the action region visible at the scrolling edge.",
          "name": "sticky",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Primary, secondary, and tertiary action slots.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Form footer",
          "code": "import { FormActions } from \"@crossroads/ui\";\n\n<FormActions.Root aria-label=\"Form actions\">\n  <FormActions.Primary>Save</FormActions.Primary>\n  <FormActions.Secondary>Cancel</FormActions.Secondary>\n</FormActions.Root>"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them.",
        "Place the submit action in Primary and let busy disable sibling actions to prevent double submission.",
        "Use sticky only when the action region remains outside any nested scrolling container."
      ],
      "accessibilityNotes": [
        "Root is a named group of native buttons. Primary defaults to type=submit; Secondary and Tertiary default to type=button.",
        "Busy disables every slot and exposes busyLabel on the primary action. DOM order is tertiary, secondary, primary so Tab order matches the visual inline-end primary."
      ],
      "componentDependencies": [
        "ButtonGroup",
        "Button"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/patterns/FormActions/FormActions.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "FormLayout",
        "Button",
        "ActionBar"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      },
      "docsLink": "/?path=/docs/patterns-formactions--docs"
    },
    {
      "name": "ConfirmDialog",
      "group": "Patterns",
      "status": "in-progress",
      "kind": "pattern",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": false,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Generic neutral or destructive confirmation dialog with optional phrase confirmation.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ConfirmDialog",
        "ConfirmDialogConsequence",
        "ConfirmDialogRoot"
      ],
      "props": [
        {
          "description": "Dialog heading and accessible name.",
          "name": "title",
          "required": true,
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Accessible close label and cancel button label.",
          "name": "closeLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Confirm button label.",
          "name": "confirmLabel",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "neutral",
          "description": "Semantic confirmation tone.",
          "name": "tone",
          "type": "\"neutral\" | \"destructive\"",
          "importance": "normal"
        },
        {
          "description": "Cancel button label; falls back to closeLabel.",
          "name": "cancelLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Consequence and slot content rendered above the actions.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Supporting description announced with the dialog.",
          "name": "description",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "description": "Phrase required before confirmation is enabled.",
          "name": "phrase",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled phrase-input value; uncontrolled when omitted.",
          "name": "value",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Called when the phrase-input value changes.",
          "name": "onValueChange",
          "type": "(value: string) => void",
          "importance": "normal"
        },
        {
          "description": "Whether confirmation is in progress.",
          "name": "isBusy",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Text direction for the dialog.",
          "name": "dir",
          "type": "\"ltr\" | \"rtl\"",
          "importance": "normal"
        },
        {
          "description": "Language of the dialog content.",
          "name": "lang",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Controlled open state.",
          "name": "open",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Initial open state.",
          "name": "defaultOpen",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "description": "Called when the dialog open state changes.",
          "name": "onOpenChange",
          "type": "(open: boolean) => void",
          "importance": "normal"
        },
        {
          "description": "Called on any dismissal without confirming: the cancel button, the close button, escape, or a backdrop click.",
          "name": "onCancel",
          "type": "() => void",
          "importance": "normal"
        },
        {
          "description": "Called when confirmation is accepted. Without it the confirm button stays disabled, since it would have nothing to do.",
          "name": "onConfirm",
          "type": "() => void",
          "importance": "normal"
        },
        {
          "description": "Optional accessible phrase label.",
          "name": "typeToConfirmLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Helper text describing what to type and why confirmation is gated.",
          "name": "typeToConfirmDescription",
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "stack",
          "description": "Structural reflow policy for the action row: \"stack\" stacks the buttons full-width once the dialog surface is narrow; \"inline\" keeps one row at every width.",
          "name": "responsiveDisplay",
          "type": "\"stack\" | \"inline\"",
          "importance": "normal"
        },
        {
          "description": "Busy-state confirmation label.",
          "name": "busyLabel",
          "type": "string",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "title": "Destructive confirmation",
          "code": "import { ConfirmDialog } from \"@crossroads/ui\";\n\n<ConfirmDialog.Root\n  closeLabel=\"Cancel\"\n  confirmLabel=\"Delete\"\n  defaultOpen\n  title=\"Delete report?\"\n  tone=\"destructive\"\n>\n  <ConfirmDialog.Consequence>This cannot be undone.</ConfirmDialog.Consequence>\n</ConfirmDialog.Root>"
        }
      ],
      "usageRules": [
        "Use patterns for repeated interface jobs that would otherwise require several components.",
        "Keep product data, routing, persistence, analytics, and workflow rules outside patterns.",
        "Components may not import patterns; templates may compose them.",
        "Use destructive tone only for irreversible actions and provide a cancel label that remains the initial safe choice.",
        "Use phrase confirmation for high-risk actions; the phrase must be localized by the consumer.",
        "Pair phrase with typeToConfirmLabel: without it the field falls back to labelling itself with the phrase, which names what to type but not that typing is required. The pattern cannot supply instructional copy itself.",
        "Sizing, focus, and layering are governed by the composed Dialog. responsiveDisplay reflows only the action row, and because the dialog is portalled it tracks the modal surface — which follows the viewport, not any container the consumer wraps the trigger in."
      ],
      "accessibilityNotes": [
        "Cancel receives focus after open. Confirm stays disabled until an optional phrase matches and while busy.",
        "Escape and backdrop click do not close while busy. Enter in the phrase field does not confirm during IME composition."
      ],
      "componentDependencies": [
        "Dialog",
        "Button",
        "Stack",
        "Typography",
        "TextField"
      ],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/patterns/ConfirmDialog/ConfirmDialog.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Dialog",
        "FormActions"
      ],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      },
      "docsLink": "/?path=/docs/patterns-confirmdialog--docs",
      "showcase": {
        "clientSuitability": "supporting",
        "priority": 52,
        "useCases": [
          "Confirm a destructive action",
          "Require a phrase before deletion",
          "Explain consequences before an irreversible action"
        ],
        "aiPromptExamples": [
          "Ask the user to confirm before deleting a project",
          "Require the user to type DELETE before removing an account"
        ]
      }
    },
    {
      "name": "ClickAwayListener",
      "group": "Utils",
      "status": "ready",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "selectable",
        "sandbox": false,
        "storybook": true
      },
      "description": "Interaction utility for dismissing UI on outside pointer events.",
      "importPath": "@crossroads/ui",
      "exports": [
        "ClickAwayListener"
      ],
      "props": [
        {
          "description": "Content animated by the transition primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether the transition is entered or exited.",
          "name": "in",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion duration token.",
          "name": "duration",
          "type": "\"shorter\" | \"short\" | \"fast\" | \"standard\" | \"complex\"",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion easing token.",
          "name": "easing",
          "type": "\"standard\" | \"entering\" | \"leaving\" | \"sharp\" | \"linear\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "import { ClickAwayListener } from \"@crossroads/ui\";\n\n<ClickAwayListener />",
          "title": "Basic import"
        }
      ],
      "usageRules": [
        "Use utility primitives to standardize behavior across components.",
        "Respect reduced-motion behavior when animation is decorative.",
        "Do not expose utility primitives as product-specific patterns."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Transitions/Transitions.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [
        "Modal",
        "Popover"
      ],
      "storyRequirements": {
        "interaction": true,
        "keyboard": false,
        "localizedRtl": true,
        "playground": true
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      },
      "docsLink": "/?path=/docs/components-foundations-utilities-clickawaylistener--docs"
    },
    {
      "name": "CssBaseline",
      "group": "Utils",
      "status": "planned",
      "kind": "utility",
      "dependencyMode": "hidden",
      "visibility": {
        "dashboard": false,
        "docs": false,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Global baseline and normalization entry point.",
      "importPath": null,
      "exports": [
        "CssBaseline"
      ],
      "props": [
        {
          "description": "Content animated by the transition primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether the transition is entered or exited.",
          "name": "in",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion duration token.",
          "name": "duration",
          "type": "\"shorter\" | \"short\" | \"fast\" | \"standard\" | \"complex\"",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion easing token.",
          "name": "easing",
          "type": "\"standard\" | \"entering\" | \"leaving\" | \"sharp\" | \"linear\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// CssBaseline is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use utility primitives to standardize behavior across components.",
        "Respect reduced-motion behavior when animation is decorative.",
        "Do not expose utility primitives as product-specific patterns."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "InitColorSchemeScript",
      "group": "Utils",
      "status": "planned",
      "kind": "utility",
      "dependencyMode": "hidden",
      "visibility": {
        "dashboard": false,
        "docs": false,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Bootstrap script for first-paint color scheme selection.",
      "importPath": null,
      "exports": [
        "InitColorSchemeScript"
      ],
      "props": [
        {
          "description": "Content animated by the transition primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether the transition is entered or exited.",
          "name": "in",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion duration token.",
          "name": "duration",
          "type": "\"shorter\" | \"short\" | \"fast\" | \"standard\" | \"complex\"",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion easing token.",
          "name": "easing",
          "type": "\"standard\" | \"entering\" | \"leaving\" | \"sharp\" | \"linear\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// InitColorSchemeScript is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use utility primitives to standardize behavior across components.",
        "Respect reduced-motion behavior when animation is decorative.",
        "Do not expose utility primitives as product-specific patterns."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "NoSsr",
      "group": "Utils",
      "status": "planned",
      "kind": "utility",
      "dependencyMode": "hidden",
      "visibility": {
        "dashboard": false,
        "docs": false,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": true
      },
      "description": "Client-only rendering utility for browser-dependent UI.",
      "importPath": null,
      "exports": [
        "NoSsr"
      ],
      "props": [
        {
          "description": "Content animated by the transition primitive.",
          "name": "children",
          "type": "ReactNode",
          "importance": "normal"
        },
        {
          "defaultValue": "true",
          "description": "Whether the transition is entered or exited.",
          "name": "in",
          "type": "boolean",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion duration token.",
          "name": "duration",
          "type": "\"shorter\" | \"short\" | \"fast\" | \"standard\" | \"complex\"",
          "importance": "normal"
        },
        {
          "defaultValue": "standard",
          "description": "Motion easing token.",
          "name": "easing",
          "type": "\"standard\" | \"entering\" | \"leaving\" | \"sharp\" | \"linear\"",
          "importance": "normal"
        },
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// NoSsr is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Use utility primitives to standardize behavior across components.",
        "Respect reduced-motion behavior when animation is decorative.",
        "Do not expose utility primitives as product-specific patterns."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "useMediaQuery",
      "group": "Utils",
      "status": "ready",
      "kind": "hook",
      "dependencyMode": "hidden",
      "visibility": {
        "dashboard": false,
        "docs": false,
        "exportBuilder": "hidden",
        "sandbox": false,
        "storybook": false
      },
      "description": "Escape-hatch hook for viewport media queries. Element responsiveness belongs in CSS via @container; this exists for portalled overlays, which have no ancestor to query. Not for component internals.",
      "importPath": "@crossroads/ui",
      "exports": [
        "useMediaQuery"
      ],
      "props": [
        {
          "description": "Argument 1: media query string passed to window.matchMedia. Returns whether it currently matches.",
          "name": "query",
          "required": true,
          "type": "string",
          "importance": "normal"
        },
        {
          "defaultValue": "false",
          "description": "Argument 2: value reported before the first client-side evaluation (SSR and first paint).",
          "name": "defaultValue",
          "type": "boolean",
          "importance": "normal"
        }
      ],
      "examples": [
        {
          "title": "Viewport query for portalled overlays",
          "code": "import { useMediaQuery } from \"@crossroads/ui\";\n\nconst isNarrowViewport = useMediaQuery(\"(max-width: 48rem)\");"
        }
      ],
      "usageRules": [
        "Use utility primitives to standardize behavior across components.",
        "Respect reduced-motion behavior when animation is decorative.",
        "Do not expose utility primitives as product-specific patterns."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Transitions/Transitions.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      }
    },
    {
      "name": "useDebouncedCallback",
      "group": "Utils",
      "status": "ready",
      "kind": "hook",
      "dependencyMode": "dependency-only",
      "visibility": {
        "dashboard": false,
        "docs": false,
        "exportBuilder": "dependency-only",
        "sandbox": false,
        "storybook": false
      },
      "description": "Trailing-edge debounce for callback props with cancel and flush controls. Powers SearchField's committed-query model.",
      "importPath": "@crossroads/ui",
      "exports": [
        "useDebouncedCallback"
      ],
      "props": [
        {
          "description": "Argument 1: function invoked with the last scheduled arguments after the delay.",
          "name": "callback",
          "required": true,
          "type": "(...args: Args) => void",
          "importance": "normal"
        },
        {
          "description": "Argument 2: trailing-edge delay in milliseconds; 0 invokes immediately. Returns { schedule, cancel, flush }.",
          "name": "delayMs",
          "required": true,
          "type": "number",
          "importance": "normal"
        }
      ],
      "examples": [
        {
          "title": "Debounced fetch on typing",
          "code": "import { useDebouncedCallback } from \"@crossroads/ui\";\n\nconst search = useDebouncedCallback((query: string) => {\n  fetchResults(query);\n}, 300);\n\n// Per keystroke:\nsearch.schedule(text);\n// Commit immediately (Enter) or drop the pending call:\nsearch.flush();\nsearch.cancel();"
        }
      ],
      "usageRules": [
        "Use utility primitives to standardize behavior across components.",
        "Respect reduced-motion behavior when animation is decorative.",
        "Do not expose utility primitives as product-specific patterns."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [
        "src/components/foundations/utilities/Transitions/Transitions.css"
      ],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [
        "color",
        "typography",
        "spacing",
        "border",
        "radius",
        "shadow",
        "motion",
        "opacity",
        "transform",
        "layout",
        "icon"
      ],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": true,
        "responsive": true,
        "rtl": true
      }
    },
    {
      "name": "DataGrid",
      "group": "Advanced",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Advanced tabular data grid with sorting, selection, and virtualization.",
      "importPath": null,
      "exports": [
        "DataGrid"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// DataGrid is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Planned advanced components should wait until core primitives and testing patterns are stable."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "DateTimePickers",
      "group": "Advanced",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Date, time, and range picker components.",
      "importPath": null,
      "exports": [
        "DateTimePickers"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// DateTimePickers is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Planned advanced components should wait until core primitives and testing patterns are stable."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "Charts",
      "group": "Advanced",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Composable chart components for product analytics.",
      "importPath": null,
      "exports": [
        "Charts"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// Charts is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Planned advanced components should wait until core primitives and testing patterns are stable."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "TreeView",
      "group": "Advanced",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Hierarchical data navigation with selection and expansion.",
      "importPath": null,
      "exports": [
        "TreeView"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// TreeView is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Planned advanced components should wait until core primitives and testing patterns are stable."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "Masonry",
      "group": "Lab",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Pinterest-style responsive layout for variable-height content.",
      "importPath": null,
      "exports": [
        "Masonry"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// Masonry is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Lab components are experimental and should not be used in production examples until promoted."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    },
    {
      "name": "Timeline",
      "group": "Lab",
      "status": "planned",
      "kind": "component",
      "dependencyMode": "selectable",
      "visibility": {
        "dashboard": true,
        "docs": true,
        "exportBuilder": "hidden",
        "sandbox": true,
        "storybook": true
      },
      "description": "Chronological event display for processes and histories.",
      "importPath": null,
      "exports": [
        "Timeline"
      ],
      "props": [
        {
          "description": "Optional class name for scoped overrides when tokens or props are not enough.",
          "name": "className",
          "type": "string",
          "importance": "advanced"
        }
      ],
      "examples": [
        {
          "code": "// Timeline is planned and does not have a public import yet.",
          "title": "Planned usage"
        }
      ],
      "usageRules": [
        "Lab components are experimental and should not be used in production examples until promoted."
      ],
      "accessibilityNotes": [
        "Preserve visible labels, keyboard access, focus-visible states, RTL behavior, and reduced-motion preferences in exported examples."
      ],
      "componentDependencies": [],
      "supportDependencies": [],
      "cssDependencies": [],
      "iconDependencies": [],
      "providerDependencies": [
        "CrossroadsProvider",
        "dir-lang-root"
      ],
      "runtimeDependencies": [
        "react",
        "css-variables",
        "reduced-motion"
      ],
      "tokenDependencies": [],
      "relatedComponents": [],
      "storyRequirements": {
        "interaction": false,
        "keyboard": false,
        "localizedRtl": false,
        "playground": false
      },
      "support": {
        "a11y": false,
        "responsive": false,
        "rtl": false
      }
    }
  ]
}
