{
  "version": "2.0.0",
  "description": "Tenda Components — AI manifest for component usage guidance",
  "guidelines": {
    "icons": "Never pass icons as children. Icons must only be provided via dedicated icon props. If a component has no icon prop, do not insert icons in any form.",
    "children": "Only pass children to components that explicitly declare a children prop.",
    "imports": "Always import from 'tenda-components'. Never import from internal paths like 'tenda-components/dist/...'."
  },
  "components": [
    {
      "name": "Accordion",
      "importPath": "tenda-components",
      "props": [
        { "name": "items", "type": "AccordionItem[]", "required": true },
        { "name": "type", "type": "AccordionType", "required": false, "default": "'single'" },
        { "name": "value", "type": "AccordionValue", "required": false },
        { "name": "defaultValue", "type": "AccordionValue", "required": false },
        { "name": "collapsible", "type": "boolean", "required": false, "default": "true" },
        { "name": "className", "type": "string", "required": false },
        {
          "name": "onValueChange",
          "type": "(val: string | string[] | undefined) => void",
          "required": false
        }
      ],
      "subTypes": {
        "AccordionItem": "{ id: string; title: React.ReactNode; content: React.ReactNode }",
        "AccordionType": "'single' | 'multiple'",
        "AccordionValue": "string | string[]"
      }
    },
    {
      "name": "AlertBanner",
      "importPath": "tenda-components",
      "notes": "Extends React.HTMLAttributes<HTMLDivElement> (omits 'title'). Always includes a close button; handle close via onClose.",
      "extendsHtmlElement": "HTMLDivElement",
      "props": [
        { "name": "title", "type": "string", "required": true },
        {
          "name": "variant",
          "type": "AlertBannerVariant",
          "required": false,
          "default": "'default'"
        },
        { "name": "type", "type": "AlertBannerType", "required": false, "default": "'strong'" },
        { "name": "size", "type": "AlertBannerSize", "required": false, "default": "'md'" },
        { "name": "icon", "type": "React.ReactNode", "required": false },
        { "name": "button", "type": "React.ReactNode", "required": false },
        { "name": "square", "type": "boolean", "required": false, "default": "false" },
        { "name": "onClose", "type": "() => void", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "AlertBannerVariant": "'default' | 'error' | 'alert' | 'info'",
        "AlertBannerType": "'strong' | 'subtle'",
        "AlertBannerSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "AutoCompleteSelect",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "AutoCompleteSelectValue", "required": true, "default": "null" },
        { "name": "options", "type": "AutoCompleteSelectOption[]", "required": true },
        {
          "name": "onChange",
          "type": "(value: AutoCompleteSelectValue) => void",
          "required": true
        },
        { "name": "label", "type": "string", "required": false },
        { "name": "placeholder", "type": "string", "required": false, "default": "'Buscar...'" },
        { "name": "disabled", "type": "boolean", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "size", "type": "AutoCompleteSelectSize", "required": false, "default": "'md'" },
        {
          "name": "shape",
          "type": "AutoCompleteSelectShape",
          "required": false,
          "default": "'default'"
        },
        { "name": "notFoundMessage", "type": "string", "required": false },
        { "name": "debounceMs", "type": "number", "required": false, "default": "500" },
        { "name": "loading", "type": "boolean", "required": false, "default": "false" },
        { "name": "onBlur", "type": "() => void", "required": false },
        { "name": "onInputChange", "type": "(query: string) => void", "required": false }
      ],
      "subTypes": {
        "AutoCompleteSelectOption": "{ label: string; value: string }",
        "AutoCompleteSelectSize": "'sm' | 'md' | 'lg'",
        "AutoCompleteSelectShape": "'default' | 'subtle'",
        "AutoCompleteSelectValue": "string | null"
      }
    },
    {
      "name": "Avatar",
      "importPath": "tenda-components",
      "notes": "When badge or presence is provided, the avatar is wrapped in an avatarWrapper div. backgroundColor only applies when imageType is 'initials' or 'icon'. Badge size is auto-selected based on avatar size (sm for 24/32, md for 48/64, lg for 80/160) unless explicitly set in the badge prop.",
      "props": [
        { "name": "src", "type": "string", "required": false },
        { "name": "alt", "type": "string", "required": false, "default": "'Avatar'" },
        { "name": "shape", "type": "AvatarShape", "required": false, "default": "'circle'" },
        { "name": "state", "type": "AvatarState", "required": false, "default": "'default'" },
        { "name": "size", "type": "AvatarSize", "required": false, "default": "'48'" },
        { "name": "imageType", "type": "AvatarImageType", "required": false, "default": "'photo'" },
        { "name": "initials", "type": "string", "required": false },
        { "name": "icon", "type": "React.ReactNode | string", "required": false },
        { "name": "badge", "type": "AvatarBadge", "required": false },
        { "name": "presence", "type": "boolean", "required": false },
        {
          "name": "presenceColor",
          "type": "string",
          "required": false,
          "default": "green-600 token"
        },
        {
          "name": "indicatorSide",
          "type": "'left' | 'right'",
          "required": false,
          "default": "'right'"
        },
        { "name": "backgroundColor", "type": "string", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "AvatarShape": "'circle' | 'square'",
        "AvatarState": "'default' | 'focus' | 'disabled'",
        "AvatarSize": "'24' | '32' | '48' | '64' | '80' | '160'",
        "AvatarImageType": "'photo' | 'initials' | 'icon'",
        "AvatarBadge": "{ count: number; variant?: BadgeVariant; size?: BadgeSize }"
      }
    },
    {
      "name": "Badge",
      "importPath": "tenda-components",
      "props": [
        { "name": "variant", "type": "BadgeVariant", "required": true },
        { "name": "type", "type": "BadgeType", "required": false, "default": "'dot'" },
        { "name": "count", "type": "number", "required": false, "default": "0" },
        { "name": "className", "type": "string", "required": false },
        { "name": "maxDigits", "type": "2 | 3", "required": false, "default": "2" },
        { "name": "size", "type": "BadgeSize", "required": false, "default": "'md'" }
      ],
      "subTypes": {
        "BadgeType": "'dot' | 'number'",
        "BadgeVariant": "'accent' | 'primary' | 'secondary' | 'subtle' | 'error' | 'success' | 'alert' | 'info' | 'static-black' | 'static-white'",
        "BadgeSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "BigNumber",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "number", "required": false },
        { "name": "rawValue", "type": "string", "required": false },
        { "name": "type", "type": "BigNumberType", "required": false, "default": "'number'" },
        { "name": "size", "type": "BigNumberSize", "required": false, "default": "'md'" },
        { "name": "labelTop", "type": "string", "required": false },
        { "name": "labelBottom", "type": "string", "required": false },
        { "name": "currency", "type": "string", "required": false },
        { "name": "fractionDigits", "type": "number", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "BigNumberType": "'currency' | 'percent' | 'number'",
        "BigNumberSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "BottomNavigation",
      "importPath": "tenda-components",
      "props": [
        { "name": "activeItemId", "type": "string", "required": true },
        { "name": "items", "type": "BottomNavigationItem[]", "required": true },
        { "name": "onChange", "type": "(id: string) => void", "required": true },
        {
          "name": "variant",
          "type": "BottomNavigationVariant",
          "required": false,
          "default": "'accent'"
        },
        { "name": "size", "type": "BottomNavigationSize", "required": false, "default": "'md'" }
      ],
      "subTypes": {
        "BottomNavigationItem": "{ id: string; label: string; icon: React.ReactNode; activeIcon?: React.ReactNode }",
        "BottomNavigationVariant": "'accent' | 'primary'",
        "BottomNavigationSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "BottomSheet",
      "importPath": "tenda-components",
      "props": [
        { "name": "open", "type": "boolean", "required": true },
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "onOpenChange", "type": "(open: boolean) => void", "required": true },
        { "name": "title", "type": "string", "required": false, "default": "'Bottom sheet'" },
        {
          "name": "description",
          "type": "string",
          "required": false,
          "default": "'Bottom sheet content'"
        },
        { "name": "dragToCloseThreshold", "type": "number", "required": false, "default": "80" },
        { "name": "dragHandle", "type": "boolean", "required": false, "default": "true" },
        { "name": "screen", "type": "BottomSheetScreen", "required": false, "default": "'yes'" }
      ],
      "subTypes": {
        "BottomSheetScreen": "'yes' | 'no'"
      }
    },
    {
      "name": "Breadcrumb",
      "importPath": "tenda-components",
      "notes": "The exported component name is 'Breadcrumb' (not 'Breadcrumbs'). The 'separator' prop is declared in the interface but not destructured/used in the function body.",
      "props": [
        { "name": "items", "type": "BreadcrumbItem[]", "required": true },
        { "name": "onClick", "type": "(item: BreadcrumbItem) => void", "required": true },
        { "name": "maxVisible", "type": "number", "required": false, "default": "6" },
        { "name": "size", "type": "BreadcrumbSize", "required": false, "default": "'md'" },
        { "name": "truncate", "type": "boolean", "required": false, "default": "false" },
        { "name": "separator", "type": "React.ReactNode", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "BreadcrumbItem": "{ label: string; icon?: React.ReactNode; menu?: BreadcrumbItem[]; tooltipText?: string; tooltipSide?: TooltipSide }",
        "BreadcrumbSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "Button",
      "importPath": "tenda-components",
      "extendsHtmlElement": "HTMLButtonElement",
      "props": [
        { "name": "variant", "type": "ButtonVariant", "required": true },
        { "name": "shape", "type": "ButtonShape", "required": true },
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "disableClick", "type": "boolean", "required": false, "default": "false" },
        { "name": "size", "type": "ButtonSize", "required": false, "default": "'md'" },
        { "name": "fullWidth", "type": "boolean", "required": false },
        { "name": "tooltip", "type": "string", "required": false },
        { "name": "iconBefore", "type": "React.ReactElement | string", "required": false },
        { "name": "iconAfter", "type": "React.ReactElement | string", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "ButtonVariant": "'accent' | 'primary' | 'secondary' | 'warning' | 'static-black' | 'static-white' | 'alea'",
        "ButtonShape": "'pill-solid' | 'pill-outline' | 'rectangle-solid' | 'rectangle-outline' | 'ghost' | 'rectangle-ghost'",
        "ButtonSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "Card",
      "importPath": "tenda-components",
      "notes": "When 'content' prop is provided, it replaces the default title/description/footer layout entirely.",
      "props": [
        {
          "name": "orientation",
          "type": "CardOrientation",
          "required": false,
          "default": "'vertical'"
        },
        { "name": "shape", "type": "CardShape", "required": false, "default": "'default'" },
        { "name": "title", "type": "string", "required": false },
        { "name": "description", "type": "string", "required": false },
        { "name": "descriptionMaxChars", "type": "number", "required": false, "default": "70" },
        { "name": "media", "type": "MediaType", "required": false },
        { "name": "content", "type": "React.ReactNode", "required": false },
        { "name": "footer", "type": "React.ReactNode", "required": false },
        { "name": "className", "type": "string", "required": false },
        { "name": "maxWidth", "type": "string | number", "required": false },
        { "name": "minWidth", "type": "string | number", "required": false },
        { "name": "maxHeight", "type": "string | number", "required": false },
        { "name": "minHeight", "type": "string | number", "required": false }
      ],
      "subTypes": {
        "CardOrientation": "'vertical' | 'horizontal'",
        "CardShape": "'default' | 'subtle' | 'inset'",
        "MediaType": "React.ReactNode | { src: string; alt?: string }"
      }
    },
    {
      "name": "Carousel",
      "importPath": "tenda-components",
      "notes": "Use CarouselSlide as the direct children of Carousel.",
      "props": [
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "options", "type": "EmblaOptionsType", "required": false },
        { "name": "withDots", "type": "boolean", "required": false, "default": "true" },
        { "name": "withButtons", "type": "boolean", "required": false, "default": "true" },
        {
          "name": "buttonsPosition",
          "type": "CarouselButtonsPosition",
          "required": false,
          "default": "'inside'"
        }
      ],
      "subTypes": {
        "CarouselButtonsPosition": "'inside' | 'outside'"
      }
    },
    {
      "name": "CarouselSlide",
      "importPath": "tenda-components",
      "props": [{ "name": "children", "type": "React.ReactNode", "required": true }]
    },
    {
      "name": "Checkbox",
      "importPath": "tenda-components",
      "notes": "Extends React.InputHTMLAttributes<HTMLInputElement> (omits 'size' and 'onChange').",
      "extendsHtmlElement": "HTMLInputElement",
      "props": [
        { "name": "label", "type": "string", "required": false },
        { "name": "variant", "type": "CheckboxVariant", "required": false, "default": "'primary'" },
        { "name": "checked", "type": "boolean", "required": false, "default": "false" },
        { "name": "mixed", "type": "boolean", "required": false, "default": "false" },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "size", "type": "CheckboxSize", "required": false, "default": "'md'" },
        { "name": "onChange", "type": "(checked: boolean) => void", "required": false }
      ],
      "subTypes": {
        "CheckboxVariant": "'accent' | 'primary' | 'secondary' | 'static-black' | 'static-white'",
        "CheckboxSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "CheckboxGroup",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "string[]", "required": true },
        { "name": "options", "type": "CheckboxGroupOption[]", "required": true },
        { "name": "name", "type": "string", "required": true },
        { "name": "onChange", "type": "(values: string[]) => void", "required": true },
        { "name": "label", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        {
          "name": "direction",
          "type": "CheckboxGroupDirection",
          "required": false,
          "default": "'vertical'"
        },
        { "name": "size", "type": "CheckboxSize", "required": false, "default": "'md'" },
        { "name": "variant", "type": "CheckboxVariant", "required": false },
        { "name": "className", "type": "string", "required": false },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLDivElement>", "required": false }
      ],
      "subTypes": {
        "CheckboxGroupOption": "Omit<CheckboxProps, 'name' | 'checked' | 'onChange'> & { value: string }",
        "CheckboxGroupDirection": "'vertical' | 'horizontal'"
      }
    },
    {
      "name": "Chip",
      "importPath": "tenda-components",
      "props": [
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "type", "type": "ChipType", "required": false, "default": "'filter'" },
        { "name": "state", "type": "ChipState", "required": false, "default": "'default'" },
        { "name": "size", "type": "ChipSize", "required": false, "default": "'md'" },
        { "name": "rounded", "type": "boolean", "required": false, "default": "false" },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "iconLeft", "type": "React.ReactNode", "required": false },
        { "name": "iconRight", "type": "React.ReactNode", "required": false },
        { "name": "onRemove", "type": "() => void", "required": false },
        { "name": "onClick", "type": "() => void", "required": false }
      ],
      "subTypes": {
        "ChipType": "'filter' | 'input' | 'in-component'",
        "ChipState": "'default' | 'active'",
        "ChipSize": "'sm' | 'md' | 'lg' | 'xl'"
      }
    },
    {
      "name": "ChipsTextField",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "string[]", "required": true },
        { "name": "onChange", "type": "(value: string[]) => void", "required": true },
        { "name": "label", "type": "string", "required": false },
        { "name": "placeholder", "type": "string", "required": false, "default": "''" },
        { "name": "separator", "type": "string", "required": false, "default": "','" },
        { "name": "showChipRemoveIcon", "type": "boolean", "required": false, "default": "false" },
        { "name": "minInputWidth", "type": "number", "required": false, "default": "200" },
        { "name": "maxInputWidth", "type": "number", "required": false, "default": "500" },
        { "name": "error", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false },
        { "name": "size", "type": "ChipsTextFieldSize", "required": false, "default": "'md'" },
        {
          "name": "shape",
          "type": "ChipsTextFieldShape",
          "required": false,
          "default": "'default'"
        },
        { "name": "iconLeft", "type": "React.ReactNode", "required": false },
        { "name": "iconRight", "type": "React.ReactNode", "required": false },
        { "name": "validateItem", "type": "(value: string) => boolean", "required": false },
        { "name": "onFocus", "type": "React.FocusEventHandler<HTMLDivElement>", "required": false },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLDivElement>", "required": false }
      ],
      "subTypes": {
        "ChipsTextFieldSize": "'sm' | 'md' | 'lg'",
        "ChipsTextFieldShape": "'default' | 'subtle'"
      }
    },
    {
      "name": "Counter",
      "importPath": "tenda-components",
      "props": [
        { "name": "label", "type": "string", "required": false },
        { "name": "helperText", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "min", "type": "number", "required": false, "default": "0" },
        { "name": "max", "type": "number", "required": false, "default": "99" },
        { "name": "value", "type": "number", "required": false },
        { "name": "onChange", "type": "(value: number) => void", "required": false },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLDivElement>", "required": false }
      ]
    },
    {
      "name": "DateSelector",
      "importPath": "tenda-components",
      "notes": "Discriminated union by 'mode'. For mode='single' value is string, for 'multiple'/'range' value is string[] | undefined. Default mode is 'single'.",
      "props": [
        {
          "name": "mode",
          "type": "'single' | 'multiple' | 'range'",
          "required": false,
          "default": "'single'"
        },
        {
          "name": "value",
          "type": "DateSelectorSingleValue | DateSelectorMultipleValue | DateSelectorRangeValue",
          "required": false
        },
        { "name": "onChange", "type": "(value: ...) => void", "required": false },
        { "name": "shape", "type": "DateSelectorShape", "required": false, "default": "'default'" },
        { "name": "label", "type": "string", "required": false, "default": "'Date Picker'" },
        { "name": "placeholder", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "readOnly", "type": "boolean", "required": false, "default": "false" },
        { "name": "minDate", "type": "Date", "required": false },
        { "name": "maxDate", "type": "Date", "required": false },
        { "name": "className", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "size", "type": "DateSelectorSize", "required": false, "default": "'md'" },
        { "name": "helperText", "type": "string", "required": false },
        {
          "name": "variant",
          "type": "DateSelectorVariant",
          "required": false,
          "default": "'accent'"
        },
        { "name": "checked", "type": "boolean", "required": false },
        { "name": "dimissible", "type": "boolean", "required": false },
        { "name": "mask", "type": "string", "required": false },
        {
          "name": "onBlur",
          "type": "React.FocusEventHandler<HTMLInputElement>",
          "required": false
        },
        { "name": "rangeStartLabel", "type": "string", "required": false, "default": "'Inicio'" },
        { "name": "rangeEndLabel", "type": "string", "required": false, "default": "'Fim'" },
        { "name": "onClickDimissibleIcon", "type": "() => void", "required": false }
      ],
      "subTypes": {
        "DateSelectorShape": "'default' | 'subtle'",
        "DateSelectorSize": "'sm' | 'md' | 'lg'",
        "DateSelectorVariant": "'accent' | 'primary' | 'purple'",
        "DateSelectorSingleValue": "string",
        "DateSelectorMultipleValue": "string[] | undefined",
        "DateSelectorRangeValue": "string[] | undefined"
      }
    },
    {
      "name": "Divider",
      "importPath": "tenda-components",
      "notes": "Extends React.HTMLAttributes<HTMLDivElement>.",
      "extendsHtmlElement": "HTMLDivElement",
      "props": [
        {
          "name": "orientation",
          "type": "DividerOrientation",
          "required": false,
          "default": "'horizontal'"
        },
        { "name": "variant", "type": "DividerVariant", "required": false, "default": "'default'" },
        { "name": "size", "type": "DividerSize", "required": false, "default": "'md'" },
        { "name": "length", "type": "number | string", "required": false },
        { "name": "className", "type": "string", "required": false },
        { "name": "style", "type": "React.CSSProperties", "required": false },
        { "name": "rounded", "type": "boolean", "required": false, "default": "true" }
      ],
      "subTypes": {
        "DividerOrientation": "'horizontal' | 'vertical'",
        "DividerVariant": "'default' | 'subtle' | 'static'",
        "DividerSize": "'md' | 'lg' | 'xl'"
      }
    },
    {
      "name": "Drawer",
      "importPath": "tenda-components",
      "props": [
        { "name": "open", "type": "boolean", "required": true },
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "onOpenChange", "type": "(open: boolean) => void", "required": true },
        { "name": "className", "type": "string", "required": false },
        { "name": "contentClassName", "type": "string", "required": false },
        { "name": "side", "type": "DrawerSide", "required": false, "default": "'right'" },
        { "name": "title", "type": "string", "required": false, "default": "'Drawer'" },
        {
          "name": "description",
          "type": "string",
          "required": false,
          "default": "'Drawer content'"
        }
      ],
      "subTypes": {
        "DrawerSide": "'left' | 'right'"
      }
    },
    {
      "name": "EmptyState",
      "importPath": "tenda-components",
      "props": [
        { "name": "title", "type": "string", "required": true },
        { "name": "icon", "type": "React.ReactNode", "required": false },
        { "name": "description", "type": "string", "required": false },
        {
          "name": "primaryAction",
          "type": "{ label: string; onClick: () => void }",
          "required": false
        },
        {
          "name": "secondaryAction",
          "type": "{ label: string; onClick: () => void }",
          "required": false
        },
        {
          "name": "helperAction",
          "type": "{ label: string; onClick: () => void }",
          "required": false
        }
      ]
    },
    {
      "name": "FileUpload",
      "importPath": "tenda-components",
      "notes": "The exported component name is 'FileUpload' (not 'FileUploader'). Default maxSize is 2MB (2*1024*1024 bytes).",
      "props": [
        { "name": "onChange", "type": "(files: File[]) => void", "required": true },
        {
          "name": "variant",
          "type": "FileUploadVariant",
          "required": false,
          "default": "'dropzone'"
        },
        { "name": "error", "type": "string", "required": false },
        { "name": "alert", "type": "string", "required": false },
        { "name": "helperText", "type": "string", "required": false },
        { "name": "maxSize", "type": "number", "required": false, "default": "2097152" },
        { "name": "maxFiles", "type": "number", "required": false },
        {
          "name": "maxFilesErrorText",
          "type": "string",
          "required": false,
          "default": "'Número máximo de arquivos excedido'"
        },
        {
          "name": "maxSizeErrorText",
          "type": "string",
          "required": false,
          "default": "'O arquivo excede o tamanho máximo permitido'"
        },
        {
          "name": "fileInvalidTypeErrorText",
          "type": "string",
          "required": false,
          "default": "'Este tipo de arquivo não é permitido'"
        },
        { "name": "accept", "type": "Record<string, string[]>", "required": false },
        {
          "name": "titleText",
          "type": "string",
          "required": false,
          "default": "'Upload de arquivo'"
        },
        {
          "name": "buttonText",
          "type": "string",
          "required": false,
          "default": "'Selecionar arquivos'"
        },
        {
          "name": "dropzoneText",
          "type": "string",
          "required": false,
          "default": "'Arraste arquivos para esta área ou selecione no botão abaixo'"
        },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLInputElement>", "required": false }
      ],
      "subTypes": {
        "FileUploadVariant": "'button' | 'dropzone'"
      }
    },
    {
      "name": "IconButton",
      "importPath": "tenda-components",
      "notes": "Discriminated union by 'shape'. When shape='close', 'variant' must be omitted and 'rounded' is allowed. When shape is any other value, 'variant' is required and 'rounded' must be omitted. aria-label is required.",
      "extendsHtmlElement": "HTMLButtonElement",
      "props": [
        { "name": "shape", "type": "IconShape", "required": true },
        { "name": "aria-label", "type": "string", "required": true },
        {
          "name": "variant",
          "type": "IconButtonVariant",
          "required": false,
          "description": "Required when shape is not 'close'. Must be omitted when shape='close'."
        },
        { "name": "size", "type": "IconButtonSize", "required": false, "default": "'md'" },
        { "name": "icon", "type": "React.ReactElement | string", "required": false },
        { "name": "tooltip", "type": "string", "required": false },
        { "name": "disableClick", "type": "boolean", "required": false, "default": "false" },
        {
          "name": "rounded",
          "type": "boolean",
          "required": false,
          "default": "true",
          "description": "Only valid when shape='close'."
        },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "IconButtonVariant": "'accent' | 'primary' | 'secondary' | 'warning' | 'static-black' | 'static-white' | 'alea'",
        "IconButtonSize": "'sm' | 'md' | 'lg' | 'xl'",
        "IconShape": "'circle-solid' | 'circle-outline' | 'square-solid' | 'square-outline' | 'icon-ghost' | 'icon-ghost-outline' | 'close'"
      }
    },
    {
      "name": "Link",
      "importPath": "tenda-components",
      "notes": "Discriminated union by 'inline'. When inline=true, leftIcon/rightIcon are not available. Extends React.AnchorHTMLAttributes<HTMLAnchorElement>.",
      "extendsHtmlElement": "HTMLAnchorElement",
      "props": [
        { "name": "variant", "type": "LinkVariant", "required": true },
        { "name": "inline", "type": "boolean", "required": false },
        {
          "name": "size",
          "type": "LinkSize | LinkInlineSize",
          "required": false,
          "default": "'md'"
        },
        { "name": "fullWidth", "type": "boolean", "required": false },
        { "name": "tooltip", "type": "string", "required": false },
        { "name": "underline", "type": "boolean", "required": false, "default": "false" },
        { "name": "children", "type": "React.ReactNode", "required": false },
        {
          "name": "leftIcon",
          "type": "LinkIconProp",
          "required": false,
          "description": "Only available when inline is false/undefined."
        },
        {
          "name": "rightIcon",
          "type": "LinkIconProp",
          "required": false,
          "description": "Only available when inline is false/undefined."
        }
      ],
      "subTypes": {
        "LinkVariant": "'accent' | 'primary' | 'secondary' | 'yellow_variant' | 'static-black' | 'static-white'",
        "LinkSize": "'sm' | 'md' | 'lg'",
        "LinkInlineSize": "'xs' | 'sm' | 'md' | 'lg'",
        "LinkIconProp": "React.ReactElement | string | null | undefined"
      }
    },
    {
      "name": "Modal",
      "importPath": "tenda-components",
      "props": [
        { "name": "open", "type": "boolean", "required": true },
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "onOpenChange", "type": "(open: boolean) => void", "required": true },
        { "name": "a11yTitle", "type": "string", "required": false, "default": "'Modal'" },
        {
          "name": "a11yDescription",
          "type": "string",
          "required": false,
          "default": "'Modal dialog content'"
        },
        { "name": "disableOutsideClose", "type": "boolean", "required": false, "default": "false" },
        { "name": "size", "type": "ModalSize", "required": false, "default": "'md'" },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "ModalSize": "'sm' | 'md' | 'lg' | 'xl'"
      }
    },
    {
      "name": "OTPInput",
      "importPath": "tenda-components",
      "props": [
        { "name": "onChange", "type": "(val: string) => void", "required": true },
        { "name": "length", "type": "number", "required": false, "default": "6" },
        { "name": "value", "type": "string", "required": false, "default": "''" },
        { "name": "error", "type": "string", "required": false },
        { "name": "align", "type": "OTPAlign", "required": false, "default": "'center'" },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        {
          "name": "title",
          "type": "string",
          "required": false,
          "default": "'Verificação em duas etapas'"
        },
        {
          "name": "subtitle",
          "type": "string",
          "required": false,
          "default": "'Digite o código enviado para o seu e-mail ou número de telefone.'"
        },
        { "name": "validateLabel", "type": "string", "required": false, "default": "'Validar'" },
        {
          "name": "resendLabel",
          "type": "string",
          "required": false,
          "default": "'Reenviar o código'"
        },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLDivElement>", "required": false },
        { "name": "onValidate", "type": "(value: string) => void", "required": false },
        { "name": "onResend", "type": "() => void", "required": false }
      ],
      "subTypes": {
        "OTPAlign": "'left' | 'center'"
      }
    },
    {
      "name": "PageControl",
      "importPath": "tenda-components",
      "props": [
        { "name": "total", "type": "number", "required": true },
        { "name": "current", "type": "number", "required": true },
        { "name": "size", "type": "PageControlSize", "required": false, "default": "'md'" },
        { "name": "type", "type": "PageControlType", "required": false, "default": "'dot'" }
      ],
      "subTypes": {
        "PageControlSize": "'sm' | 'md'",
        "PageControlType": "'dot' | 'number'"
      }
    },
    {
      "name": "Pagination",
      "importPath": "tenda-components",
      "props": [
        { "name": "currentPage", "type": "number", "required": true },
        { "name": "totalItems", "type": "number", "required": true },
        { "name": "itemsPerPage", "type": "number", "required": true },
        { "name": "onItemsPerPageChange", "type": "(size: number) => void", "required": true },
        { "name": "onPageChange", "type": "(page: number) => void", "required": true },
        {
          "name": "itemsPerPageOptions",
          "type": "number[]",
          "required": false,
          "default": "[10, 20, 30, 50]"
        },
        { "name": "size", "type": "PaginationSize", "required": false, "default": "'md'" },
        { "name": "hideControls", "type": "boolean", "required": false, "default": "false" },
        { "name": "align", "type": "PaginationAlign", "required": false, "default": "'left'" },
        {
          "name": "labels",
          "type": "{ itemsPerPage?: string; previous?: string; next?: string }",
          "required": false
        }
      ],
      "subTypes": {
        "PaginationSize": "'sm' | 'md' | 'lg'",
        "PaginationAlign": "'left' | 'center' | 'right'"
      }
    },
    {
      "name": "Popover",
      "importPath": "tenda-components",
      "props": [
        { "name": "trigger", "type": "React.ReactNode", "required": true },
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "side", "type": "PopoverSide", "required": false, "default": "'bottom'" },
        { "name": "align", "type": "PopoverAlign", "required": false, "default": "'center'" },
        { "name": "sideOffset", "type": "number", "required": false, "default": "8" },
        { "name": "className", "type": "string", "required": false },
        { "name": "open", "type": "boolean", "required": false },
        { "name": "onOpenChange", "type": "(open: boolean) => void", "required": false }
      ],
      "subTypes": {
        "PopoverSide": "'top' | 'bottom' | 'left' | 'right'",
        "PopoverAlign": "'center' | 'start' | 'end'"
      }
    },
    {
      "name": "ProgressBar",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "number", "required": false, "default": "0" },
        { "name": "max", "type": "number", "required": false, "default": "100" },
        {
          "name": "variant",
          "type": "ProgressBarVariant",
          "required": false,
          "default": "'accent'"
        },
        { "name": "size", "type": "ProgressBarSize", "required": false, "default": "'md'" },
        { "name": "indeterminate", "type": "'yes' | 'no'", "required": false, "default": "'no'" },
        { "name": "label", "type": "string", "required": false },
        { "name": "counter", "type": "boolean", "required": false, "default": "false" }
      ],
      "subTypes": {
        "ProgressBarVariant": "'accent' | 'primary' | 'static-white' | 'static-black'",
        "ProgressBarSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "ProgressIndicator",
      "importPath": "tenda-components",
      "props": [
        { "name": "steps", "type": "ProgressIndicatorStep[]", "required": true },
        {
          "name": "orientation",
          "type": "ProgressIndicatorOrientation",
          "required": false,
          "default": "'horizontal'"
        },
        {
          "name": "type",
          "type": "ProgressIndicatorType",
          "required": false,
          "default": "'checkIcon'"
        },
        { "name": "size", "type": "ProgressIndicatorSize", "required": false, "default": "'md'" },
        {
          "name": "variant",
          "type": "ProgressIndicatorVariant",
          "required": false,
          "default": "'accent'"
        },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "ProgressIndicatorStep": "{ label: string; description?: string; status: 'completed' | 'current' | 'upcoming'; customIcon?: React.ReactNode; line?: boolean }",
        "ProgressIndicatorOrientation": "'horizontal' | 'vertical'",
        "ProgressIndicatorType": "'number' | 'checkIcon' | 'customIcon'",
        "ProgressIndicatorSize": "'sm' | 'md' | 'lg'",
        "ProgressIndicatorVariant": "'accent' | 'primary' | 'static-black' | 'static-white'"
      }
    },
    {
      "name": "RadioButton",
      "importPath": "tenda-components",
      "notes": "Extends React.InputHTMLAttributes<HTMLInputElement> (omits 'size' and 'onChange').",
      "extendsHtmlElement": "HTMLInputElement",
      "props": [
        { "name": "label", "type": "string", "required": true },
        { "name": "size", "type": "RadionButtonSize", "required": false, "default": "'md'" },
        {
          "name": "variant",
          "type": "RadioButtonVariant",
          "required": false,
          "default": "'accent'"
        },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "onChange", "type": "(value: string) => void", "required": false }
      ],
      "subTypes": {
        "RadionButtonSize": "'sm' | 'md' | 'lg'",
        "RadioButtonVariant": "'accent' | 'primary' | 'secondary' | 'static-black' | 'static-white'"
      }
    },
    {
      "name": "RadioGroup",
      "importPath": "tenda-components",
      "props": [
        { "name": "name", "type": "string", "required": true },
        { "name": "value", "type": "string", "required": true },
        { "name": "options", "type": "RadioGroupOption[]", "required": true },
        { "name": "onChange", "type": "(value: string) => void", "required": true },
        { "name": "label", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "error", "type": "string", "required": false },
        {
          "name": "direction",
          "type": "'vertical' | 'horizontal'",
          "required": false,
          "default": "'vertical'"
        },
        { "name": "gap", "type": "string | number", "required": false },
        { "name": "size", "type": "RadionButtonSize", "required": false, "default": "'md'" },
        { "name": "variant", "type": "RadioButtonVariant", "required": false },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLDivElement>", "required": false }
      ],
      "subTypes": {
        "RadioGroupOption": "Omit<RadioButtonProps, 'name' | 'checked' | 'onChange'> & { value: string }"
      }
    },
    {
      "name": "SearchField",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "SearchFieldValue[]", "required": true },
        { "name": "options", "type": "SearchFieldOption[]", "required": true },
        { "name": "label", "type": "string", "required": true },
        {
          "name": "onChange",
          "type": "(newSelected: SearchFieldValue[]) => void",
          "required": true
        },
        { "name": "placeholder", "type": "string", "required": false, "default": "'Buscar...'" },
        { "name": "disabled", "type": "boolean", "required": false },
        { "name": "size", "type": "SearchFieldSize", "required": false, "default": "'md'" },
        { "name": "shape", "type": "SearchFieldShape", "required": false, "default": "'default'" },
        { "name": "error", "type": "string", "required": false },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLElement>", "required": false },
        { "name": "onInputChange", "type": "(term: string) => void", "required": false }
      ],
      "subTypes": {
        "SearchFieldOption": "{ id: string; label: string; group?: string; disabled?: boolean }",
        "SearchFieldSize": "'sm' | 'md' | 'lg'",
        "SearchFieldShape": "'default' | 'subtle'",
        "SearchFieldValue": "string"
      }
    },
    {
      "name": "Select",
      "importPath": "tenda-components",
      "notes": "Discriminated union by 'multiple'. When multiple=true, value and onChange use arrays. Options can be flat SelectOption[] or grouped SelectGroup[].",
      "props": [
        { "name": "options", "type": "SelectItems", "required": true },
        { "name": "value", "type": "SelectValue | SelectValue[]", "required": true },
        {
          "name": "onChange",
          "type": "((value: SelectValue) => void) | ((value: SelectValue[]) => void)",
          "required": true
        },
        { "name": "multiple", "type": "boolean", "required": false },
        { "name": "label", "type": "string", "required": false },
        { "name": "placeholder", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false },
        { "name": "size", "type": "SelectSize", "required": false, "default": "'md'" },
        { "name": "shape", "type": "SelectShape", "required": false, "default": "'default'" },
        {
          "name": "checkboxVariant",
          "type": "CheckboxVariant",
          "required": false,
          "default": "'primary'"
        },
        {
          "name": "onBlur",
          "type": "React.FocusEventHandler<HTMLButtonElement>",
          "required": false
        }
      ],
      "subTypes": {
        "SelectOption": "{ value: string; label: string }",
        "SelectGroup": "{ label: string; options: SelectOption[] }",
        "SelectItems": "SelectOption[] | SelectGroup[]",
        "SelectSize": "'sm' | 'md' | 'lg'",
        "SelectShape": "'default' | 'subtle'"
      }
    },
    {
      "name": "SideNavigation",
      "importPath": "tenda-components",
      "notes": "Logo prop is declared in the interface but not destructured/used in the function body. The user section (name, email, avatar) is hidden when collapsed — only the avatar image remains. The dark mode toggle label is also hidden when collapsed. The logout button is always visible even when collapsed.",
      "props": [
        { "name": "items", "type": "NavNode[]", "required": true },
        { "name": "logo", "type": "React.ReactNode", "required": false },
        { "name": "footer", "type": "React.ReactNode", "required": false },
        { "name": "collapsed", "type": "boolean", "required": false, "default": "false" },
        { "name": "size", "type": "SideNavigationSize", "required": false, "default": "'md'" },
        { "name": "activeItemId", "type": "string | null", "required": false },
        { "name": "onToggleCollapse", "type": "(collapsed: boolean) => void", "required": false },
        { "name": "onItemClick", "type": "(id: string) => void", "required": false },
        { "name": "showDarkModeToggle", "type": "boolean", "required": false, "default": "false" },
        { "name": "hideScrollbar", "type": "boolean", "required": false, "default": "false" },
        { "name": "user", "type": "SideNavUser", "required": false },
        { "name": "onLogout", "type": "() => void", "required": false }
      ],
      "subTypes": {
        "NavItem": "{ id: string; label: string; icon?: React.ReactNode; addonRight?: React.ReactNode; active?: boolean; children?: NavNode[] }",
        "SideNavigationNavHeader": "{ id: string; label: string; header: true; children?: NavNode[] }",
        "NavNode": "NavItem | SideNavigationNavHeader",
        "SideNavigationSize": "'sm' | 'md' | 'lg'",
        "SideNavUser": "{ name: string; email: string; avatar?: string; menuItems?: SideNavUserMenuItem[] }",
        "SideNavUserMenuItem": "{ id: string; label: string; icon?: React.ReactNode; onClick?: () => void }"
      }
    },
    {
      "name": "Skeleton",
      "importPath": "tenda-components",
      "props": [
        { "name": "variant", "type": "SkeletonVariant", "required": false, "default": "'default'" },
        { "name": "size", "type": "SkeletonSize", "required": false, "default": "'md'" },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "SkeletonVariant": "'default' | 'circle' | 'pill'",
        "SkeletonSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "SliderStep",
      "importPath": "tenda-components",
      "notes": "Generic component: T extends number | [number, number]. Use number for single thumb, [number, number] for range slider.",
      "props": [
        { "name": "value", "type": "T extends number | [number, number]", "required": true },
        { "name": "onChange", "type": "(value: T) => void", "required": true },
        { "name": "label", "type": "string", "required": false },
        { "name": "helperText", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" },
        { "name": "min", "type": "number", "required": false, "default": "0" },
        { "name": "max", "type": "number", "required": false, "default": "100" },
        { "name": "step", "type": "number", "required": false },
        { "name": "beforeSlot", "type": "React.ReactNode", "required": false },
        { "name": "afterSlot", "type": "React.ReactNode", "required": false },
        { "name": "topSlot", "type": "React.ReactNode", "required": false },
        { "name": "bottomSlot", "type": "React.ReactNode | React.ReactNode[]", "required": false },
        { "name": "rightBoxValue", "type": "number", "required": false },
        { "name": "leftBoxValue", "type": "number", "required": false },
        { "name": "rightTopBoxValue", "type": "number", "required": false },
        { "name": "rightBottomBoxValue", "type": "number", "required": false },
        { "name": "leftBottomBoxValue", "type": "number", "required": false },
        { "name": "showThumbTooltip", "type": "boolean", "required": false, "default": "false" },
        {
          "name": "tooltipSide",
          "type": "SliderTooltipSide",
          "required": false,
          "default": "'top'"
        },
        {
          "name": "tooltipSize",
          "type": "SliderTooltipSize",
          "required": false,
          "default": "'compact'"
        },
        { "name": "onBlur", "type": "React.FocusEventHandler<HTMLElement>", "required": false }
      ],
      "subTypes": {
        "SliderTooltipSide": "'top' | 'bottom' | 'left' | 'right'",
        "SliderTooltipSize": "'default' | 'compact'"
      }
    },
    {
      "name": "StatusLight",
      "importPath": "tenda-components",
      "notes": "Extends React.HTMLAttributes<HTMLDivElement>.",
      "extendsHtmlElement": "HTMLDivElement",
      "props": [
        { "name": "label", "type": "string", "required": true },
        {
          "name": "variant",
          "type": "StatusLightVariant",
          "required": false,
          "default": "'neutral'"
        },
        { "name": "size", "type": "StatusLightSize", "required": false, "default": "'md'" },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "StatusLightVariant": "'neutral' | 'negative' | 'positive' | 'alert' | 'info'",
        "StatusLightSize": "'sm' | 'md' | 'lg' | 'xl'"
      }
    },
    {
      "name": "Switch",
      "importPath": "tenda-components",
      "notes": "Extends React.InputHTMLAttributes<HTMLInputElement> (omits 'size' and 'onChange').",
      "extendsHtmlElement": "HTMLInputElement",
      "props": [
        { "name": "checked", "type": "boolean", "required": true },
        { "name": "onChange", "type": "(checked: boolean) => void", "required": true },
        { "name": "label", "type": "string", "required": false },
        { "name": "size", "type": "SwitchSize", "required": false, "default": "'md'" },
        { "name": "variant", "type": "SwitchVariant", "required": false, "default": "'primary'" },
        { "name": "disabled", "type": "boolean", "required": false, "default": "false" }
      ],
      "subTypes": {
        "SwitchSize": "'sm' | 'md' | 'lg'",
        "SwitchVariant": "'accent' | 'primary' | 'secondary' | 'static-white' | 'static-black'"
      }
    },
    {
      "name": "Table",
      "importPath": "tenda-components",
      "notes": "Compound component. Use Table.Header, Table.Body, Table.Row, Table.Cell, Table.HeaderCell as sub-components. Extends React.TableHTMLAttributes<HTMLTableElement>.",
      "extendsHtmlElement": "HTMLTableElement",
      "props": [
        { "name": "columns", "type": "TableCol[]", "required": false },
        { "name": "noSideBorders", "type": "boolean", "required": false, "default": "false" },
        { "name": "children", "type": "React.ReactNode", "required": false }
      ],
      "subTypes": {
        "TableCol": "{ width?: number | string; variant?: 'default' | 'compact'; className?: string }"
      }
    },
    {
      "name": "Tabs",
      "importPath": "tenda-components",
      "props": [
        { "name": "value", "type": "number", "required": true },
        { "name": "tabs", "type": "Tab[]", "required": true },
        { "name": "onChange", "type": "(index: number) => void", "required": true },
        { "name": "variant", "type": "TabsVariant", "required": false, "default": "'accent'" },
        { "name": "type", "type": "TabsType", "required": false, "default": "'global'" },
        { "name": "size", "type": "TabsSize", "required": false, "default": "'sm'" },
        { "name": "align", "type": "TabsAlignment", "required": false, "default": "'left'" },
        { "name": "borderBottom", "type": "boolean", "required": false, "default": "false" },
        { "name": "fullWidth", "type": "boolean", "required": false, "default": "false" },
        { "name": "badgeVariant", "type": "TabsVariant", "required": false },
        { "name": "overflowMenu", "type": "boolean", "required": false, "default": "false" },
        { "name": "onDismiss", "type": "(index: number) => void", "required": false }
      ],
      "subTypes": {
        "Tab": "{ label: string; disabled?: boolean; showBadge?: boolean | number; iconBefore?: React.ReactNode; iconAfter?: React.ReactNode; dismissable?: boolean }",
        "TabsVariant": "'accent' | 'secondary' | 'primary'",
        "TabsType": "'global' | 'contained' | 'control'",
        "TabsSize": "'sm' | 'md' | 'lg'",
        "TabsAlignment": "'left' | 'center'"
      }
    },
    {
      "name": "Tag",
      "importPath": "tenda-components",
      "props": [
        { "name": "variant", "type": "TagVariant", "required": false, "default": "'primary'" },
        { "name": "type", "type": "TagType", "required": false, "default": "'outlined'" },
        { "name": "size", "type": "TagSize", "required": false, "default": "'md'" },
        { "name": "rounded", "type": "boolean", "required": false, "default": "false" },
        { "name": "icon", "type": "React.ReactNode | string", "required": false },
        { "name": "children", "type": "React.ReactNode", "required": false }
      ],
      "subTypes": {
        "TagVariant": "'accent' | 'primary' | 'secondary' | 'error' | 'success' | 'warning' | 'info' | 'static-black' | 'static-white'",
        "TagType": "'outlined' | 'filled' | 'outlined-icon' | 'filled-icon'",
        "TagSize": "'sm' | 'md' | 'lg' | 'xl'"
      }
    },
    {
      "name": "TextArea",
      "importPath": "tenda-components",
      "notes": "Extends React.TextareaHTMLAttributes<HTMLTextAreaElement> (omits 'onChange'). Supports ref forwarding.",
      "extendsHtmlElement": "HTMLTextAreaElement",
      "props": [
        { "name": "label", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false },
        { "name": "rows", "type": "number", "required": false, "default": "1" },
        { "name": "size", "type": "TextAreaSize", "required": false, "default": "'md'" },
        { "name": "shape", "type": "TextAreaShape", "required": false, "default": "'default'" },
        { "name": "onChange", "type": "(value: string) => void", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "TextAreaSize": "'sm' | 'md' | 'lg'",
        "TextAreaShape": "'default' | 'quiet'"
      }
    },
    {
      "name": "TextField",
      "importPath": "tenda-components",
      "notes": "Extends React.InputHTMLAttributes<HTMLInputElement> (omits 'size' and 'onChange'). Supports ref forwarding.",
      "extendsHtmlElement": "HTMLInputElement",
      "props": [
        { "name": "label", "type": "string", "required": false },
        { "name": "helperText", "type": "string", "required": false },
        { "name": "error", "type": "string", "required": false },
        { "name": "disabled", "type": "boolean", "required": false },
        { "name": "valid", "type": "boolean", "required": false },
        { "name": "showCount", "type": "boolean", "required": false },
        { "name": "size", "type": "TextFieldSize", "required": false, "default": "'md'" },
        { "name": "shape", "type": "TextFieldShape", "required": false, "default": "'default'" },
        { "name": "iconLeft", "type": "React.ReactNode", "required": false },
        { "name": "iconRight", "type": "React.ReactNode", "required": false },
        { "name": "onChange", "type": "(value: string) => void", "required": false },
        { "name": "className", "type": "string", "required": false }
      ],
      "subTypes": {
        "TextFieldSize": "'sm' | 'md' | 'lg'",
        "TextFieldShape": "'default' | 'subtle'"
      }
    },
    {
      "name": "Toast",
      "importPath": "tenda-components",
      "notes": "Extends @radix-ui/react-toast Root props. Must be wrapped in ToastProvider. Use ToastViewport to position the notification area.",
      "props": [
        { "name": "title", "type": "string", "required": false },
        { "name": "variant", "type": "ToastVariant", "required": false, "default": "'default'" },
        { "name": "size", "type": "ToastSize", "required": false, "default": "'md'" },
        { "name": "iconBefore", "type": "React.ReactNode", "required": false },
        { "name": "nodeAfter", "type": "React.ReactNode", "required": false },
        { "name": "onClose", "type": "() => void", "required": false }
      ],
      "subTypes": {
        "ToastVariant": "'default' | 'success' | 'error' | 'info'",
        "ToastSize": "'sm' | 'md' | 'lg'",
        "ToastPosition": "'bottom-right' | 'bottom-left' | 'bottom-center' | 'top-right' | 'top-left' | 'top-center'"
      }
    },
    {
      "name": "ToastViewport",
      "importPath": "tenda-components",
      "props": [
        {
          "name": "position",
          "type": "ToastPosition",
          "required": false,
          "default": "'bottom-right'"
        }
      ]
    },
    {
      "name": "Tooltip",
      "importPath": "tenda-components",
      "props": [
        { "name": "content", "type": "string", "required": true },
        { "name": "children", "type": "React.ReactNode", "required": true },
        { "name": "side", "type": "TooltipSide", "required": false, "default": "'top'" },
        { "name": "size", "type": "TooltipSize", "required": false, "default": "'default'" },
        { "name": "delayDuration", "type": "number", "required": false, "default": "300" },
        { "name": "colorScheme", "type": "ColorScheme", "required": false, "default": "'auto'" }
      ],
      "subTypes": {
        "TooltipSide": "'top' | 'bottom' | 'left' | 'right'",
        "TooltipSize": "'default' | 'compact'",
        "ColorScheme": "'auto' | 'dark' | 'light'"
      }
    },
    {
      "name": "TreeView",
      "importPath": "tenda-components",
      "props": [
        { "name": "nodes", "type": "TreeViewNode[]", "required": true },
        { "name": "size", "type": "TreeViewSize", "required": false, "default": "'md'" },
        { "name": "showIcons", "type": "boolean", "required": false, "default": "true" },
        { "name": "className", "type": "string", "required": false },
        { "name": "onNodeClick", "type": "(node: TreeViewNode) => void", "required": false }
      ],
      "subTypes": {
        "TreeViewNode": "{ id: string; label: string; type: 'folder' | 'file'; icon?: boolean; children?: TreeViewNode[] }",
        "TreeViewSize": "'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "BarChart",
      "importPath": "tenda-components",
      "props": [
        { "name": "data", "type": "BarChartDatum[]", "required": true },
        { "name": "datasets", "type": "BarChartDataset[]", "required": false, "default": "[]" },
        {
          "name": "variant",
          "type": "'single' | 'multi' | 'stacked'",
          "required": false,
          "default": "'single'"
        },
        { "name": "horizontal", "type": "boolean", "required": false, "default": "false" },
        { "name": "barWidth", "type": "BarChartBarWidth", "required": false, "default": "'md'" },
        { "name": "barGap", "type": "string | number", "required": false, "default": "2" },
        { "name": "height", "type": "number", "required": false, "default": "280" },
        { "name": "leftMargin", "type": "number", "required": false, "default": "0" },
        { "name": "rightMargin", "type": "number", "required": false, "default": "0" },
        { "name": "gridColor", "type": "string", "required": false },
        { "name": "showGrid", "type": "boolean", "required": false, "default": "true" },
        { "name": "hideLegends", "type": "boolean", "required": false, "default": "false" },
        { "name": "formatValue", "type": "(value: number) => string", "required": false },
        { "name": "formatLabel", "type": "(label: string) => string", "required": false },
        { "name": "yTicks", "type": "number[]", "required": false },
        { "name": "yDomain", "type": "[number, number] | ['auto', 'auto']", "required": false }
      ],
      "subTypes": {
        "BarChartDataset": "{ name: string; dataKey: string; color?: string }",
        "BarChartDatum": "{ name: string; color?: string; [key: string]: string | number | undefined }",
        "BarChartBarWidth": "'xxs' | 'xs' | 'sm' | 'md' | 'lg'"
      }
    },
    {
      "name": "LineChart",
      "importPath": "tenda-components",
      "props": [
        { "name": "data", "type": "LineChartDatum[]", "required": true },
        { "name": "datasets", "type": "LineChartDataset[]", "required": true },
        { "name": "height", "type": "number", "required": false, "default": "280" },
        { "name": "gridColor", "type": "string", "required": false },
        { "name": "showGrid", "type": "boolean", "required": false, "default": "true" },
        { "name": "hideLegends", "type": "boolean", "required": false, "default": "false" },
        { "name": "formatValue", "type": "(value: number) => string", "required": false },
        { "name": "formatLabel", "type": "(label: string) => string", "required": false },
        { "name": "yTicks", "type": "number[]", "required": false },
        { "name": "yDomain", "type": "[number, number] | ['auto', 'auto']", "required": false },
        { "name": "xDataKey", "type": "string", "required": false, "default": "'name'" },
        { "name": "leftMargin", "type": "number", "required": false, "default": "0" },
        { "name": "rightMargin", "type": "number", "required": false, "default": "0" },
        { "name": "curveType", "type": "CurveType", "required": false, "default": "'monotone'" },
        { "name": "showDots", "type": "boolean", "required": false, "default": "true" }
      ],
      "subTypes": {
        "LineChartDataset": "{ name: string; dataKey: string; color?: string; strokeWidth?: number; type?: CurveType; hideDots?: boolean }",
        "LineChartDatum": "{ name: string; [key: string]: string | number | undefined }"
      }
    },
    {
      "name": "PieChart",
      "importPath": "tenda-components",
      "props": [
        { "name": "data", "type": "PieChartDatum[]", "required": true },
        { "name": "variant", "type": "'pie' | 'donut'", "required": false, "default": "'pie'" },
        { "name": "height", "type": "number", "required": false, "default": "280" },
        { "name": "fontSizeLabelPie", "type": "number", "required": false, "default": "12" },
        { "name": "fontSizeTitleDonut", "type": "number", "required": false, "default": "12" },
        { "name": "fontSizeSubtitleDonut", "type": "number", "required": false, "default": "11" },
        { "name": "innerRadius", "type": "number | string", "required": false },
        { "name": "outerRadius", "type": "number | string", "required": false },
        { "name": "paddingAngle", "type": "number", "required": false, "default": "0" },
        { "name": "hideLegends", "type": "boolean", "required": false, "default": "false" },
        { "name": "showLabels", "type": "boolean", "required": false },
        { "name": "formatDonutTitle", "type": "(label: string) => string", "required": false },
        { "name": "formatDonutValue", "type": "(value: number) => string", "required": false },
        { "name": "formatDonutPercent", "type": "(percent: number) => string", "required": false },
        { "name": "formatValue", "type": "(value: number) => string", "required": false },
        { "name": "formatLabel", "type": "(label: string) => string", "required": false }
      ],
      "subTypes": {
        "PieChartDatum": "{ name: string; value: number; color?: string }"
      }
    },
    {
      "name": "LineBarAreaChart",
      "importPath": "tenda-components",
      "props": [
        { "name": "data", "type": "LineBarAreaChartDatum[]", "required": true },
        { "name": "line", "type": "LineBarAreaChartLine", "required": true },
        { "name": "bar", "type": "LineBarAreaChartBar | LineBarAreaChartBar[]", "required": true },
        { "name": "area", "type": "LineBarAreaChartArea", "required": false },
        { "name": "barVariant", "type": "'single' | 'multi'", "required": false },
        { "name": "scatter", "type": "LineBarAreaChartScatter", "required": false },
        { "name": "height", "type": "number", "required": false, "default": "280" },
        { "name": "gridColor", "type": "string", "required": false },
        { "name": "showGrid", "type": "boolean", "required": false, "default": "true" },
        { "name": "hideLegends", "type": "boolean", "required": false, "default": "false" },
        { "name": "formatValue", "type": "(value: number) => string", "required": false },
        { "name": "formatLabel", "type": "(label: string) => string", "required": false },
        { "name": "yTicks", "type": "number[]", "required": false },
        { "name": "yDomain", "type": "[number, number] | ['auto', 'auto']", "required": false },
        { "name": "xDataKey", "type": "string", "required": false, "default": "'name'" },
        { "name": "leftMargin", "type": "number", "required": false, "default": "0" },
        { "name": "rightMargin", "type": "number", "required": false, "default": "0" },
        { "name": "showDots", "type": "boolean", "required": false, "default": "true" }
      ],
      "subTypes": {
        "LineBarAreaChartDatum": "{ name: string; [key: string]: string | number | undefined }",
        "LineBarAreaChartDatasetBase": "{ name: string; dataKey: string; color?: string }",
        "LineBarAreaChartLine": "LineBarAreaChartDatasetBase & { strokeWidth?: number; type?: CurveType; hideDots?: boolean }",
        "LineBarAreaChartArea": "LineBarAreaChartDatasetBase & { fillOpacity?: number; type?: CurveType }",
        "LineBarAreaChartBar": "LineBarAreaChartDatasetBase & { barSize?: number; radius?: [number, number, number, number] }",
        "LineBarAreaChartScatter": "LineBarAreaChartDatasetBase"
      }
    }
  ]
}
