@vaneui/ui 1.4.2 → 1.4.3-alpha.20260930171045.899e2fd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/dist/cjs/components/ui/alert/AlertCategories.cjs +1 -0
- package/dist/cjs/components/ui/alert/AlertCategories.cjs.map +1 -1
- package/dist/cjs/components/ui/alert/alertDefaults.cjs +2 -1
- package/dist/cjs/components/ui/alert/alertDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/alert/defaultAlertTheme.cjs +3 -1
- package/dist/cjs/components/ui/alert/defaultAlertTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/button/Button.cjs +1 -1
- package/dist/cjs/components/ui/button/Button.cjs.map +1 -1
- package/dist/cjs/components/ui/card/Card.cjs +14 -2
- package/dist/cjs/components/ui/card/Card.cjs.map +1 -1
- package/dist/cjs/components/ui/card/defaultCardTheme.cjs +6 -1
- package/dist/cjs/components/ui/card/defaultCardTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/checkbox/Checkbox.cjs +9 -2
- package/dist/cjs/components/ui/checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/ui/checkbox/CheckboxCategories.cjs +2 -1
- package/dist/cjs/components/ui/checkbox/CheckboxCategories.cjs.map +1 -1
- package/dist/cjs/components/ui/checkbox/defaultCheckboxWrapperTheme.cjs +3 -0
- package/dist/cjs/components/ui/checkbox/defaultCheckboxWrapperTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/chip/Chip.cjs +2 -1
- package/dist/cjs/components/ui/chip/Chip.cjs.map +1 -1
- package/dist/cjs/components/ui/classes/appearanceClasses.cjs +2 -0
- package/dist/cjs/components/ui/classes/appearanceClasses.cjs.map +1 -1
- package/dist/cjs/components/ui/field/Field.cjs +42 -3
- package/dist/cjs/components/ui/field/Field.cjs.map +1 -1
- package/dist/cjs/components/ui/field/FieldContext.cjs +4 -1
- package/dist/cjs/components/ui/field/FieldContext.cjs.map +1 -1
- package/dist/cjs/components/ui/iconButton/IconButton.cjs +1 -1
- package/dist/cjs/components/ui/iconButton/IconButton.cjs.map +1 -1
- package/dist/cjs/components/ui/input/defaultInputTheme.cjs +1 -1
- package/dist/cjs/components/ui/input/defaultInputTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/label/defaultLabelTheme.cjs +1 -1
- package/dist/cjs/components/ui/label/defaultLabelTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/menu/Menu.cjs +18 -8
- package/dist/cjs/components/ui/menu/Menu.cjs.map +1 -1
- package/dist/cjs/components/ui/menu/MenuContext.cjs.map +1 -1
- package/dist/cjs/components/ui/menu/MenuItem.cjs +2 -9
- package/dist/cjs/components/ui/menu/MenuItem.cjs.map +1 -1
- package/dist/cjs/components/ui/menu/menuPopupDefaults.cjs +1 -0
- package/dist/cjs/components/ui/menu/menuPopupDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/modal/Modal.cjs +3 -2
- package/dist/cjs/components/ui/modal/Modal.cjs.map +1 -1
- package/dist/cjs/components/ui/modal/modalCloseButtonDefaults.cjs +3 -0
- package/dist/cjs/components/ui/modal/modalCloseButtonDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/navLink/NavLinkLabelCategories.cjs +1 -1
- package/dist/cjs/components/ui/navLink/NavLinkLabelCategories.cjs.map +1 -1
- package/dist/cjs/components/ui/navLink/defaultNavLinkLabelTheme.cjs +3 -1
- package/dist/cjs/components/ui/navLink/defaultNavLinkLabelTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/navLink/navLinkLabelDefaults.cjs +3 -1
- package/dist/cjs/components/ui/navLink/navLinkLabelDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/popup/Popup.cjs +9 -9
- package/dist/cjs/components/ui/popup/Popup.cjs.map +1 -1
- package/dist/cjs/components/ui/popup/popupDefaults.cjs +1 -0
- package/dist/cjs/components/ui/popup/popupDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/props/categoryBuilders.cjs +2 -0
- package/dist/cjs/components/ui/props/categoryBuilders.cjs.map +1 -1
- package/dist/cjs/components/ui/radio/Radio.cjs +4 -3
- package/dist/cjs/components/ui/radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/ui/radio/RadioGroup.cjs +3 -2
- package/dist/cjs/components/ui/radio/RadioGroup.cjs.map +1 -1
- package/dist/cjs/components/ui/radio/RadioGroupContext.cjs.map +1 -1
- package/dist/cjs/components/ui/radio/defaultRadioTheme.cjs +1 -2
- package/dist/cjs/components/ui/radio/defaultRadioTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/radio/defaultRadioWrapperTheme.cjs +3 -0
- package/dist/cjs/components/ui/radio/defaultRadioWrapperTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/select/Select.cjs +15 -1
- package/dist/cjs/components/ui/select/Select.cjs.map +1 -1
- package/dist/cjs/components/ui/select/SelectWrapperCategories.cjs +1 -1
- package/dist/cjs/components/ui/select/SelectWrapperCategories.cjs.map +1 -1
- package/dist/cjs/components/ui/select/defaultSelectTheme.cjs +1 -1
- package/dist/cjs/components/ui/select/defaultSelectTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/select/defaultSelectWrapperTheme.cjs +3 -1
- package/dist/cjs/components/ui/select/defaultSelectWrapperTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/switch/Switch.cjs +12 -3
- package/dist/cjs/components/ui/switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/ui/switch/defaultSwitchWrapperTheme.cjs +3 -0
- package/dist/cjs/components/ui/switch/defaultSwitchWrapperTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/table/TableCategories.cjs +1 -0
- package/dist/cjs/components/ui/table/TableCategories.cjs.map +1 -1
- package/dist/cjs/components/ui/table/defaultTableTheme.cjs +3 -1
- package/dist/cjs/components/ui/table/defaultTableTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/table/tableDefaults.cjs +2 -1
- package/dist/cjs/components/ui/table/tableDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/textarea/defaultTextareaTheme.cjs +1 -1
- package/dist/cjs/components/ui/textarea/defaultTextareaTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/appearance/disabledClassMapper.cjs +8 -1
- package/dist/cjs/components/ui/theme/appearance/disabledClassMapper.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/appearance/disabledOpacityClassMapper.cjs +1 -1
- package/dist/cjs/components/ui/theme/appearance/disabledOpacityClassMapper.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/appearance/readOnlyClassMapper.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/appearance/statusClassMapper.cjs +2 -2
- package/dist/cjs/components/ui/theme/appearance/statusClassMapper.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/common/ComponentTheme.cjs +3 -2
- package/dist/cjs/components/ui/theme/common/ComponentTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/common/appearanceClassMappers.cjs +2 -0
- package/dist/cjs/components/ui/theme/common/appearanceClassMappers.cjs.map +1 -1
- package/dist/cjs/components/ui/theme/layout/transitionClassMapper.cjs +2 -2
- package/dist/cjs/components/ui/theme/layout/transitionClassMapper.cjs.map +1 -1
- package/dist/cjs/components/ui/tooltip/tooltipDefaults.cjs +1 -0
- package/dist/cjs/components/ui/tooltip/tooltipDefaults.cjs.map +1 -1
- package/dist/cjs/components/ui/typography/link/Link.cjs +4 -1
- package/dist/cjs/components/ui/typography/link/Link.cjs.map +1 -1
- package/dist/cjs/components/ui/typography/link/LinkCategories.cjs +1 -1
- package/dist/cjs/components/ui/typography/link/LinkCategories.cjs.map +1 -1
- package/dist/cjs/components/ui/typography/link/defaultLinkTheme.cjs +8 -2
- package/dist/cjs/components/ui/typography/link/defaultLinkTheme.cjs.map +1 -1
- package/dist/cjs/components/ui/typography/listItem/ListItem.cjs +0 -2
- package/dist/cjs/components/ui/typography/listItem/ListItem.cjs.map +1 -1
- package/dist/esm/components/ui/alert/AlertCategories.mjs +2 -1
- package/dist/esm/components/ui/alert/AlertCategories.mjs.map +1 -1
- package/dist/esm/components/ui/alert/alertDefaults.mjs +2 -1
- package/dist/esm/components/ui/alert/alertDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/alert/defaultAlertTheme.mjs +3 -1
- package/dist/esm/components/ui/alert/defaultAlertTheme.mjs.map +1 -1
- package/dist/esm/components/ui/button/Button.mjs +1 -1
- package/dist/esm/components/ui/button/Button.mjs.map +1 -1
- package/dist/esm/components/ui/card/Card.mjs +15 -3
- package/dist/esm/components/ui/card/Card.mjs.map +1 -1
- package/dist/esm/components/ui/card/defaultCardTheme.mjs +6 -1
- package/dist/esm/components/ui/card/defaultCardTheme.mjs.map +1 -1
- package/dist/esm/components/ui/checkbox/Checkbox.mjs +10 -3
- package/dist/esm/components/ui/checkbox/Checkbox.mjs.map +1 -1
- package/dist/esm/components/ui/checkbox/CheckboxCategories.mjs +3 -2
- package/dist/esm/components/ui/checkbox/CheckboxCategories.mjs.map +1 -1
- package/dist/esm/components/ui/checkbox/defaultCheckboxWrapperTheme.mjs +3 -0
- package/dist/esm/components/ui/checkbox/defaultCheckboxWrapperTheme.mjs.map +1 -1
- package/dist/esm/components/ui/chip/Chip.mjs +2 -1
- package/dist/esm/components/ui/chip/Chip.mjs.map +1 -1
- package/dist/esm/components/ui/classes/appearanceClasses.mjs +2 -1
- package/dist/esm/components/ui/classes/appearanceClasses.mjs.map +1 -1
- package/dist/esm/components/ui/field/Field.mjs +42 -3
- package/dist/esm/components/ui/field/Field.mjs.map +1 -1
- package/dist/esm/components/ui/field/FieldContext.mjs +4 -1
- package/dist/esm/components/ui/field/FieldContext.mjs.map +1 -1
- package/dist/esm/components/ui/iconButton/IconButton.mjs +1 -1
- package/dist/esm/components/ui/iconButton/IconButton.mjs.map +1 -1
- package/dist/esm/components/ui/input/defaultInputTheme.mjs +2 -2
- package/dist/esm/components/ui/input/defaultInputTheme.mjs.map +1 -1
- package/dist/esm/components/ui/label/defaultLabelTheme.mjs +1 -1
- package/dist/esm/components/ui/label/defaultLabelTheme.mjs.map +1 -1
- package/dist/esm/components/ui/menu/Menu.mjs +18 -8
- package/dist/esm/components/ui/menu/Menu.mjs.map +1 -1
- package/dist/esm/components/ui/menu/MenuContext.mjs.map +1 -1
- package/dist/esm/components/ui/menu/MenuItem.mjs +2 -9
- package/dist/esm/components/ui/menu/MenuItem.mjs.map +1 -1
- package/dist/esm/components/ui/menu/menuPopupDefaults.mjs +1 -0
- package/dist/esm/components/ui/menu/menuPopupDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/modal/Modal.mjs +3 -2
- package/dist/esm/components/ui/modal/Modal.mjs.map +1 -1
- package/dist/esm/components/ui/modal/modalCloseButtonDefaults.mjs +3 -0
- package/dist/esm/components/ui/modal/modalCloseButtonDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/navLink/NavLinkLabelCategories.mjs +1 -1
- package/dist/esm/components/ui/navLink/NavLinkLabelCategories.mjs.map +1 -1
- package/dist/esm/components/ui/navLink/defaultNavLinkLabelTheme.mjs +3 -1
- package/dist/esm/components/ui/navLink/defaultNavLinkLabelTheme.mjs.map +1 -1
- package/dist/esm/components/ui/navLink/navLinkLabelDefaults.mjs +3 -1
- package/dist/esm/components/ui/navLink/navLinkLabelDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/popup/Popup.mjs +9 -9
- package/dist/esm/components/ui/popup/Popup.mjs.map +1 -1
- package/dist/esm/components/ui/popup/popupDefaults.mjs +1 -0
- package/dist/esm/components/ui/popup/popupDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/props/categoryBuilders.mjs +2 -1
- package/dist/esm/components/ui/props/categoryBuilders.mjs.map +1 -1
- package/dist/esm/components/ui/radio/Radio.mjs +4 -3
- package/dist/esm/components/ui/radio/Radio.mjs.map +1 -1
- package/dist/esm/components/ui/radio/RadioGroup.mjs +4 -3
- package/dist/esm/components/ui/radio/RadioGroup.mjs.map +1 -1
- package/dist/esm/components/ui/radio/RadioGroupContext.mjs.map +1 -1
- package/dist/esm/components/ui/radio/defaultRadioTheme.mjs +2 -3
- package/dist/esm/components/ui/radio/defaultRadioTheme.mjs.map +1 -1
- package/dist/esm/components/ui/radio/defaultRadioWrapperTheme.mjs +3 -0
- package/dist/esm/components/ui/radio/defaultRadioWrapperTheme.mjs.map +1 -1
- package/dist/esm/components/ui/select/Select.mjs +16 -2
- package/dist/esm/components/ui/select/Select.mjs.map +1 -1
- package/dist/esm/components/ui/select/SelectWrapperCategories.mjs +1 -1
- package/dist/esm/components/ui/select/SelectWrapperCategories.mjs.map +1 -1
- package/dist/esm/components/ui/select/defaultSelectTheme.mjs +2 -2
- package/dist/esm/components/ui/select/defaultSelectTheme.mjs.map +1 -1
- package/dist/esm/components/ui/select/defaultSelectWrapperTheme.mjs +3 -1
- package/dist/esm/components/ui/select/defaultSelectWrapperTheme.mjs.map +1 -1
- package/dist/esm/components/ui/switch/Switch.mjs +12 -3
- package/dist/esm/components/ui/switch/Switch.mjs.map +1 -1
- package/dist/esm/components/ui/switch/defaultSwitchWrapperTheme.mjs +3 -0
- package/dist/esm/components/ui/switch/defaultSwitchWrapperTheme.mjs.map +1 -1
- package/dist/esm/components/ui/table/TableCategories.mjs +2 -1
- package/dist/esm/components/ui/table/TableCategories.mjs.map +1 -1
- package/dist/esm/components/ui/table/defaultTableTheme.mjs +3 -1
- package/dist/esm/components/ui/table/defaultTableTheme.mjs.map +1 -1
- package/dist/esm/components/ui/table/tableDefaults.mjs +2 -1
- package/dist/esm/components/ui/table/tableDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/textarea/defaultTextareaTheme.mjs +2 -2
- package/dist/esm/components/ui/textarea/defaultTextareaTheme.mjs.map +1 -1
- package/dist/esm/components/ui/theme/appearance/disabledClassMapper.mjs +8 -2
- package/dist/esm/components/ui/theme/appearance/disabledClassMapper.mjs.map +1 -1
- package/dist/esm/components/ui/theme/appearance/disabledOpacityClassMapper.mjs +1 -1
- package/dist/esm/components/ui/theme/appearance/disabledOpacityClassMapper.mjs.map +1 -1
- package/dist/esm/components/ui/theme/appearance/readOnlyClassMapper.mjs.map +1 -1
- package/dist/esm/components/ui/theme/appearance/statusClassMapper.mjs +2 -2
- package/dist/esm/components/ui/theme/appearance/statusClassMapper.mjs.map +1 -1
- package/dist/esm/components/ui/theme/common/ComponentTheme.mjs +3 -2
- package/dist/esm/components/ui/theme/common/ComponentTheme.mjs.map +1 -1
- package/dist/esm/components/ui/theme/common/appearanceClassMappers.mjs +3 -2
- package/dist/esm/components/ui/theme/common/appearanceClassMappers.mjs.map +1 -1
- package/dist/esm/components/ui/theme/layout/transitionClassMapper.mjs +2 -2
- package/dist/esm/components/ui/theme/layout/transitionClassMapper.mjs.map +1 -1
- package/dist/esm/components/ui/tooltip/tooltipDefaults.mjs +1 -0
- package/dist/esm/components/ui/tooltip/tooltipDefaults.mjs.map +1 -1
- package/dist/esm/components/ui/typography/link/Link.mjs +4 -1
- package/dist/esm/components/ui/typography/link/Link.mjs.map +1 -1
- package/dist/esm/components/ui/typography/link/LinkCategories.mjs +1 -1
- package/dist/esm/components/ui/typography/link/LinkCategories.mjs.map +1 -1
- package/dist/esm/components/ui/typography/link/defaultLinkTheme.mjs +8 -2
- package/dist/esm/components/ui/typography/link/defaultLinkTheme.mjs.map +1 -1
- package/dist/esm/components/ui/typography/listItem/ListItem.mjs +0 -2
- package/dist/esm/components/ui/typography/listItem/ListItem.mjs.map +1 -1
- package/dist/types/components/ui/alert/Alert.d.cts +1 -1
- package/dist/types/components/ui/alert/Alert.d.mts +1 -1
- package/dist/types/components/ui/alert/Alert.d.ts +1 -1
- package/dist/types/components/ui/alert/AlertCategories.d.cts +1 -1
- package/dist/types/components/ui/alert/AlertCategories.d.mts +1 -1
- package/dist/types/components/ui/alert/AlertCategories.d.ts +1 -1
- package/dist/types/components/ui/alert/AlertProps.d.cts +2 -2
- package/dist/types/components/ui/alert/AlertProps.d.mts +2 -2
- package/dist/types/components/ui/alert/AlertProps.d.ts +2 -2
- package/dist/types/components/ui/alert/AlertTheme.d.cts +2 -1
- package/dist/types/components/ui/alert/AlertTheme.d.mts +2 -1
- package/dist/types/components/ui/alert/AlertTheme.d.ts +2 -1
- package/dist/types/components/ui/card/CardTheme.d.cts +1 -0
- package/dist/types/components/ui/card/CardTheme.d.mts +1 -0
- package/dist/types/components/ui/card/CardTheme.d.ts +1 -0
- package/dist/types/components/ui/checkbox/CheckboxCategories.d.cts +1 -1
- package/dist/types/components/ui/checkbox/CheckboxCategories.d.mts +1 -1
- package/dist/types/components/ui/checkbox/CheckboxCategories.d.ts +1 -1
- package/dist/types/components/ui/checkbox/CheckboxWrapperTheme.d.cts +2 -1
- package/dist/types/components/ui/checkbox/CheckboxWrapperTheme.d.mts +2 -1
- package/dist/types/components/ui/checkbox/CheckboxWrapperTheme.d.ts +2 -1
- package/dist/types/components/ui/classes/appearanceClasses.d.cts +2 -0
- package/dist/types/components/ui/classes/appearanceClasses.d.mts +2 -0
- package/dist/types/components/ui/classes/appearanceClasses.d.ts +2 -0
- package/dist/types/components/ui/field/FieldContext.d.cts +7 -0
- package/dist/types/components/ui/field/FieldContext.d.mts +7 -0
- package/dist/types/components/ui/field/FieldContext.d.ts +7 -0
- package/dist/types/components/ui/menu/MenuContext.d.cts +4 -0
- package/dist/types/components/ui/menu/MenuContext.d.mts +4 -0
- package/dist/types/components/ui/menu/MenuContext.d.ts +4 -0
- package/dist/types/components/ui/navLink/NavLinkLabelCategories.d.cts +2 -2
- package/dist/types/components/ui/navLink/NavLinkLabelCategories.d.mts +2 -2
- package/dist/types/components/ui/navLink/NavLinkLabelCategories.d.ts +2 -2
- package/dist/types/components/ui/navLink/NavLinkLabelProps.d.cts +2 -2
- package/dist/types/components/ui/navLink/NavLinkLabelProps.d.mts +2 -2
- package/dist/types/components/ui/navLink/NavLinkLabelProps.d.ts +2 -2
- package/dist/types/components/ui/navLink/NavLinkLabelTheme.d.cts +2 -0
- package/dist/types/components/ui/navLink/NavLinkLabelTheme.d.mts +2 -0
- package/dist/types/components/ui/navLink/NavLinkLabelTheme.d.ts +2 -0
- package/dist/types/components/ui/props/categoryBuilders.d.cts +1 -0
- package/dist/types/components/ui/props/categoryBuilders.d.mts +1 -0
- package/dist/types/components/ui/props/categoryBuilders.d.ts +1 -0
- package/dist/types/components/ui/radio/RadioCategories.d.cts +1 -1
- package/dist/types/components/ui/radio/RadioCategories.d.mts +1 -1
- package/dist/types/components/ui/radio/RadioCategories.d.ts +1 -1
- package/dist/types/components/ui/radio/RadioGroupContext.d.cts +3 -0
- package/dist/types/components/ui/radio/RadioGroupContext.d.mts +3 -0
- package/dist/types/components/ui/radio/RadioGroupContext.d.ts +3 -0
- package/dist/types/components/ui/radio/RadioWrapperTheme.d.cts +2 -1
- package/dist/types/components/ui/radio/RadioWrapperTheme.d.mts +2 -1
- package/dist/types/components/ui/radio/RadioWrapperTheme.d.ts +2 -1
- package/dist/types/components/ui/select/SelectWrapperCategories.d.cts +2 -2
- package/dist/types/components/ui/select/SelectWrapperCategories.d.mts +2 -2
- package/dist/types/components/ui/select/SelectWrapperCategories.d.ts +2 -2
- package/dist/types/components/ui/select/SelectWrapperProps.d.cts +2 -2
- package/dist/types/components/ui/select/SelectWrapperProps.d.mts +2 -2
- package/dist/types/components/ui/select/SelectWrapperProps.d.ts +2 -2
- package/dist/types/components/ui/select/SelectWrapperTheme.d.cts +2 -1
- package/dist/types/components/ui/select/SelectWrapperTheme.d.mts +2 -1
- package/dist/types/components/ui/select/SelectWrapperTheme.d.ts +2 -1
- package/dist/types/components/ui/switch/SwitchCategories.d.cts +1 -1
- package/dist/types/components/ui/switch/SwitchCategories.d.mts +1 -1
- package/dist/types/components/ui/switch/SwitchCategories.d.ts +1 -1
- package/dist/types/components/ui/switch/SwitchWrapperTheme.d.cts +2 -1
- package/dist/types/components/ui/switch/SwitchWrapperTheme.d.mts +2 -1
- package/dist/types/components/ui/switch/SwitchWrapperTheme.d.ts +2 -1
- package/dist/types/components/ui/table/Table.d.cts +1 -1
- package/dist/types/components/ui/table/Table.d.mts +1 -1
- package/dist/types/components/ui/table/Table.d.ts +1 -1
- package/dist/types/components/ui/table/TableCategories.d.cts +1 -1
- package/dist/types/components/ui/table/TableCategories.d.mts +1 -1
- package/dist/types/components/ui/table/TableCategories.d.ts +1 -1
- package/dist/types/components/ui/table/TableProps.d.cts +2 -2
- package/dist/types/components/ui/table/TableProps.d.mts +2 -2
- package/dist/types/components/ui/table/TableProps.d.ts +2 -2
- package/dist/types/components/ui/table/TableTheme.d.cts +2 -1
- package/dist/types/components/ui/table/TableTheme.d.mts +2 -1
- package/dist/types/components/ui/table/TableTheme.d.ts +2 -1
- package/dist/types/components/ui/theme/appearance/disabledClassMapper.d.cts +4 -0
- package/dist/types/components/ui/theme/appearance/disabledClassMapper.d.mts +4 -0
- package/dist/types/components/ui/theme/appearance/disabledClassMapper.d.ts +4 -0
- package/dist/types/components/ui/theme/appearance/index.d.cts +1 -1
- package/dist/types/components/ui/theme/appearance/index.d.mts +1 -1
- package/dist/types/components/ui/theme/appearance/index.d.ts +1 -1
- package/dist/types/components/ui/theme/appearance/readOnlyClassMapper.d.cts +1 -1
- package/dist/types/components/ui/theme/appearance/readOnlyClassMapper.d.mts +1 -1
- package/dist/types/components/ui/theme/appearance/readOnlyClassMapper.d.ts +1 -1
- package/dist/types/components/ui/theme/appearance/statusClassMapper.d.cts +1 -1
- package/dist/types/components/ui/theme/appearance/statusClassMapper.d.mts +1 -1
- package/dist/types/components/ui/theme/appearance/statusClassMapper.d.ts +1 -1
- package/dist/types/components/ui/theme/common/appearanceClassMappers.d.cts +2 -0
- package/dist/types/components/ui/theme/common/appearanceClassMappers.d.mts +2 -0
- package/dist/types/components/ui/theme/common/appearanceClassMappers.d.ts +2 -0
- package/dist/types/components/ui/theme/common/index.d.cts +1 -1
- package/dist/types/components/ui/theme/common/index.d.mts +1 -1
- package/dist/types/components/ui/theme/common/index.d.ts +1 -1
- package/dist/types/components/ui/theme/layout/transitionClassMapper.d.cts +1 -1
- package/dist/types/components/ui/theme/layout/transitionClassMapper.d.mts +1 -1
- package/dist/types/components/ui/theme/layout/transitionClassMapper.d.ts +1 -1
- package/dist/types/components/ui/typography/link/LinkCategories.d.cts +3 -3
- package/dist/types/components/ui/typography/link/LinkCategories.d.mts +3 -3
- package/dist/types/components/ui/typography/link/LinkCategories.d.ts +3 -3
- package/dist/types/components/ui/typography/link/LinkTheme.d.cts +4 -0
- package/dist/types/components/ui/typography/link/LinkTheme.d.mts +4 -0
- package/dist/types/components/ui/typography/link/LinkTheme.d.ts +4 -0
- package/dist/ui.css +1 -1
- package/dist/vars.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCategories.mjs","sources":["../../../../../src/components/ui/table/TableCategories.ts"],"sourcesContent":["import {\n VISUAL_CORE,\n VARIANT,\n BORDER,\n WIDTH,\n MARGIN,\n TEXT_ALIGN,\n RESPONSIVE,\n} from \"../props/categoryBuilders\";\n\n// No `shape`: border-radius has no effect on a border-collapse table, so the\n// rounded/pill/sharp props would be silently inert.\n/** Categories for the Table (`<table>`) component. */\nexport const TABLE_CATEGORIES = [\n 'size',\n ...VISUAL_CORE,\n ...VARIANT,\n ...BORDER,\n ...WIDTH,\n ...MARGIN,\n ...TEXT_ALIGN,\n 'hide',\n ...RESPONSIVE,\n] as const;\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"TableCategories.mjs","sources":["../../../../../src/components/ui/table/TableCategories.ts"],"sourcesContent":["import {\n VISUAL_CORE,\n VARIANT,\n BORDER,\n WIDTH,\n MARGIN,\n TEXT_ALIGN,\n FONT_FAMILY,\n RESPONSIVE,\n} from \"../props/categoryBuilders\";\n\n// No `shape`: border-radius has no effect on a border-collapse table, so the\n// rounded/pill/sharp props would be silently inert.\n/** Categories for the Table (`<table>`) component. */\nexport const TABLE_CATEGORIES = [\n 'size',\n ...VISUAL_CORE,\n ...VARIANT,\n ...BORDER,\n ...WIDTH,\n ...MARGIN,\n ...TEXT_ALIGN,\n ...FONT_FAMILY,\n 'hide',\n ...RESPONSIVE,\n] as const;\n"],"names":[],"mappings":";;AAcO,MAAM,gBAAA,GAAmB;AAAA,EAC9B,MAAA;AAAA,EACA,GAAG,WAAA;AAAA,EACH,GAAG,OAAA;AAAA,EACH,GAAG,MAAA;AAAA,EACH,GAAG,KAAA;AAAA,EACH,GAAG,MAAA;AAAA,EACH,GAAG,UAAA;AAAA,EACH,GAAG,WAAA;AAAA,EACH,MAAA;AAAA,EACA,GAAG;AACL;;;;"}
|
|
@@ -8,6 +8,7 @@ import { tableDefaults } from './tableDefaults.mjs';
|
|
|
8
8
|
import { MarginClassMapper } from '../theme/size/marginClassMapper.mjs';
|
|
9
9
|
import { BorderClassMapper } from '../theme/layout/borderClassMapper.mjs';
|
|
10
10
|
import { WidthClassMapper } from '../theme/layout/widthClassMapper.mjs';
|
|
11
|
+
import { FontFamilyClassMapper } from '../theme/typography/fontFamilyClassMapper.mjs';
|
|
11
12
|
import { TextAlignClassMapper } from '../theme/typography/textAlignClassMapper.mjs';
|
|
12
13
|
|
|
13
14
|
const defaultTableTheme = new ComponentTheme(
|
|
@@ -26,7 +27,8 @@ const defaultTableTheme = new ComponentTheme(
|
|
|
26
27
|
width: new WidthClassMapper()
|
|
27
28
|
},
|
|
28
29
|
typography: {
|
|
29
|
-
textAlign: new TextAlignClassMapper()
|
|
30
|
+
textAlign: new TextAlignClassMapper(),
|
|
31
|
+
fontFamily: new FontFamilyClassMapper()
|
|
30
32
|
}
|
|
31
33
|
},
|
|
32
34
|
tableDefaults,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultTableTheme.mjs","sources":["../../../../../src/components/ui/table/defaultTableTheme.ts"],"sourcesContent":["import { ComponentTheme, defaultLayoutClassMappers, borderAppearance } from \"../theme/common\";\nimport type { TableProps } from \"./TableProps\";\nimport type { TableTheme } from \"./TableTheme\";\nimport { TABLE_CATEGORIES } from \"./TableCategories\";\nimport { tableDefaults } from \"./tableDefaults\";\nimport { MarginClassMapper } from \"../theme/size\";\nimport { BorderClassMapper, WidthClassMapper } from \"../theme/layout\";\nimport { TextAlignClassMapper } from \"../theme/typography\";\n\nexport const defaultTableTheme = new ComponentTheme<TableProps, TableTheme>(\n \"table\",\n \"vane-table border-collapse\",\n {\n size: {\n margin: new MarginClassMapper(),\n },\n appearance: {\n border: borderAppearance,\n },\n layout: {\n ...defaultLayoutClassMappers,\n border: new BorderClassMapper(),\n width: new WidthClassMapper(),\n },\n typography: {\n textAlign: new TextAlignClassMapper(),\n },\n },\n tableDefaults,\n TABLE_CATEGORIES,\n undefined,\n 'layout'\n);\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaultTableTheme.mjs","sources":["../../../../../src/components/ui/table/defaultTableTheme.ts"],"sourcesContent":["import { ComponentTheme, defaultLayoutClassMappers, borderAppearance } from \"../theme/common\";\nimport type { TableProps } from \"./TableProps\";\nimport type { TableTheme } from \"./TableTheme\";\nimport { TABLE_CATEGORIES } from \"./TableCategories\";\nimport { tableDefaults } from \"./tableDefaults\";\nimport { MarginClassMapper } from \"../theme/size\";\nimport { BorderClassMapper, WidthClassMapper } from \"../theme/layout\";\nimport { TextAlignClassMapper, FontFamilyClassMapper } from \"../theme/typography\";\n\nexport const defaultTableTheme = new ComponentTheme<TableProps, TableTheme>(\n \"table\",\n \"vane-table border-collapse\",\n {\n size: {\n margin: new MarginClassMapper(),\n },\n appearance: {\n border: borderAppearance,\n },\n layout: {\n ...defaultLayoutClassMappers,\n border: new BorderClassMapper(),\n width: new WidthClassMapper(),\n },\n typography: {\n textAlign: new TextAlignClassMapper(),\n fontFamily: new FontFamilyClassMapper(),\n },\n },\n tableDefaults,\n TABLE_CATEGORIES,\n undefined,\n 'layout'\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;AASO,MAAM,oBAAoB,IAAI,cAAA;AAAA,EACnC,OAAA;AAAA,EACA,4BAAA;AAAA,EACA;AAAA,IACE,IAAA,EAAM;AAAA,MACJ,MAAA,EAAQ,IAAI,iBAAA;AAAkB,KAChC;AAAA,IACA,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,GAAG,yBAAA;AAAA,MACH,MAAA,EAAQ,IAAI,iBAAA,EAAkB;AAAA,MAC9B,KAAA,EAAO,IAAI,gBAAA;AAAiB,KAC9B;AAAA,IACA,UAAA,EAAY;AAAA,MACV,SAAA,EAAW,IAAI,oBAAA,EAAqB;AAAA,MACpC,UAAA,EAAY,IAAI,qBAAA;AAAsB;AACxC,GACF;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableDefaults.mjs","sources":["../../../../../src/components/ui/table/tableDefaults.ts"],"sourcesContent":["import type { TableProps } from \"./TableProps\";\n\n/** Default props for the Table component */\nexport const tableDefaults: Partial<TableProps> = {\n md: true,\n secondary: true,\n outline: true,\n wFull: true,\n noBorder: true,\n};\n"],"names":[],"mappings":"AAGO,MAAM,aAAA,GAAqC;AAAA,EAChD,EAAA,EAAI,IAAA;AAAA,EACJ,SAAA,EAAW,IAAA;AAAA,EACX,OAAA,EAAS,IAAA;AAAA,EACT,KAAA,EAAO,IAAA;AAAA,EACP,QAAA,EAAU;AACZ;;;;"}
|
|
1
|
+
{"version":3,"file":"tableDefaults.mjs","sources":["../../../../../src/components/ui/table/tableDefaults.ts"],"sourcesContent":["import type { TableProps } from \"./TableProps\";\n\n/** Default props for the Table component */\nexport const tableDefaults: Partial<TableProps> = {\n md: true,\n secondary: true,\n outline: true,\n wFull: true,\n noBorder: true,\n fontSans: true,\n};\n"],"names":[],"mappings":"AAGO,MAAM,aAAA,GAAqC;AAAA,EAChD,EAAA,EAAI,IAAA;AAAA,EACJ,SAAA,EAAW,IAAA;AAAA,EACX,OAAA,EAAS,IAAA;AAAA,EACT,KAAA,EAAO,IAAA;AAAA,EACP,QAAA,EAAU,IAAA;AAAA,EACV,QAAA,EAAU;AACZ;;;;"}
|
|
@@ -5,7 +5,7 @@ import '../theme/common/typographyClassMappers.mjs';
|
|
|
5
5
|
import { bgHoverAppearance } from '../theme/common/appearanceClassMappers.mjs';
|
|
6
6
|
import '../theme/appearance/shadowAppearanceClassMapper.mjs';
|
|
7
7
|
import { StatusClassMapper } from '../theme/appearance/statusClassMapper.mjs';
|
|
8
|
-
import {
|
|
8
|
+
import { DisabledVisualClassMapper } from '../theme/appearance/disabledClassMapper.mjs';
|
|
9
9
|
import { ReadOnlyClassMapper } from '../theme/appearance/readOnlyClassMapper.mjs';
|
|
10
10
|
import { INPUT_CATEGORIES } from '../input/InputCategories.mjs';
|
|
11
11
|
import { textareaDefaults } from './textareaDefaults.mjs';
|
|
@@ -19,7 +19,7 @@ const defaultTextareaTheme = new ComponentTheme(
|
|
|
19
19
|
...interactiveClassMappers.appearance,
|
|
20
20
|
background: bgHoverAppearance,
|
|
21
21
|
status: new StatusClassMapper(),
|
|
22
|
-
disabled: new
|
|
22
|
+
disabled: new DisabledVisualClassMapper(),
|
|
23
23
|
readOnly: new ReadOnlyClassMapper()
|
|
24
24
|
}
|
|
25
25
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultTextareaTheme.mjs","sources":["../../../../../src/components/ui/textarea/defaultTextareaTheme.ts"],"sourcesContent":["import { ComponentTheme, interactiveClassMappers, bgHoverAppearance } from \"../theme/common\";\nimport type { TextareaProps } from \"./TextareaProps\";\nimport { StatusClassMapper,
|
|
1
|
+
{"version":3,"file":"defaultTextareaTheme.mjs","sources":["../../../../../src/components/ui/textarea/defaultTextareaTheme.ts"],"sourcesContent":["import { ComponentTheme, interactiveClassMappers, bgHoverAppearance } from \"../theme/common\";\nimport type { TextareaProps } from \"./TextareaProps\";\nimport { StatusClassMapper, DisabledVisualClassMapper, ReadOnlyClassMapper } from \"../theme/appearance\";\nimport { INPUT_CATEGORIES } from \"../input/InputCategories\";\nimport type { InputTheme } from \"../input/InputTheme\";\nimport { textareaDefaults } from \"./textareaDefaults\";\n\n// Shares InputTheme and INPUT_CATEGORIES: a textarea is an input that wraps lines.\n// Its own base class carries the multi-line box and omits the trailing-icon\n// reservation `.vane-input[data-status=\"error\"]` makes for the overlaid alert icon.\n// No error icon here: the danger ring is the cue, so pair `invalid` with helper text.\nexport const defaultTextareaTheme = new ComponentTheme<TextareaProps, InputTheme>(\n \"textarea\",\n \"vane-textarea\",\n {\n ...interactiveClassMappers,\n appearance: {\n ...interactiveClassMappers.appearance,\n background: bgHoverAppearance,\n status: new StatusClassMapper(),\n disabled: new DisabledVisualClassMapper(),\n readOnly: new ReadOnlyClassMapper(),\n },\n },\n textareaDefaults,\n INPUT_CATEGORIES,\n () => \"textarea\",\n 'ui'\n);\n"],"names":[],"mappings":";;;;;;;;;;;;AAWO,MAAM,uBAAuB,IAAI,cAAA;AAAA,EACtC,UAAA;AAAA,EACA,eAAA;AAAA,EACA;AAAA,IACE,GAAG,uBAAA;AAAA,IACH,UAAA,EAAY;AAAA,MACV,GAAG,uBAAA,CAAwB,UAAA;AAAA,MAC3B,UAAA,EAAY,iBAAA;AAAA,MACZ,MAAA,EAAQ,IAAI,iBAAA,EAAkB;AAAA,MAC9B,QAAA,EAAU,IAAI,yBAAA,EAA0B;AAAA,MACxC,QAAA,EAAU,IAAI,mBAAA;AAAoB;AACpC,GACF;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,MAAM,UAAA;AAAA,EACN;AACF;;;;"}
|
|
@@ -4,7 +4,7 @@ class DisabledClassMapper extends BaseClassMapper {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
6
6
|
/** Disabled state - reduced opacity, not-allowed cursor, no pointer events */
|
|
7
|
-
this.disabled = "opacity-
|
|
7
|
+
this.disabled = "opacity-(--disabled-opacity) cursor-not-allowed pointer-events-none";
|
|
8
8
|
}
|
|
9
9
|
getClasses(extractedKeys) {
|
|
10
10
|
const value = extractedKeys?.disabled;
|
|
@@ -14,6 +14,12 @@ class DisabledClassMapper extends BaseClassMapper {
|
|
|
14
14
|
return [];
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
class DisabledVisualClassMapper extends DisabledClassMapper {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.disabled = "opacity-(--disabled-opacity) cursor-not-allowed";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
17
23
|
|
|
18
|
-
export { DisabledClassMapper };
|
|
24
|
+
export { DisabledClassMapper, DisabledVisualClassMapper };
|
|
19
25
|
//# sourceMappingURL=disabledClassMapper.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disabledClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/disabledClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, DisabledKey } from \"../../props\";\n\n/**\n * DisabledClassMapper handles disabled state styling for interactive components.\n * Applies reduced opacity, not-allowed cursor, and disables pointer events.\n */\nexport class DisabledClassMapper extends BaseClassMapper implements Record<DisabledKey, string> {\n /** Disabled state - reduced opacity, not-allowed cursor, no pointer events */\n disabled: string = \"opacity-
|
|
1
|
+
{"version":3,"file":"disabledClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/disabledClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, DisabledKey } from \"../../props\";\n\n/**\n * DisabledClassMapper handles disabled state styling for interactive components.\n * Applies reduced opacity, not-allowed cursor, and disables pointer events.\n */\nexport class DisabledClassMapper extends BaseClassMapper implements Record<DisabledKey, string> {\n /** Disabled state - reduced opacity, not-allowed cursor, no pointer events */\n disabled: string = \"opacity-(--disabled-opacity) cursor-not-allowed pointer-events-none\";\n\n getClasses(extractedKeys: CategoryProps): string[] {\n const value = extractedKeys?.disabled;\n\n if (value && value in this) {\n return [this[value as DisabledKey]];\n }\n\n return [];\n }\n}\n\n/** For elements whose own semantics block activation (native disabled fields, a disabled Link): pointer events stay on, so the cursor shows. */\nexport class DisabledVisualClassMapper extends DisabledClassMapper {\n disabled: string = \"opacity-(--disabled-opacity) cursor-not-allowed\";\n}\n"],"names":[],"mappings":";;AAOO,MAAM,4BAA4B,eAAA,CAAuD;AAAA,EAAzF,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEL;AAAA,IAAA,IAAA,CAAA,QAAA,GAAmB,qEAAA;AAAA,EAAA;AAAA,EAEnB,WAAW,aAAA,EAAwC;AACjD,IAAA,MAAM,QAAQ,aAAA,EAAe,QAAA;AAE7B,IAAA,IAAI,KAAA,IAAS,SAAS,IAAA,EAAM;AAC1B,MAAA,OAAO,CAAC,IAAA,CAAK,KAAoB,CAAC,CAAA;AAAA,IACpC;AAEA,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAGO,MAAM,kCAAkC,mBAAA,CAAoB;AAAA,EAA5D,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,IAAA,IAAA,CAAA,QAAA,GAAmB,iDAAA;AAAA,EAAA;AACrB;;;;"}
|
|
@@ -4,7 +4,7 @@ class DisabledOpacityClassMapper extends BaseClassMapper {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
6
6
|
/** Disabled state - reduced opacity only */
|
|
7
|
-
this.disabled = "opacity-
|
|
7
|
+
this.disabled = "opacity-(--disabled-opacity)";
|
|
8
8
|
}
|
|
9
9
|
getClasses(extractedKeys) {
|
|
10
10
|
const value = extractedKeys?.disabled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disabledOpacityClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/disabledOpacityClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, DisabledKey } from \"../../props\";\n\n/**\n * DisabledOpacityClassMapper applies only opacity for disabled state.\n * Used on wrapper/container elements so the entire control appears dimmed.\n */\nexport class DisabledOpacityClassMapper extends BaseClassMapper implements Record<DisabledKey, string> {\n /** Disabled state - reduced opacity only */\n disabled: string = \"opacity-
|
|
1
|
+
{"version":3,"file":"disabledOpacityClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/disabledOpacityClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, DisabledKey } from \"../../props\";\n\n/**\n * DisabledOpacityClassMapper applies only opacity for disabled state.\n * Used on wrapper/container elements so the entire control appears dimmed.\n */\nexport class DisabledOpacityClassMapper extends BaseClassMapper implements Record<DisabledKey, string> {\n /** Disabled state - reduced opacity only */\n disabled: string = \"opacity-(--disabled-opacity)\";\n\n getClasses(extractedKeys: CategoryProps): string[] {\n const value = extractedKeys?.disabled;\n\n if (value && value in this) {\n return [this[value as DisabledKey]];\n }\n\n return [];\n }\n}\n"],"names":[],"mappings":";;AAOO,MAAM,mCAAmC,eAAA,CAAuD;AAAA,EAAhG,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEL;AAAA,IAAA,IAAA,CAAA,QAAA,GAAmB,8BAAA;AAAA,EAAA;AAAA,EAEnB,WAAW,aAAA,EAAwC;AACjD,IAAA,MAAM,QAAQ,aAAA,EAAe,QAAA;AAE7B,IAAA,IAAI,KAAA,IAAS,SAAS,IAAA,EAAM;AAC1B,MAAA,OAAO,CAAC,IAAA,CAAK,KAAoB,CAAC,CAAA;AAAA,IACpC;AAEA,IAAA,OAAO,EAAC;AAAA,EACV;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readOnlyClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/readOnlyClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, ReadOnlyKey } from \"../../props\";\n\n/**\n * ReadOnlyClassMapper handles the read-only visual treatment for form controls.\n * Mirrors DisabledClassMapper but lighter (opacity-70 vs opacity
|
|
1
|
+
{"version":3,"file":"readOnlyClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/readOnlyClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, ReadOnlyKey } from \"../../props\";\n\n/**\n * ReadOnlyClassMapper handles the read-only visual treatment for form controls.\n * Mirrors DisabledClassMapper but lighter (opacity-70 vs --disabled-opacity) because a\n * read-only field is still focusable, selectable, and submittable. The opacity\n * and cursor live here as Tailwind classes (not a raw CSS rule) so they go\n * through the theme system like every other visual state.\n */\nexport class ReadOnlyClassMapper extends BaseClassMapper implements Record<ReadOnlyKey, string> {\n /** Read-only state - muted opacity + default cursor */\n readOnly: string = \"opacity-70 cursor-default\";\n\n getClasses(extractedKeys: CategoryProps): string[] {\n const value = extractedKeys?.readOnly;\n if (value && value in this) {\n return [this[value as ReadOnlyKey]];\n }\n return [];\n }\n}\n"],"names":[],"mappings":";;AAUO,MAAM,4BAA4B,eAAA,CAAuD;AAAA,EAAzF,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEL;AAAA,IAAA,IAAA,CAAA,QAAA,GAAmB,2BAAA;AAAA,EAAA;AAAA,EAEnB,WAAW,aAAA,EAAwC;AACjD,IAAA,MAAM,QAAQ,aAAA,EAAe,QAAA;AAC7B,IAAA,IAAI,KAAA,IAAS,SAAS,IAAA,EAAM;AAC1B,MAAA,OAAO,CAAC,IAAA,CAAK,KAAoB,CAAC,CAAA;AAAA,IACpC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AACF;;;;"}
|
|
@@ -3,8 +3,8 @@ import { BaseClassMapper } from '../common/BaseClassMapper.mjs';
|
|
|
3
3
|
class StatusClassMapper extends BaseClassMapper {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
6
|
-
/** Invalid state - danger border/ring
|
|
7
|
-
this.invalid = "border-(--color-
|
|
6
|
+
/** Invalid state - full-strength danger border/ring (the danger text token), readable in both themes */
|
|
7
|
+
this.invalid = "border-(--color-text-danger) ring-(--color-text-danger)";
|
|
8
8
|
}
|
|
9
9
|
getClasses(extractedKeys) {
|
|
10
10
|
const classes = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/statusClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, ValidityKey } from \"../../props\";\n\n/**\n * Validation-state styling for form components.\n * Changes border/ring colors to indicate an invalid field.\n */\nexport class StatusClassMapper extends BaseClassMapper implements Record<ValidityKey, string> {\n /** Invalid state - danger border/ring
|
|
1
|
+
{"version":3,"file":"statusClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/appearance/statusClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, ValidityKey } from \"../../props\";\n\n/**\n * Validation-state styling for form components.\n * Changes border/ring colors to indicate an invalid field.\n */\nexport class StatusClassMapper extends BaseClassMapper implements Record<ValidityKey, string> {\n /** Invalid state - full-strength danger border/ring (the danger text token), readable in both themes */\n invalid: string = \"border-(--color-text-danger) ring-(--color-text-danger)\";\n\n getClasses(extractedKeys: CategoryProps): string[] {\n const classes: string[] = [];\n\n const value = extractedKeys?.validity;\n\n if (value && value in this) {\n classes.push(this[value as ValidityKey]);\n }\n\n return classes;\n }\n}\n"],"names":[],"mappings":";;AAOO,MAAM,0BAA0B,eAAA,CAAuD;AAAA,EAAvF,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEL;AAAA,IAAA,IAAA,CAAA,OAAA,GAAkB,yDAAA;AAAA,EAAA;AAAA,EAElB,WAAW,aAAA,EAAwC;AACjD,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,MAAM,QAAQ,aAAA,EAAe,QAAA;AAE7B,IAAA,IAAI,KAAA,IAAS,SAAS,IAAA,EAAM;AAC1B,MAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,KAAoB,CAAC,CAAA;AAAA,IACzC;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AACF;;;;"}
|
|
@@ -238,7 +238,7 @@ class ComponentTheme {
|
|
|
238
238
|
if (hasAppearance) {
|
|
239
239
|
dataAttributes["data-appearance"] = extractedKeys.appearance;
|
|
240
240
|
}
|
|
241
|
-
if (extractedKeys.variant &&
|
|
241
|
+
if (extractedKeys.variant && hasAppearance) {
|
|
242
242
|
dataAttributes["data-variant"] = extractedKeys.variant;
|
|
243
243
|
}
|
|
244
244
|
if (rawProps.disabled) {
|
|
@@ -246,7 +246,8 @@ class ComponentTheme {
|
|
|
246
246
|
}
|
|
247
247
|
if (rawProps.readOnly) {
|
|
248
248
|
dataAttributes["data-readonly"] = "true";
|
|
249
|
-
|
|
249
|
+
const isFormControlTag = typeof componentTag !== "string" || ["input", "textarea", "select"].includes(componentTag);
|
|
250
|
+
if (rawProps["aria-readonly"] === void 0 && isFormControlTag) {
|
|
250
251
|
dataAttributes["aria-readonly"] = "true";
|
|
251
252
|
}
|
|
252
253
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentTheme.mjs","sources":["../../../../../../src/components/ui/theme/common/ComponentTheme.tsx"],"sourcesContent":["import React from \"react\";\nimport { BaseClassMapper } from \"./BaseClassMapper\";\nimport { ComponentCategoryKey } from \"../../props\";\nimport { ComponentKeys } from \"../../props\";\nimport { HideClassMapper } from \"../layout/hideClassMapper\";\nimport { ItemsClassMapper } from \"../layout/itemsClassMapper\";\nimport { JustifyClassMapper } from \"../layout/justifyClassMapper\";\nimport { PositionClassMapper } from \"../layout/positionClassMapper\";\nimport { FontStyleClassMapper } from \"../typography/fontStyleClassMapper\";\nimport { FontFamilyClassMapper } from \"../typography/fontFamilyClassMapper\";\nimport { FontWeightClassMapper } from \"../typography/fontWeightClassMapper\";\nimport { TextDecorationClassMapper } from \"../typography/textDecorationClassMapper\";\nimport { TextTransformClassMapper } from \"../typography/textTransformClassMapper\";\nimport { TextAlignClassMapper } from \"../typography/textAlignClassMapper\";\nimport { TruncateClassMapper } from \"../typography/truncateClassMapper\";\nimport { DeepPartial } from \"../../../utils/deepPartial\";\nimport { DisplayClassMapper } from \"../layout/displayClassMapper\";\nimport { twMerge } from \"tailwind-merge\";\nimport { OverflowClassMapper } from \"../layout/overflowClassMapper\";\nimport { WidthClassMapper } from \"../layout/widthClassMapper\";\nimport { HeightClassMapper } from \"../layout/heightClassMapper\";\nimport { pickFirstTruthyKeyByCategory, collectTruthyKeysByCategory, MULTI_VALUE_CATEGORIES, resetConflictKey } from \"../../../utils/componentUtils\";\n\ntype ComponentProps = { className?: string; children?: React.ReactNode; tag?: React.ElementType; };\ntype ThemeNode<P> = BaseClassMapper | ThemeMap<P>;\n\n// HTML tags where the native disabled attribute is valid and desired\nconst NATIVE_DISABLED_TAGS = new Set([\n 'button', 'input', 'select', 'textarea', 'fieldset', 'optgroup', 'option',\n]);\n\n// props consumed by the theme engine itself — never forwarded to the DOM\n// (boolean category props are stripped separately via ResolutionState.omitKeys)\nconst INTERNAL_PROPS = new Set(['className', 'tag', 'children', 'theme']);\n\n// attributes that are invalid on a given resolved tag — stripped so a wrong-tag\n// HTML attribute can't leak through a tag-switching component (e.g. type/form\n// reaching a rendered <a>, or href/target/download/rel reaching a rendered\n// <button>). Components like Button/NavLink/Badge union button + anchor attrs.\nconst TAG_INVALID_ATTRS: Record<string, readonly string[]> = {\n a: ['type', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget'],\n button: ['href', 'target', 'download', 'rel', 'hrefLang', 'ping'],\n};\n\nexport type VaneComponentType = 'ui' | 'layout';\n\nexport type ThemeMap<P> = {\n [key: string]: ThemeNode<P>;\n};\n\nexport interface DefaultLayoutClassMappers {\n hide: HideClassMapper;\n items: ItemsClassMapper;\n justify: JustifyClassMapper;\n position: PositionClassMapper;\n display: DisplayClassMapper;\n overflow: OverflowClassMapper;\n}\n\nexport interface DefaultTypographyClassMappers {\n fontFamily: FontFamilyClassMapper;\n fontWeight: FontWeightClassMapper;\n fontStyle: FontStyleClassMapper;\n textDecoration: TextDecorationClassMapper;\n textTransform: TextTransformClassMapper;\n textAlign: TextAlignClassMapper;\n truncate: TruncateClassMapper;\n}\n\nexport interface BaseComponentTheme {\n layout: DefaultLayoutClassMappers;\n}\n\nexport interface BaseTypographyComponentTheme extends BaseComponentTheme {\n typography: DefaultTypographyClassMappers;\n}\n\nexport const defaultLayoutClassMappers: DefaultLayoutClassMappers = {\n hide: new HideClassMapper(),\n items: new ItemsClassMapper(),\n justify: new JustifyClassMapper(),\n position: new PositionClassMapper(),\n display: new DisplayClassMapper(),\n overflow: new OverflowClassMapper(),\n};\n\nexport interface DefaultSizedLayoutClassMappers extends DefaultLayoutClassMappers {\n width: WidthClassMapper;\n height: HeightClassMapper;\n}\n\nexport const defaultSizedLayoutClassMappers: DefaultSizedLayoutClassMappers = {\n ...defaultLayoutClassMappers,\n width: new WidthClassMapper(),\n height: new HeightClassMapper(),\n};\n\nexport const defaultTypographyClassMappers: DefaultTypographyClassMappers = {\n fontFamily: new FontFamilyClassMapper(),\n fontWeight: new FontWeightClassMapper(),\n fontStyle: new FontStyleClassMapper(),\n textDecoration: new TextDecorationClassMapper(),\n textTransform: new TextTransformClassMapper(),\n textAlign: new TextAlignClassMapper(),\n truncate: new TruncateClassMapper(),\n};\n\n/* Per-instance derived state: constant omitKeys/baseClasses + walkCache (memoizes the tree walk per extracted-keys signature; defaults only affect the cache key, extraClasses applied per call). */\ninterface ResolutionState {\n /** boolean prop names consumed by the theme system (union of all category keys) — stripped from DOM props */\n omitKeys: ReadonlySet<string>;\n /** `base` pre-split on whitespace, empty entries removed */\n baseClasses: readonly string[];\n /** extracted-keys signature → theme-tree walk output (pre-filtered, treated as immutable) */\n walkCache: Map<string, readonly string[]>;\n}\n\n/* Resolution state keyed by instance identity in a module-level WeakMap, not on the instance: deepClone/deepMerge copy instances generically, so instance state would leak into clones or break (Set/Map slots don't survive). Every clone/withDefaults() starts cold. */\nconst resolutionStateMap = new WeakMap<object, ResolutionState>();\n\nexport class ComponentTheme<P extends ComponentProps, TTheme extends object> {\n readonly tag: React.ElementType;\n // writable so `themeOverride` can append always-on classes on the cloned tree\n // (e.g. `theme.button.main.base += ' uppercase'`), matching the writable\n // `defaults`/`extraClasses` and the mapper-node `base` fields. Mutation is\n // safe only on ThemeProvider's pre-render clone (see the class doc-comment).\n base: string;\n readonly themes: TTheme;\n readonly vaneType?: VaneComponentType;\n // fallback for pickFirstTruthyKeyByCategory when props omit a category; merged via ThemeProvider\n defaults: Partial<P>;\n extraClasses: Partial<Record<keyof P, string>>;\n private readonly categories: readonly ComponentCategoryKey[];\n // base type decoupled from P so ComponentTheme<SpecificProps, T> stays structurally compatible\n private readonly tagFunction?: (props: ComponentProps, defaults: Partial<ComponentProps>) => React.ElementType;\n\n constructor(\n tag: React.ElementType,\n base: string,\n themes: DeepPartial<TTheme>,\n defaults: Partial<P> = {},\n categories: readonly ComponentCategoryKey[],\n tagFunction?: (props: P, defaults: Partial<P>) => React.ElementType,\n vaneType?: VaneComponentType\n ) {\n this.tag = tag;\n this.base = base;\n this.defaults = defaults;\n this.extraClasses = {};\n this.categories = categories;\n // safe: existing tagFunctions only access optional props (e.g. href)\n this.tagFunction = tagFunction as typeof this.tagFunction;\n this.vaneType = vaneType;\n this.themes = themes as TTheme;\n }\n\n withDefaults(defaults: Partial<P>): ComponentTheme<P, TTheme> {\n return new ComponentTheme<P, TTheme>(\n this.tag,\n this.base,\n this.themes,\n defaults,\n this.categories,\n this.tagFunction as ((props: P, defaults: Partial<P>) => React.ElementType) | undefined,\n this.vaneType,\n );\n }\n\n private resolutionState(): ResolutionState {\n let state = resolutionStateMap.get(this);\n if (state === undefined) {\n state = {\n omitKeys: new Set<string>(this.categories.flatMap(category => ComponentKeys[category])),\n baseClasses: this.base ? this.base.split(/\\s+/).filter(Boolean) : [],\n walkCache: new Map(),\n };\n resolutionStateMap.set(this, state);\n }\n return state;\n }\n\n /* Resolve the active key per category (props win over defaults) and expand `inherit` into inheritColor/Bg/Border. Shared by getClasses + getComponentConfig so both see the same key set. */\n private resolveExtractedKeys(props: P): Record<string, string> {\n const componentProps = props as unknown as Record<string, boolean>;\n const defaults = this.defaults as Record<string, boolean>;\n\n const extractedKeys: Record<string, string> = {};\n for (const category of this.categories) {\n if (MULTI_VALUE_CATEGORIES.has(category)) {\n // border/margin compose: store all active side keys space-joined for the mapper to union\n const collected = collectTruthyKeysByCategory(componentProps, defaults, category);\n if (collected.length > 0) {\n extractedKeys[category] = collected.join(' ');\n }\n continue;\n }\n const key = pickFirstTruthyKeyByCategory(componentProps, defaults, category);\n if (key !== undefined) {\n extractedKeys[category] = key;\n }\n }\n\n // expand `inheritAppearance` shorthand into COLOR/BG/BORDER only (size inheritance is opt-in via inheritSize)\n if (extractedKeys.appearance === 'inheritAppearance') {\n if (!extractedKeys.inheritColor) {\n extractedKeys.inheritColor = 'inheritColor';\n }\n if (!extractedKeys.inheritBg) {\n extractedKeys.inheritBg = 'inheritBg';\n }\n if (!extractedKeys.inheritBorder) {\n extractedKeys.inheritBorder = 'inheritBorder';\n }\n }\n\n return extractedKeys;\n }\n\n getClasses(props: P, precomputedKeys?: Record<string, string>): string[] {\n const extractedKeys = precomputedKeys ?? this.resolveExtractedKeys(props);\n const state = this.resolutionState();\n\n const classes: string[] = state.baseClasses.slice();\n\n // Signature of the resolved keys. for...in (not Object.keys) so any\n // enumerable inherited key on a caller-supplied precomputedKeys object is\n // captured too — mappers read keys via plain property access, which also\n // sees the prototype chain, and the signature must cover everything the\n // walk can observe. Both internal paths build plain objects in stable\n // `categories` order, so signatures are stable per instance.\n let signature = '';\n for (const category in extractedKeys) {\n signature += category;\n signature += ':';\n signature += extractedKeys[category];\n signature += '|';\n }\n\n let walkClasses = state.walkCache.get(signature);\n if (walkClasses === undefined) {\n const collected: string[] = [];\n const walk = (map: object) => {\n for (const key of Object.keys(map)) {\n const node = (map as ThemeMap<P>)[key];\n\n if (node instanceof BaseClassMapper) {\n collected.push(...node.getClasses(extractedKeys));\n } else if (node && typeof node === \"object\" && !Array.isArray(node)) {\n walk(node);\n }\n }\n };\n walk(this.themes);\n walkClasses = collected.filter(Boolean);\n state.walkCache.set(signature, walkClasses);\n }\n classes.push(...walkClasses);\n\n // extraClasses are applied per call (never cached) so the cached walk\n // output stays valid even if extraClasses are replaced on this instance\n for (const [, value] of Object.entries(extractedKeys)) {\n if (value && this.extraClasses[value as keyof P]) {\n const existingClasses = this.extraClasses[value as keyof P];\n if (existingClasses !== undefined) {\n classes.push(...existingClasses.split(/\\s+/));\n }\n }\n }\n\n return classes.filter(Boolean);\n }\n\n getTag(props: P): React.ElementType {\n if (this.tagFunction) {\n return this.tagFunction(props, this.defaults);\n }\n return this.tag;\n }\n\n getComponentConfig(props: P) {\n const componentProps = props as unknown as Record<string, boolean>;\n const extractedKeys = this.resolveExtractedKeys(props);\n\n // dev-only: categories are mutually exclusive, but the boolean-props API\n // can't express that in types — when 2+ props of one category are\n // explicitly true, the winner is ComponentKeys array order (NOT JSX\n // order), which is undiscoverable without a warning\n if (process.env.NODE_ENV !== 'production') {\n for (const category of this.categories) {\n const truthyKeys = ComponentKeys[category].filter(k => componentProps[k] === true);\n if (MULTI_VALUE_CATEGORIES.has(category)) {\n const reset = resetConflictKey(truthyKeys);\n if (reset) {\n const tagName = typeof this.tag === 'string' ? `<${this.tag}>` : 'component';\n console.warn(\n `VaneUI: conflicting ${category} props on ${tagName}: ${truthyKeys.join(', ')} — \"${reset}\" resets and wins over the side toggles. Pass either side toggles or a reset, not both.`\n );\n }\n continue;\n }\n if (truthyKeys.length > 1) {\n const tagName = typeof this.tag === 'string' ? `<${this.tag}>` : 'component';\n console.warn(\n `VaneUI: conflicting ${category} props on ${tagName}: ${truthyKeys.join(', ')} — \"${truthyKeys[0]}\" wins (canonical key order, not JSX order). Pass only one prop per category.`\n );\n }\n }\n }\n\n const { omitKeys } = this.resolutionState();\n\n // Build the DOM-props object in a single pass over the props actually\n // present, skipping theme-consumed keys via the precomputed omit set.\n // (Previously: spread the props, then issue one `delete` per possible\n // category key — 150+ deletes per render regardless of how few props the\n // element actually has.)\n const rawProps = props as Record<PropertyKey, unknown>;\n const other: Record<PropertyKey, unknown> = {};\n for (const key of Object.keys(rawProps)) {\n if (omitKeys.has(key) || INTERNAL_PROPS.has(key)) {\n continue;\n }\n other[key] = rawProps[key];\n }\n // parity with the previous spread-based copy: enumerable symbol-keyed\n // props were forwarded too, and Object.keys only yields string keys\n for (const sym of Object.getOwnPropertySymbols(rawProps)) {\n if (Object.prototype.propertyIsEnumerable.call(rawProps, sym)) {\n other[sym] = rawProps[sym];\n }\n }\n\n const { className, tag } = props;\n const componentTag: React.ElementType = tag ?? this.getTag(props) ?? \"div\";\n\n // preserve the HTML-native disabled attr (it overlaps with a category\n // key), but only on tags that support it — a placeholder link rendered\n // for disabled href-switching must stay focusable per the aria-disabled\n // pattern, and native disabled would pull it out of the tab order\n const supportsNativeDisabled =\n typeof componentTag !== 'string' || NATIVE_DISABLED_TAGS.has(componentTag);\n if (rawProps.disabled !== undefined && supportsNativeDisabled) {\n other.disabled = rawProps.disabled;\n } else if (!supportsNativeDisabled && 'disabled' in other) {\n // a tag that doesn't support native disabled (e.g. <a>, <span>) must not\n // carry a leaked `disabled` attribute — the state is exposed via\n // data-disabled / aria-disabled instead\n delete other.disabled;\n }\n\n // `readOnly` is now a category (so the ReadOnlyClassMapper can style it),\n // which means omitKeys strips it. Re-add the native attribute on the tags\n // that support it so the field stays read-only; data-readonly (below)\n // carries the non-class CSS bits (caret-color / hover neutralization).\n if (rawProps.readOnly !== undefined &&\n (typeof componentTag !== 'string' || componentTag === 'input' || componentTag === 'textarea')) {\n other.readOnly = rawProps.readOnly;\n }\n\n // drop attributes that don't belong on the resolved tag\n if (typeof componentTag === 'string') {\n const invalidAttrs = TAG_INVALID_ATTRS[componentTag];\n if (invalidAttrs) {\n for (const attr of invalidAttrs) {\n if (attr in other) delete other[attr];\n }\n }\n }\n\n const themeGeneratedClasses = this.getClasses(props, extractedKeys);\n const finalClasses = twMerge(...themeGeneratedClasses, className);\n\n const dataAttributes: Record<string, string> = {};\n if (this.vaneType) {\n dataAttributes['data-vane-type'] = this.vaneType;\n }\n if (extractedKeys.size) {\n dataAttributes['data-size'] = extractedKeys.size;\n }\n if (extractedKeys.responsiveSizing === 'responsiveSizing') {\n dataAttributes['data-responsive'] = '';\n }\n // data-appearance suppressed when inheritColor is active (lets colors cascade from ancestor).\n // data-variant emitted when appearance is present OR variant != outline (so `<Row filled>` works without explicit appearance).\n const hasAppearance = extractedKeys.appearance && extractedKeys.inheritColor !== 'inheritColor';\n if (hasAppearance) {\n dataAttributes['data-appearance'] = extractedKeys.appearance;\n }\n if (extractedKeys.variant && (hasAppearance || extractedKeys.variant !== 'outline')) {\n dataAttributes['data-variant'] = extractedKeys.variant;\n }\n if (rawProps.disabled) {\n dataAttributes['data-disabled'] = 'true';\n }\n if (rawProps.readOnly) {\n dataAttributes['data-readonly'] = 'true';\n if (rawProps['aria-readonly'] === undefined) {\n dataAttributes['aria-readonly'] = 'true';\n }\n }\n // error state must be AT-perceivable, not color-only: emit aria-invalid\n // (unless the consumer set it explicitly) alongside a data-status hook\n if (extractedKeys.validity === 'invalid') {\n dataAttributes['data-status'] = 'error';\n if (rawProps['aria-invalid'] === undefined) {\n dataAttributes['aria-invalid'] = 'true';\n }\n }\n\n return {\n Tag: componentTag,\n finalClasses,\n finalProps: { ...other, ...dataAttributes },\n };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComponentTheme.mjs","sources":["../../../../../../src/components/ui/theme/common/ComponentTheme.tsx"],"sourcesContent":["import React from \"react\";\nimport { BaseClassMapper } from \"./BaseClassMapper\";\nimport { ComponentCategoryKey } from \"../../props\";\nimport { ComponentKeys } from \"../../props\";\nimport { HideClassMapper } from \"../layout/hideClassMapper\";\nimport { ItemsClassMapper } from \"../layout/itemsClassMapper\";\nimport { JustifyClassMapper } from \"../layout/justifyClassMapper\";\nimport { PositionClassMapper } from \"../layout/positionClassMapper\";\nimport { FontStyleClassMapper } from \"../typography/fontStyleClassMapper\";\nimport { FontFamilyClassMapper } from \"../typography/fontFamilyClassMapper\";\nimport { FontWeightClassMapper } from \"../typography/fontWeightClassMapper\";\nimport { TextDecorationClassMapper } from \"../typography/textDecorationClassMapper\";\nimport { TextTransformClassMapper } from \"../typography/textTransformClassMapper\";\nimport { TextAlignClassMapper } from \"../typography/textAlignClassMapper\";\nimport { TruncateClassMapper } from \"../typography/truncateClassMapper\";\nimport { DeepPartial } from \"../../../utils/deepPartial\";\nimport { DisplayClassMapper } from \"../layout/displayClassMapper\";\nimport { twMerge } from \"tailwind-merge\";\nimport { OverflowClassMapper } from \"../layout/overflowClassMapper\";\nimport { WidthClassMapper } from \"../layout/widthClassMapper\";\nimport { HeightClassMapper } from \"../layout/heightClassMapper\";\nimport { pickFirstTruthyKeyByCategory, collectTruthyKeysByCategory, MULTI_VALUE_CATEGORIES, resetConflictKey } from \"../../../utils/componentUtils\";\n\ntype ComponentProps = { className?: string; children?: React.ReactNode; tag?: React.ElementType; };\ntype ThemeNode<P> = BaseClassMapper | ThemeMap<P>;\n\n// HTML tags where the native disabled attribute is valid and desired\nconst NATIVE_DISABLED_TAGS = new Set([\n 'button', 'input', 'select', 'textarea', 'fieldset', 'optgroup', 'option',\n]);\n\n// props consumed by the theme engine itself — never forwarded to the DOM\n// (boolean category props are stripped separately via ResolutionState.omitKeys)\nconst INTERNAL_PROPS = new Set(['className', 'tag', 'children', 'theme']);\n\n// attributes that are invalid on a given resolved tag — stripped so a wrong-tag\n// HTML attribute can't leak through a tag-switching component (e.g. type/form\n// reaching a rendered <a>, or href/target/download/rel reaching a rendered\n// <button>). Components like Button/NavLink/Badge union button + anchor attrs.\nconst TAG_INVALID_ATTRS: Record<string, readonly string[]> = {\n a: ['type', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget'],\n button: ['href', 'target', 'download', 'rel', 'hrefLang', 'ping'],\n};\n\nexport type VaneComponentType = 'ui' | 'layout';\n\nexport type ThemeMap<P> = {\n [key: string]: ThemeNode<P>;\n};\n\nexport interface DefaultLayoutClassMappers {\n hide: HideClassMapper;\n items: ItemsClassMapper;\n justify: JustifyClassMapper;\n position: PositionClassMapper;\n display: DisplayClassMapper;\n overflow: OverflowClassMapper;\n}\n\nexport interface DefaultTypographyClassMappers {\n fontFamily: FontFamilyClassMapper;\n fontWeight: FontWeightClassMapper;\n fontStyle: FontStyleClassMapper;\n textDecoration: TextDecorationClassMapper;\n textTransform: TextTransformClassMapper;\n textAlign: TextAlignClassMapper;\n truncate: TruncateClassMapper;\n}\n\nexport interface BaseComponentTheme {\n layout: DefaultLayoutClassMappers;\n}\n\nexport interface BaseTypographyComponentTheme extends BaseComponentTheme {\n typography: DefaultTypographyClassMappers;\n}\n\nexport const defaultLayoutClassMappers: DefaultLayoutClassMappers = {\n hide: new HideClassMapper(),\n items: new ItemsClassMapper(),\n justify: new JustifyClassMapper(),\n position: new PositionClassMapper(),\n display: new DisplayClassMapper(),\n overflow: new OverflowClassMapper(),\n};\n\nexport interface DefaultSizedLayoutClassMappers extends DefaultLayoutClassMappers {\n width: WidthClassMapper;\n height: HeightClassMapper;\n}\n\nexport const defaultSizedLayoutClassMappers: DefaultSizedLayoutClassMappers = {\n ...defaultLayoutClassMappers,\n width: new WidthClassMapper(),\n height: new HeightClassMapper(),\n};\n\nexport const defaultTypographyClassMappers: DefaultTypographyClassMappers = {\n fontFamily: new FontFamilyClassMapper(),\n fontWeight: new FontWeightClassMapper(),\n fontStyle: new FontStyleClassMapper(),\n textDecoration: new TextDecorationClassMapper(),\n textTransform: new TextTransformClassMapper(),\n textAlign: new TextAlignClassMapper(),\n truncate: new TruncateClassMapper(),\n};\n\n/* Per-instance derived state: constant omitKeys/baseClasses + walkCache (memoizes the tree walk per extracted-keys signature; defaults only affect the cache key, extraClasses applied per call). */\ninterface ResolutionState {\n /** boolean prop names consumed by the theme system (union of all category keys) — stripped from DOM props */\n omitKeys: ReadonlySet<string>;\n /** `base` pre-split on whitespace, empty entries removed */\n baseClasses: readonly string[];\n /** extracted-keys signature → theme-tree walk output (pre-filtered, treated as immutable) */\n walkCache: Map<string, readonly string[]>;\n}\n\n/* Resolution state keyed by instance identity in a module-level WeakMap, not on the instance: deepClone/deepMerge copy instances generically, so instance state would leak into clones or break (Set/Map slots don't survive). Every clone/withDefaults() starts cold. */\nconst resolutionStateMap = new WeakMap<object, ResolutionState>();\n\nexport class ComponentTheme<P extends ComponentProps, TTheme extends object> {\n readonly tag: React.ElementType;\n // writable so `themeOverride` can append always-on classes on the cloned tree\n // (e.g. `theme.button.main.base += ' uppercase'`), matching the writable\n // `defaults`/`extraClasses` and the mapper-node `base` fields. Mutation is\n // safe only on ThemeProvider's pre-render clone (see the class doc-comment).\n base: string;\n readonly themes: TTheme;\n readonly vaneType?: VaneComponentType;\n // fallback for pickFirstTruthyKeyByCategory when props omit a category; merged via ThemeProvider\n defaults: Partial<P>;\n extraClasses: Partial<Record<keyof P, string>>;\n private readonly categories: readonly ComponentCategoryKey[];\n // base type decoupled from P so ComponentTheme<SpecificProps, T> stays structurally compatible\n private readonly tagFunction?: (props: ComponentProps, defaults: Partial<ComponentProps>) => React.ElementType;\n\n constructor(\n tag: React.ElementType,\n base: string,\n themes: DeepPartial<TTheme>,\n defaults: Partial<P> = {},\n categories: readonly ComponentCategoryKey[],\n tagFunction?: (props: P, defaults: Partial<P>) => React.ElementType,\n vaneType?: VaneComponentType\n ) {\n this.tag = tag;\n this.base = base;\n this.defaults = defaults;\n this.extraClasses = {};\n this.categories = categories;\n // safe: existing tagFunctions only access optional props (e.g. href)\n this.tagFunction = tagFunction as typeof this.tagFunction;\n this.vaneType = vaneType;\n this.themes = themes as TTheme;\n }\n\n withDefaults(defaults: Partial<P>): ComponentTheme<P, TTheme> {\n return new ComponentTheme<P, TTheme>(\n this.tag,\n this.base,\n this.themes,\n defaults,\n this.categories,\n this.tagFunction as ((props: P, defaults: Partial<P>) => React.ElementType) | undefined,\n this.vaneType,\n );\n }\n\n private resolutionState(): ResolutionState {\n let state = resolutionStateMap.get(this);\n if (state === undefined) {\n state = {\n omitKeys: new Set<string>(this.categories.flatMap(category => ComponentKeys[category])),\n baseClasses: this.base ? this.base.split(/\\s+/).filter(Boolean) : [],\n walkCache: new Map(),\n };\n resolutionStateMap.set(this, state);\n }\n return state;\n }\n\n /* Resolve the active key per category (props win over defaults) and expand `inherit` into inheritColor/Bg/Border. Shared by getClasses + getComponentConfig so both see the same key set. */\n private resolveExtractedKeys(props: P): Record<string, string> {\n const componentProps = props as unknown as Record<string, boolean>;\n const defaults = this.defaults as Record<string, boolean>;\n\n const extractedKeys: Record<string, string> = {};\n for (const category of this.categories) {\n if (MULTI_VALUE_CATEGORIES.has(category)) {\n // border/margin compose: store all active side keys space-joined for the mapper to union\n const collected = collectTruthyKeysByCategory(componentProps, defaults, category);\n if (collected.length > 0) {\n extractedKeys[category] = collected.join(' ');\n }\n continue;\n }\n const key = pickFirstTruthyKeyByCategory(componentProps, defaults, category);\n if (key !== undefined) {\n extractedKeys[category] = key;\n }\n }\n\n // expand `inheritAppearance` shorthand into COLOR/BG/BORDER only (size inheritance is opt-in via inheritSize)\n if (extractedKeys.appearance === 'inheritAppearance') {\n if (!extractedKeys.inheritColor) {\n extractedKeys.inheritColor = 'inheritColor';\n }\n if (!extractedKeys.inheritBg) {\n extractedKeys.inheritBg = 'inheritBg';\n }\n if (!extractedKeys.inheritBorder) {\n extractedKeys.inheritBorder = 'inheritBorder';\n }\n }\n\n return extractedKeys;\n }\n\n getClasses(props: P, precomputedKeys?: Record<string, string>): string[] {\n const extractedKeys = precomputedKeys ?? this.resolveExtractedKeys(props);\n const state = this.resolutionState();\n\n const classes: string[] = state.baseClasses.slice();\n\n // Signature of the resolved keys. for...in (not Object.keys) so any\n // enumerable inherited key on a caller-supplied precomputedKeys object is\n // captured too — mappers read keys via plain property access, which also\n // sees the prototype chain, and the signature must cover everything the\n // walk can observe. Both internal paths build plain objects in stable\n // `categories` order, so signatures are stable per instance.\n let signature = '';\n for (const category in extractedKeys) {\n signature += category;\n signature += ':';\n signature += extractedKeys[category];\n signature += '|';\n }\n\n let walkClasses = state.walkCache.get(signature);\n if (walkClasses === undefined) {\n const collected: string[] = [];\n const walk = (map: object) => {\n for (const key of Object.keys(map)) {\n const node = (map as ThemeMap<P>)[key];\n\n if (node instanceof BaseClassMapper) {\n collected.push(...node.getClasses(extractedKeys));\n } else if (node && typeof node === \"object\" && !Array.isArray(node)) {\n walk(node);\n }\n }\n };\n walk(this.themes);\n walkClasses = collected.filter(Boolean);\n state.walkCache.set(signature, walkClasses);\n }\n classes.push(...walkClasses);\n\n // extraClasses are applied per call (never cached) so the cached walk\n // output stays valid even if extraClasses are replaced on this instance\n for (const [, value] of Object.entries(extractedKeys)) {\n if (value && this.extraClasses[value as keyof P]) {\n const existingClasses = this.extraClasses[value as keyof P];\n if (existingClasses !== undefined) {\n classes.push(...existingClasses.split(/\\s+/));\n }\n }\n }\n\n return classes.filter(Boolean);\n }\n\n getTag(props: P): React.ElementType {\n if (this.tagFunction) {\n return this.tagFunction(props, this.defaults);\n }\n return this.tag;\n }\n\n getComponentConfig(props: P) {\n const componentProps = props as unknown as Record<string, boolean>;\n const extractedKeys = this.resolveExtractedKeys(props);\n\n // dev-only: categories are mutually exclusive, but the boolean-props API\n // can't express that in types — when 2+ props of one category are\n // explicitly true, the winner is ComponentKeys array order (NOT JSX\n // order), which is undiscoverable without a warning\n if (process.env.NODE_ENV !== 'production') {\n for (const category of this.categories) {\n const truthyKeys = ComponentKeys[category].filter(k => componentProps[k] === true);\n if (MULTI_VALUE_CATEGORIES.has(category)) {\n const reset = resetConflictKey(truthyKeys);\n if (reset) {\n const tagName = typeof this.tag === 'string' ? `<${this.tag}>` : 'component';\n console.warn(\n `VaneUI: conflicting ${category} props on ${tagName}: ${truthyKeys.join(', ')} — \"${reset}\" resets and wins over the side toggles. Pass either side toggles or a reset, not both.`\n );\n }\n continue;\n }\n if (truthyKeys.length > 1) {\n const tagName = typeof this.tag === 'string' ? `<${this.tag}>` : 'component';\n console.warn(\n `VaneUI: conflicting ${category} props on ${tagName}: ${truthyKeys.join(', ')} — \"${truthyKeys[0]}\" wins (canonical key order, not JSX order). Pass only one prop per category.`\n );\n }\n }\n }\n\n const { omitKeys } = this.resolutionState();\n\n // Build the DOM-props object in a single pass over the props actually\n // present, skipping theme-consumed keys via the precomputed omit set.\n // (Previously: spread the props, then issue one `delete` per possible\n // category key — 150+ deletes per render regardless of how few props the\n // element actually has.)\n const rawProps = props as Record<PropertyKey, unknown>;\n const other: Record<PropertyKey, unknown> = {};\n for (const key of Object.keys(rawProps)) {\n if (omitKeys.has(key) || INTERNAL_PROPS.has(key)) {\n continue;\n }\n other[key] = rawProps[key];\n }\n // parity with the previous spread-based copy: enumerable symbol-keyed\n // props were forwarded too, and Object.keys only yields string keys\n for (const sym of Object.getOwnPropertySymbols(rawProps)) {\n if (Object.prototype.propertyIsEnumerable.call(rawProps, sym)) {\n other[sym] = rawProps[sym];\n }\n }\n\n const { className, tag } = props;\n const componentTag: React.ElementType = tag ?? this.getTag(props) ?? \"div\";\n\n // preserve the HTML-native disabled attr (it overlaps with a category\n // key), but only on tags that support it — a placeholder link rendered\n // for disabled href-switching must stay focusable per the aria-disabled\n // pattern, and native disabled would pull it out of the tab order\n const supportsNativeDisabled =\n typeof componentTag !== 'string' || NATIVE_DISABLED_TAGS.has(componentTag);\n if (rawProps.disabled !== undefined && supportsNativeDisabled) {\n other.disabled = rawProps.disabled;\n } else if (!supportsNativeDisabled && 'disabled' in other) {\n // a tag that doesn't support native disabled (e.g. <a>, <span>) must not\n // carry a leaked `disabled` attribute — the state is exposed via\n // data-disabled / aria-disabled instead\n delete other.disabled;\n }\n\n // `readOnly` is now a category (so the ReadOnlyClassMapper can style it),\n // which means omitKeys strips it. Re-add the native attribute on the tags\n // that support it so the field stays read-only; data-readonly (below)\n // carries the non-class CSS bits (caret-color / hover neutralization).\n if (rawProps.readOnly !== undefined &&\n (typeof componentTag !== 'string' || componentTag === 'input' || componentTag === 'textarea')) {\n other.readOnly = rawProps.readOnly;\n }\n\n // drop attributes that don't belong on the resolved tag\n if (typeof componentTag === 'string') {\n const invalidAttrs = TAG_INVALID_ATTRS[componentTag];\n if (invalidAttrs) {\n for (const attr of invalidAttrs) {\n if (attr in other) delete other[attr];\n }\n }\n }\n\n const themeGeneratedClasses = this.getClasses(props, extractedKeys);\n const finalClasses = twMerge(...themeGeneratedClasses, className);\n\n const dataAttributes: Record<string, string> = {};\n if (this.vaneType) {\n dataAttributes['data-vane-type'] = this.vaneType;\n }\n if (extractedKeys.size) {\n dataAttributes['data-size'] = extractedKeys.size;\n }\n if (extractedKeys.responsiveSizing === 'responsiveSizing') {\n dataAttributes['data-responsive'] = '';\n }\n // data-appearance suppressed when inheritColor is active (lets colors cascade from ancestor).\n // data-variant only with an appearance: without one no surface is painted, so a variant would only flip the text.\n const hasAppearance = extractedKeys.appearance && extractedKeys.inheritColor !== 'inheritColor';\n if (hasAppearance) {\n dataAttributes['data-appearance'] = extractedKeys.appearance;\n }\n if (extractedKeys.variant && hasAppearance) {\n dataAttributes['data-variant'] = extractedKeys.variant;\n }\n if (rawProps.disabled) {\n dataAttributes['data-disabled'] = 'true';\n }\n if (rawProps.readOnly) {\n dataAttributes['data-readonly'] = 'true';\n // aria-readonly belongs on the control itself; a toggle's wrapper span only takes the visual cue\n const isFormControlTag = typeof componentTag !== 'string' || ['input', 'textarea', 'select'].includes(componentTag);\n if (rawProps['aria-readonly'] === undefined && isFormControlTag) {\n dataAttributes['aria-readonly'] = 'true';\n }\n }\n // error state must be AT-perceivable, not color-only: emit aria-invalid\n // (unless the consumer set it explicitly) alongside a data-status hook\n if (extractedKeys.validity === 'invalid') {\n dataAttributes['data-status'] = 'error';\n if (rawProps['aria-invalid'] === undefined) {\n dataAttributes['aria-invalid'] = 'true';\n }\n }\n\n return {\n Tag: componentTag,\n finalClasses,\n finalProps: { ...other, ...dataAttributes },\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,oBAAA,uBAA2B,GAAA,CAAI;AAAA,EACnC,QAAA;AAAA,EAAU,OAAA;AAAA,EAAS,QAAA;AAAA,EAAU,UAAA;AAAA,EAAY,UAAA;AAAA,EAAY,UAAA;AAAA,EAAY;AACnE,CAAC,CAAA;AAID,MAAM,cAAA,uBAAqB,GAAA,CAAI,CAAC,aAAa,KAAA,EAAO,UAAA,EAAY,OAAO,CAAC,CAAA;AAMxE,MAAM,iBAAA,GAAuD;AAAA,EAC3D,CAAA,EAAG,CAAC,MAAA,EAAQ,MAAA,EAAQ,cAAc,aAAA,EAAe,YAAA,EAAc,kBAAkB,YAAY,CAAA;AAAA,EAC7F,QAAQ,CAAC,MAAA,EAAQ,UAAU,UAAA,EAAY,KAAA,EAAO,YAAY,MAAM;AAClE,CAAA;AAmCO,MAAM,yBAAA,GAAuD;AAAA,EAClE,IAAA,EAAM,IAAI,eAAA,EAAgB;AAAA,EAC1B,KAAA,EAAO,IAAI,gBAAA,EAAiB;AAAA,EAC5B,OAAA,EAAS,IAAI,kBAAA,EAAmB;AAAA,EAChC,QAAA,EAAU,IAAI,mBAAA,EAAoB;AAAA,EAClC,OAAA,EAAS,IAAI,kBAAA,EAAmB;AAAA,EAChC,QAAA,EAAU,IAAI,mBAAA;AAChB;AAOO,MAAM,8BAAA,GAAiE;AAAA,EAC5E,GAAG,yBAAA;AAAA,EACH,KAAA,EAAO,IAAI,gBAAA,EAAiB;AAAA,EAC5B,MAAA,EAAQ,IAAI,iBAAA;AACd;AAEO,MAAM,6BAAA,GAA+D;AAAA,EAC1E,UAAA,EAAY,IAAI,qBAAA,EAAsB;AAAA,EACtC,UAAA,EAAY,IAAI,qBAAA,EAAsB;AAAA,EACtC,SAAA,EAAW,IAAI,oBAAA,EAAqB;AAAA,EACpC,cAAA,EAAgB,IAAI,yBAAA,EAA0B;AAAA,EAC9C,aAAA,EAAe,IAAI,wBAAA,EAAyB;AAAA,EAC5C,SAAA,EAAW,IAAI,oBAAA,EAAqB;AAAA,EACpC,QAAA,EAAU,IAAI,mBAAA;AAChB;AAaA,MAAM,kBAAA,uBAAyB,OAAA,EAAiC;AAEzD,MAAM,cAAA,CAAgE;AAAA,EAgB3E,WAAA,CACE,KACA,IAAA,EACA,MAAA,EACA,WAAuB,EAAC,EACxB,UAAA,EACA,WAAA,EACA,QAAA,EACA;AACA,IAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,eAAe,EAAC;AACrB,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAElB,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,aAAa,QAAA,EAAiD;AAC5D,IAAA,OAAO,IAAI,cAAA;AAAA,MACT,IAAA,CAAK,GAAA;AAAA,MACL,IAAA,CAAK,IAAA;AAAA,MACL,IAAA,CAAK,MAAA;AAAA,MACL,QAAA;AAAA,MACA,IAAA,CAAK,UAAA;AAAA,MACL,IAAA,CAAK,WAAA;AAAA,MACL,IAAA,CAAK;AAAA,KACP;AAAA,EACF;AAAA,EAEQ,eAAA,GAAmC;AACzC,IAAA,IAAI,KAAA,GAAQ,kBAAA,CAAmB,GAAA,CAAI,IAAI,CAAA;AACvC,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,KAAA,GAAQ;AAAA,QACN,QAAA,EAAU,IAAI,GAAA,CAAY,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,QAAA,KAAY,aAAA,CAAc,QAAQ,CAAC,CAAC,CAAA;AAAA,QACtF,WAAA,EAAa,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,GAAI,EAAC;AAAA,QACnE,SAAA,sBAAe,GAAA;AAAI,OACrB;AACA,MAAA,kBAAA,CAAmB,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,IACpC;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA,EAGQ,qBAAqB,KAAA,EAAkC;AAC7D,IAAA,MAAM,cAAA,GAAiB,KAAA;AACvB,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AAEtB,IAAA,MAAM,gBAAwC,EAAC;AAC/C,IAAA,KAAA,MAAW,QAAA,IAAY,KAAK,UAAA,EAAY;AACtC,MAAA,IAAI,sBAAA,CAAuB,GAAA,CAAI,QAAQ,CAAA,EAAG;AAExC,QAAA,MAAM,SAAA,GAAY,2BAAA,CAA4B,cAAA,EAAgB,QAAA,EAAU,QAAQ,CAAA;AAChF,QAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,UAAA,aAAA,CAAc,QAAQ,CAAA,GAAI,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA;AAAA,QAC9C;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,4BAAA,CAA6B,cAAA,EAAgB,QAAA,EAAU,QAAQ,CAAA;AAC3E,MAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,QAAA,aAAA,CAAc,QAAQ,CAAA,GAAI,GAAA;AAAA,MAC5B;AAAA,IACF;AAGA,IAAA,IAAI,aAAA,CAAc,eAAe,mBAAA,EAAqB;AACpD,MAAA,IAAI,CAAC,cAAc,YAAA,EAAc;AAC/B,QAAA,aAAA,CAAc,YAAA,GAAe,cAAA;AAAA,MAC/B;AACA,MAAA,IAAI,CAAC,cAAc,SAAA,EAAW;AAC5B,QAAA,aAAA,CAAc,SAAA,GAAY,WAAA;AAAA,MAC5B;AACA,MAAA,IAAI,CAAC,cAAc,aAAA,EAAe;AAChC,QAAA,aAAA,CAAc,aAAA,GAAgB,eAAA;AAAA,MAChC;AAAA,IACF;AAEA,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EAEA,UAAA,CAAW,OAAU,eAAA,EAAoD;AACvE,IAAA,MAAM,aAAA,GAAgB,eAAA,IAAmB,IAAA,CAAK,oBAAA,CAAqB,KAAK,CAAA;AACxE,IAAA,MAAM,KAAA,GAAQ,KAAK,eAAA,EAAgB;AAEnC,IAAA,MAAM,OAAA,GAAoB,KAAA,CAAM,WAAA,CAAY,KAAA,EAAM;AAQlD,IAAA,IAAI,SAAA,GAAY,EAAA;AAChB,IAAA,KAAA,MAAW,YAAY,aAAA,EAAe;AACpC,MAAA,SAAA,IAAa,QAAA;AACb,MAAA,SAAA,IAAa,GAAA;AACb,MAAA,SAAA,IAAa,cAAc,QAAQ,CAAA;AACnC,MAAA,SAAA,IAAa,GAAA;AAAA,IACf;AAEA,IAAA,IAAI,WAAA,GAAc,KAAA,CAAM,SAAA,CAAU,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,MAAA,MAAM,YAAsB,EAAC;AAC7B,MAAA,MAAM,IAAA,GAAO,CAAC,GAAA,KAAgB;AAC5B,QAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,EAAG;AAClC,UAAA,MAAM,IAAA,GAAQ,IAAoB,GAAG,CAAA;AAErC,UAAA,IAAI,gBAAgB,eAAA,EAAiB;AACnC,YAAA,SAAA,CAAU,IAAA,CAAK,GAAG,IAAA,CAAK,UAAA,CAAW,aAAa,CAAC,CAAA;AAAA,UAClD,CAAA,MAAA,IAAW,QAAQ,OAAO,IAAA,KAAS,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACnE,YAAA,IAAA,CAAK,IAAI,CAAA;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAA;AACA,MAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAChB,MAAA,WAAA,GAAc,SAAA,CAAU,OAAO,OAAO,CAAA;AACtC,MAAA,KAAA,CAAM,SAAA,CAAU,GAAA,CAAI,SAAA,EAAW,WAAW,CAAA;AAAA,IAC5C;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,WAAW,CAAA;AAI3B,IAAA,KAAA,MAAW,GAAG,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAG;AACrD,MAAA,IAAI,KAAA,IAAS,IAAA,CAAK,YAAA,CAAa,KAAgB,CAAA,EAAG;AAChD,QAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,YAAA,CAAa,KAAgB,CAAA;AAC1D,QAAA,IAAI,oBAAoB,MAAA,EAAW;AACjC,UAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,EAC/B;AAAA,EAEA,OAAO,KAAA,EAA6B;AAClC,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,KAAA,EAAO,IAAA,CAAK,QAAQ,CAAA;AAAA,IAC9C;AACA,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EACd;AAAA,EAEA,mBAAmB,KAAA,EAAU;AAC3B,IAAA,MAAM,cAAA,GAAiB,KAAA;AACvB,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,oBAAA,CAAqB,KAAK,CAAA;AAMrD,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,MAAA,KAAA,MAAW,QAAA,IAAY,KAAK,UAAA,EAAY;AACtC,QAAA,MAAM,UAAA,GAAa,cAAc,QAAQ,CAAA,CAAE,OAAO,CAAA,CAAA,KAAK,cAAA,CAAe,CAAC,CAAA,KAAM,IAAI,CAAA;AACjF,QAAA,IAAI,sBAAA,CAAuB,GAAA,CAAI,QAAQ,CAAA,EAAG;AACxC,UAAA,MAAM,KAAA,GAAQ,iBAAiB,UAAU,CAAA;AACzC,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,MAAM,OAAA,GAAU,OAAO,IAAA,CAAK,GAAA,KAAQ,WAAW,CAAA,CAAA,EAAI,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,GAAM,WAAA;AACjE,YAAA,OAAA,CAAQ,IAAA;AAAA,cACN,CAAA,oBAAA,EAAuB,QAAQ,CAAA,UAAA,EAAa,OAAO,CAAA,EAAA,EAAK,WAAW,IAAA,CAAK,IAAI,CAAC,CAAA,SAAA,EAAO,KAAK,CAAA,uFAAA;AAAA,aAC3F;AAAA,UACF;AACA,UAAA;AAAA,QACF;AACA,QAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,UAAA,MAAM,OAAA,GAAU,OAAO,IAAA,CAAK,GAAA,KAAQ,WAAW,CAAA,CAAA,EAAI,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,GAAM,WAAA;AACjE,UAAA,OAAA,CAAQ,IAAA;AAAA,YACN,CAAA,oBAAA,EAAuB,QAAQ,CAAA,UAAA,EAAa,OAAO,CAAA,EAAA,EAAK,UAAA,CAAW,IAAA,CAAK,IAAI,CAAC,CAAA,SAAA,EAAO,UAAA,CAAW,CAAC,CAAC,CAAA,6EAAA;AAAA,WACnG;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,IAAA,CAAK,eAAA,EAAgB;AAO1C,IAAA,MAAM,QAAA,GAAW,KAAA;AACjB,IAAA,MAAM,QAAsC,EAAC;AAC7C,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,EAAG;AACvC,MAAA,IAAI,SAAS,GAAA,CAAI,GAAG,KAAK,cAAA,CAAe,GAAA,CAAI,GAAG,CAAA,EAAG;AAChD,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,GAAG,CAAA,GAAI,QAAA,CAAS,GAAG,CAAA;AAAA,IAC3B;AAGA,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,qBAAA,CAAsB,QAAQ,CAAA,EAAG;AACxD,MAAA,IAAI,OAAO,SAAA,CAAU,oBAAA,CAAqB,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,EAAG;AAC7D,QAAA,KAAA,CAAM,GAAG,CAAA,GAAI,QAAA,CAAS,GAAG,CAAA;AAAA,MAC3B;AAAA,IACF;AAEA,IAAA,MAAM,EAAE,SAAA,EAAW,GAAA,EAAI,GAAI,KAAA;AAC3B,IAAA,MAAM,YAAA,GAAkC,GAAA,IAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,IAAK,KAAA;AAMrE,IAAA,MAAM,yBACJ,OAAO,YAAA,KAAiB,QAAA,IAAY,oBAAA,CAAqB,IAAI,YAAY,CAAA;AAC3E,IAAA,IAAI,QAAA,CAAS,QAAA,KAAa,MAAA,IAAa,sBAAA,EAAwB;AAC7D,MAAA,KAAA,CAAM,WAAW,QAAA,CAAS,QAAA;AAAA,IAC5B,CAAA,MAAA,IAAW,CAAC,sBAAA,IAA0B,UAAA,IAAc,KAAA,EAAO;AAIzD,MAAA,OAAO,KAAA,CAAM,QAAA;AAAA,IACf;AAMA,IAAA,IAAI,QAAA,CAAS,aAAa,MAAA,KACrB,OAAO,iBAAiB,QAAA,IAAY,YAAA,KAAiB,OAAA,IAAW,YAAA,KAAiB,UAAA,CAAA,EAAa;AACjG,MAAA,KAAA,CAAM,WAAW,QAAA,CAAS,QAAA;AAAA,IAC5B;AAGA,IAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AACpC,MAAA,MAAM,YAAA,GAAe,kBAAkB,YAAY,CAAA;AACnD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,UAAA,IAAI,IAAA,IAAQ,KAAA,EAAO,OAAO,KAAA,CAAM,IAAI,CAAA;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,qBAAA,GAAwB,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,aAAa,CAAA;AAClE,IAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,GAAG,qBAAA,EAAuB,SAAS,CAAA;AAEhE,IAAA,MAAM,iBAAyC,EAAC;AAChD,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,cAAA,CAAe,gBAAgB,IAAI,IAAA,CAAK,QAAA;AAAA,IAC1C;AACA,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,cAAA,CAAe,WAAW,IAAI,aAAA,CAAc,IAAA;AAAA,IAC9C;AACA,IAAA,IAAI,aAAA,CAAc,qBAAqB,kBAAA,EAAoB;AACzD,MAAA,cAAA,CAAe,iBAAiB,CAAA,GAAI,EAAA;AAAA,IACtC;AAGA,IAAA,MAAM,aAAA,GAAgB,aAAA,CAAc,UAAA,IAAc,aAAA,CAAc,YAAA,KAAiB,cAAA;AACjF,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,cAAA,CAAe,iBAAiB,IAAI,aAAA,CAAc,UAAA;AAAA,IACpD;AACA,IAAA,IAAI,aAAA,CAAc,WAAW,aAAA,EAAe;AAC1C,MAAA,cAAA,CAAe,cAAc,IAAI,aAAA,CAAc,OAAA;AAAA,IACjD;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,cAAA,CAAe,eAAe,CAAA,GAAI,MAAA;AAAA,IACpC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,cAAA,CAAe,eAAe,CAAA,GAAI,MAAA;AAElC,MAAA,MAAM,gBAAA,GAAmB,OAAO,YAAA,KAAiB,QAAA,IAAY,CAAC,SAAS,UAAA,EAAY,QAAQ,CAAA,CAAE,QAAA,CAAS,YAAY,CAAA;AAClH,MAAA,IAAI,QAAA,CAAS,eAAe,CAAA,KAAM,MAAA,IAAa,gBAAA,EAAkB;AAC/D,QAAA,cAAA,CAAe,eAAe,CAAA,GAAI,MAAA;AAAA,MACpC;AAAA,IACF;AAGA,IAAA,IAAI,aAAA,CAAc,aAAa,SAAA,EAAW;AACxC,MAAA,cAAA,CAAe,aAAa,CAAA,GAAI,OAAA;AAChC,MAAA,IAAI,QAAA,CAAS,cAAc,CAAA,KAAM,MAAA,EAAW;AAC1C,QAAA,cAAA,CAAe,cAAc,CAAA,GAAI,MAAA;AAAA,MACnC;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,YAAA;AAAA,MACL,YAAA;AAAA,MACA,UAAA,EAAY,EAAE,GAAG,KAAA,EAAO,GAAG,cAAA;AAAe,KAC5C;AAAA,EACF;AACF;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SimpleConsumerClassMapper } from '../appearance/simpleConsumerClassMapper.mjs';
|
|
2
2
|
import { ShadowAppearanceClassMapper } from '../appearance/shadowAppearanceClassMapper.mjs';
|
|
3
|
-
import { bgConsumerClasses, textConsumerClass, borderConsumerClass, ringConsumerClass, focusVisibleConsumerClass, accentConsumerClass, checkedBgConsumerClass } from '../../classes/appearanceClasses.mjs';
|
|
3
|
+
import { bgConsumerClasses, textConsumerClass, borderConsumerClass, ringConsumerClass, focusVisibleConsumerClass, accentConsumerClass, checkedBgConsumerClass, checkedOnlyBgConsumerClass } from '../../classes/appearanceClasses.mjs';
|
|
4
4
|
|
|
5
5
|
const bgAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base }, "bg");
|
|
6
6
|
const bgHoverAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base, hover: bgConsumerClasses.hover }, "bg");
|
|
@@ -12,7 +12,8 @@ const ringAppearance = new SimpleConsumerClassMapper({ base: ringConsumerClass,
|
|
|
12
12
|
const focusVisibleAppearance = new SimpleConsumerClassMapper({ base: focusVisibleConsumerClass }, "focusVisible");
|
|
13
13
|
const accentAppearance = new SimpleConsumerClassMapper({ base: accentConsumerClass }, "accent");
|
|
14
14
|
const checkedBgAppearance = new SimpleConsumerClassMapper({ base: checkedBgConsumerClass }, "bg");
|
|
15
|
+
const checkedOnlyBgAppearance = new SimpleConsumerClassMapper({ base: checkedOnlyBgConsumerClass }, "bg");
|
|
15
16
|
const shadowAppearance = new ShadowAppearanceClassMapper();
|
|
16
17
|
|
|
17
|
-
export { accentAppearance, bgActiveAppearance, bgAppearance, bgHoverAppearance, bgHoverOnlyAppearance, borderAppearance, checkedBgAppearance, focusVisibleAppearance, ringAppearance, shadowAppearance, textAppearance };
|
|
18
|
+
export { accentAppearance, bgActiveAppearance, bgAppearance, bgHoverAppearance, bgHoverOnlyAppearance, borderAppearance, checkedBgAppearance, checkedOnlyBgAppearance, focusVisibleAppearance, ringAppearance, shadowAppearance, textAppearance };
|
|
18
19
|
//# sourceMappingURL=appearanceClassMappers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearanceClassMappers.mjs","sources":["../../../../../../src/components/ui/theme/common/appearanceClassMappers.ts"],"sourcesContent":["import { SimpleConsumerClassMapper } from \"../appearance/simpleConsumerClassMapper\";\nimport { ShadowAppearanceClassMapper } from \"../appearance/shadowAppearanceClassMapper\";\nimport {\n bgConsumerClasses,\n textConsumerClass,\n borderConsumerClass,\n ringConsumerClass,\n focusVisibleConsumerClass,\n accentConsumerClass,\n checkedBgConsumerClass\n} from \"../../classes/appearanceClasses\";\n\n/** Background appearance — base color only */\nexport const bgAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base }, 'bg');\n\n/** Background appearance — base + hover */\nexport const bgHoverAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base, hover: bgConsumerClasses.hover }, 'bg');\n\n/** Background appearance — hover only, no idle bg (MenuItem, NavLink, MenuLabel) */\nexport const bgHoverOnlyAppearance = new SimpleConsumerClassMapper({ hover: bgConsumerClasses.hover }, 'bg');\n\n/** Background appearance — base + hover + active (Button) */\nexport const bgActiveAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base, hover: bgConsumerClasses.hover, active: bgConsumerClasses.active }, 'bg');\n\n/** Text color appearance */\nexport const textAppearance = new SimpleConsumerClassMapper({ base: textConsumerClass }, 'text');\n\n/** Border color appearance — alwaysOutput so border has a color even without an explicit appearance prop */\nexport const borderAppearance = new SimpleConsumerClassMapper({ base: borderConsumerClass, alwaysOutput: true }, 'border');\n\n/** Ring color appearance — alwaysOutput so ring has a color even without an explicit appearance prop (symmetric with border) */\nexport const ringAppearance = new SimpleConsumerClassMapper({ base: ringConsumerClass, alwaysOutput: true }, 'ring');\n\n/** Focus-visible outline appearance */\nexport const focusVisibleAppearance = new SimpleConsumerClassMapper({ base: focusVisibleConsumerClass }, 'focusVisible');\n\n/** Accent color appearance (Checkbox) */\nexport const accentAppearance = new SimpleConsumerClassMapper({ base: accentConsumerClass }, 'accent');\n\n/** Checked background appearance (Checkbox) */\nexport const checkedBgAppearance = new SimpleConsumerClassMapper({ base: checkedBgConsumerClass }, 'bg');\n\n/** Shadow appearance (static — differentiation between UI/layout happens via CSS variables) */\nexport const shadowAppearance = new ShadowAppearanceClassMapper();\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"appearanceClassMappers.mjs","sources":["../../../../../../src/components/ui/theme/common/appearanceClassMappers.ts"],"sourcesContent":["import { SimpleConsumerClassMapper } from \"../appearance/simpleConsumerClassMapper\";\nimport { ShadowAppearanceClassMapper } from \"../appearance/shadowAppearanceClassMapper\";\nimport {\n bgConsumerClasses,\n textConsumerClass,\n borderConsumerClass,\n ringConsumerClass,\n focusVisibleConsumerClass,\n accentConsumerClass,\n checkedBgConsumerClass,\n checkedOnlyBgConsumerClass\n} from \"../../classes/appearanceClasses\";\n\n/** Background appearance — base color only */\nexport const bgAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base }, 'bg');\n\n/** Background appearance — base + hover */\nexport const bgHoverAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base, hover: bgConsumerClasses.hover }, 'bg');\n\n/** Background appearance — hover only, no idle bg (MenuItem, NavLink, MenuLabel) */\nexport const bgHoverOnlyAppearance = new SimpleConsumerClassMapper({ hover: bgConsumerClasses.hover }, 'bg');\n\n/** Background appearance — base + hover + active (Button) */\nexport const bgActiveAppearance = new SimpleConsumerClassMapper({ base: bgConsumerClasses.base, hover: bgConsumerClasses.hover, active: bgConsumerClasses.active }, 'bg');\n\n/** Text color appearance */\nexport const textAppearance = new SimpleConsumerClassMapper({ base: textConsumerClass }, 'text');\n\n/** Border color appearance — alwaysOutput so border has a color even without an explicit appearance prop */\nexport const borderAppearance = new SimpleConsumerClassMapper({ base: borderConsumerClass, alwaysOutput: true }, 'border');\n\n/** Ring color appearance — alwaysOutput so ring has a color even without an explicit appearance prop (symmetric with border) */\nexport const ringAppearance = new SimpleConsumerClassMapper({ base: ringConsumerClass, alwaysOutput: true }, 'ring');\n\n/** Focus-visible outline appearance */\nexport const focusVisibleAppearance = new SimpleConsumerClassMapper({ base: focusVisibleConsumerClass }, 'focusVisible');\n\n/** Accent color appearance (Checkbox) */\nexport const accentAppearance = new SimpleConsumerClassMapper({ base: accentConsumerClass }, 'accent');\n\n/** Checked background appearance (Checkbox) */\nexport const checkedBgAppearance = new SimpleConsumerClassMapper({ base: checkedBgConsumerClass }, 'bg');\n\n/** Checked-only background appearance (Radio) */\nexport const checkedOnlyBgAppearance = new SimpleConsumerClassMapper({ base: checkedOnlyBgConsumerClass }, 'bg');\n\n/** Shadow appearance (static — differentiation between UI/layout happens via CSS variables) */\nexport const shadowAppearance = new ShadowAppearanceClassMapper();\n"],"names":[],"mappings":";;;;AAcO,MAAM,YAAA,GAAe,IAAI,yBAAA,CAA0B,EAAE,MAAM,iBAAA,CAAkB,IAAA,IAAQ,IAAI;AAGzF,MAAM,iBAAA,GAAoB,IAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,iBAAA,CAAkB,KAAA,EAAM,EAAG,IAAI;AAG9H,MAAM,qBAAA,GAAwB,IAAI,yBAAA,CAA0B,EAAE,OAAO,iBAAA,CAAkB,KAAA,IAAS,IAAI;AAGpG,MAAM,kBAAA,GAAqB,IAAI,yBAAA,CAA0B,EAAE,MAAM,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,iBAAA,CAAkB,KAAA,EAAO,MAAA,EAAQ,iBAAA,CAAkB,MAAA,IAAU,IAAI;AAGjK,MAAM,iBAAiB,IAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,iBAAA,IAAqB,MAAM;AAGxF,MAAM,gBAAA,GAAmB,IAAI,yBAAA,CAA0B,EAAE,MAAM,mBAAA,EAAqB,YAAA,EAAc,IAAA,EAAK,EAAG,QAAQ;AAGlH,MAAM,cAAA,GAAiB,IAAI,yBAAA,CAA0B,EAAE,MAAM,iBAAA,EAAmB,YAAA,EAAc,IAAA,EAAK,EAAG,MAAM;AAG5G,MAAM,yBAAyB,IAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,yBAAA,IAA6B,cAAc;AAGhH,MAAM,mBAAmB,IAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,mBAAA,IAAuB,QAAQ;AAG9F,MAAM,sBAAsB,IAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,sBAAA,IAA0B,IAAI;AAGhG,MAAM,0BAA0B,IAAI,yBAAA,CAA0B,EAAE,IAAA,EAAM,0BAAA,IAA8B,IAAI;AAGxG,MAAM,gBAAA,GAAmB,IAAI,2BAAA;;;;"}
|
|
@@ -3,8 +3,8 @@ import { BaseClassMapper } from '../common/BaseClassMapper.mjs';
|
|
|
3
3
|
class TransitionClassMapper extends BaseClassMapper {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
6
|
-
/** Enable transitions -
|
|
7
|
-
this.transition = "transition
|
|
6
|
+
/** Enable transitions - colors, shadows and transforms fade; outline width/offset (the focus ring) stay instant */
|
|
7
|
+
this.transition = "transition duration-(--transition-duration) ease-(--transition-timing)";
|
|
8
8
|
/** Disable transitions - instant state changes (useful for reduced-motion) */
|
|
9
9
|
this.noTransition = "transition-none";
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitionClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/layout/transitionClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, TransitionKey } from \"../../props\";\n\n/**\n * Transition theme for controlling animation/transition effects.\n * Default transition reads duration and easing from --transition-duration\n * and --transition-timing CSS vars (defined in tokens.css), so consumers\n * can retune them globally with a single :root override.\n */\nexport class TransitionClassMapper extends BaseClassMapper implements Record<TransitionKey, string> {\n /** Enable transitions -
|
|
1
|
+
{"version":3,"file":"transitionClassMapper.mjs","sources":["../../../../../../src/components/ui/theme/layout/transitionClassMapper.ts"],"sourcesContent":["import { BaseClassMapper } from \"../common/BaseClassMapper\";\nimport type { CategoryProps, TransitionKey } from \"../../props\";\n\n/**\n * Transition theme for controlling animation/transition effects.\n * Default transition reads duration and easing from --transition-duration\n * and --transition-timing CSS vars (defined in tokens.css), so consumers\n * can retune them globally with a single :root override.\n */\nexport class TransitionClassMapper extends BaseClassMapper implements Record<TransitionKey, string> {\n /** Enable transitions - colors, shadows and transforms fade; outline width/offset (the focus ring) stay instant */\n transition: string = \"transition duration-(--transition-duration) ease-(--transition-timing)\";\n /** Disable transitions - instant state changes (useful for reduced-motion) */\n noTransition: string = \"transition-none\";\n\n getClasses(extractedKeys: CategoryProps): string[] {\n const transition = extractedKeys?.transition;\n if (transition === 'noTransition') {\n return [this.noTransition];\n }\n return transition === 'transition' ? [this.transition] : [];\n }\n}\n"],"names":[],"mappings":";;AASO,MAAM,8BAA8B,eAAA,CAAyD;AAAA,EAA7F,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEL;AAAA,IAAA,IAAA,CAAA,UAAA,GAAqB,wEAAA;AAErB;AAAA,IAAA,IAAA,CAAA,YAAA,GAAuB,iBAAA;AAAA,EAAA;AAAA,EAEvB,WAAW,aAAA,EAAwC;AACjD,IAAA,MAAM,aAAa,aAAA,EAAe,UAAA;AAClC,IAAA,IAAI,eAAe,cAAA,EAAgB;AACjC,MAAA,OAAO,CAAC,KAAK,YAAY,CAAA;AAAA,IAC3B;AACA,IAAA,OAAO,eAAe,YAAA,GAAe,CAAC,IAAA,CAAK,UAAU,IAAI,EAAC;AAAA,EAC5D;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltipDefaults.mjs","sources":["../../../../../src/components/ui/tooltip/tooltipDefaults.ts"],"sourcesContent":["import type { PopupProps } from \"../popup/PopupProps\";\n\n/** Tooltip popup: smaller and filled, so it reads as an overlay label rather than a panel. */\nexport const tooltipDefaults: Partial<PopupProps> = {\n sm: true,\n fixed: true,\n flex: true,\n column: true,\n noGap: true,\n rounded: true,\n shadow: true,\n noBorder: true,\n noInsetRing: true,\n secondary: true,\n filled: true,\n wFit: true,\n placeTop: true,\n};\n"],"names":[],"mappings":"AAGO,MAAM,eAAA,GAAuC;AAAA,EAClD,EAAA,EAAI,IAAA;AAAA,EACJ,KAAA,EAAO,IAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,MAAA,EAAQ,IAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS,IAAA;AAAA,EACT,MAAA,EAAQ,IAAA;AAAA,EACR,QAAA,EAAU,IAAA;AAAA,EACV,WAAA,EAAa,IAAA;AAAA,EACb,SAAA,EAAW,IAAA;AAAA,EACX,MAAA,EAAQ,IAAA;AAAA,EACR,IAAA,EAAM,IAAA;AAAA,EACN,QAAA,EAAU;AACZ;;;;"}
|
|
1
|
+
{"version":3,"file":"tooltipDefaults.mjs","sources":["../../../../../src/components/ui/tooltip/tooltipDefaults.ts"],"sourcesContent":["import type { PopupProps } from \"../popup/PopupProps\";\n\n/** Tooltip popup: smaller and filled, so it reads as an overlay label rather than a panel. */\nexport const tooltipDefaults: Partial<PopupProps> = {\n sm: true,\n fixed: true,\n flex: true,\n column: true,\n noGap: true,\n rounded: true,\n shadow: true,\n noBorder: true,\n noInsetRing: true,\n secondary: true,\n filled: true,\n wFit: true,\n fontSans: true,\n placeTop: true,\n};\n"],"names":[],"mappings":"AAGO,MAAM,eAAA,GAAuC;AAAA,EAClD,EAAA,EAAI,IAAA;AAAA,EACJ,KAAA,EAAO,IAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,MAAA,EAAQ,IAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS,IAAA;AAAA,EACT,MAAA,EAAQ,IAAA;AAAA,EACR,QAAA,EAAU,IAAA;AAAA,EACV,WAAA,EAAa,IAAA;AAAA,EACb,SAAA,EAAW,IAAA;AAAA,EACX,MAAA,EAAQ,IAAA;AAAA,EACR,IAAA,EAAM,IAAA;AAAA,EACN,QAAA,EAAU,IAAA;AAAA,EACV,QAAA,EAAU;AACZ;;;;"}
|
|
@@ -4,6 +4,7 @@ import { forwardRef } from 'react';
|
|
|
4
4
|
import { useTheme } from '../../../themeContext.mjs';
|
|
5
5
|
import { ThemedComponent } from '../../../themedComponent.mjs';
|
|
6
6
|
import { resolveDisabledLink } from '../../../utils/disabledLink.mjs';
|
|
7
|
+
import { pickFirstTruthyKeyByCategory } from '../../../utils/componentUtils.mjs';
|
|
7
8
|
import { defaultLinkTheme } from './defaultLinkTheme.mjs';
|
|
8
9
|
|
|
9
10
|
const Link = forwardRef(
|
|
@@ -20,7 +21,9 @@ const Link = forwardRef(
|
|
|
20
21
|
const resolvedProps = resolveDisabledLink(derivedProps, !!rest.disabled);
|
|
21
22
|
const opensNewWindow = finalTarget === "_blank" && !rest.disabled && !rest["aria-label"];
|
|
22
23
|
const { children, ...linkProps } = resolvedProps;
|
|
23
|
-
|
|
24
|
+
const explicitSize = pickFirstTruthyKeyByCategory(rest, {}, "size");
|
|
25
|
+
const sizeInjection = explicitSize && !rest.inheritSize ? { noInheritSize: true } : void 0;
|
|
26
|
+
return /* @__PURE__ */ jsxs(ThemedComponent, { ref, theme: theme?.link ?? defaultLinkTheme, ...sizeInjection, ...linkProps, children: [
|
|
24
27
|
children,
|
|
25
28
|
opensNewWindow && /* @__PURE__ */ jsx("span", { className: "sr-only", children: " (opens in new window)" })
|
|
26
29
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.mjs","sources":["../../../../../../src/components/ui/typography/link/Link.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from 'react';\nimport type { LinkProps } from \"./LinkProps\";\nimport { useTheme } from \"../../../themeContext\";\nimport { ThemedComponent } from \"../../../themedComponent\";\nimport { resolveDisabledLink } from \"../../../utils/disabledLink\";\nimport { defaultLinkTheme } from \"./defaultLinkTheme\";\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n function Link(props, ref) {\n const { external, ...rest } = props;\n const theme = useTheme();\n\n const finalTarget = rest.target ?? (external ? '_blank' : undefined);\n const finalRel = rest.rel ?? (finalTarget === '_blank' ? 'noopener noreferrer' : undefined);\n\n const derivedProps = {\n ...rest,\n ...(finalTarget !== undefined && { target: finalTarget }),\n ...(finalRel !== undefined && { rel: finalRel }),\n };\n\n // disabled <a>: drop href + block activation while staying focusable\n // (aria-disabled pattern); a no-op when not disabled\n const resolvedProps = resolveDisabledLink(derivedProps, !!rest.disabled);\n\n // a link opening a new tab needs a programmatically-available advisory\n // (SC 3.2.2). Append a visually-hidden note so AT announces it with no\n // visual change; skipped for disabled links (no navigation happens) and\n // when the consumer already provided an aria-label.\n const opensNewWindow =\n finalTarget === '_blank' && !rest.disabled && !(rest as { 'aria-label'?: string })['aria-label'];\n const { children, ...linkProps } = resolvedProps as typeof resolvedProps & { children?: ReactNode };\n\n return (\n <ThemedComponent ref={ref} theme={theme?.link ?? defaultLinkTheme} {...linkProps}>\n {children}\n {opensNewWindow && <span className=\"sr-only\"> (opens in new window)</span>}\n </ThemedComponent>\n );\n }\n);\n\nLink.displayName = 'Link';\n"],"names":["Link"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Link.mjs","sources":["../../../../../../src/components/ui/typography/link/Link.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from 'react';\nimport type { LinkProps } from \"./LinkProps\";\nimport { useTheme } from \"../../../themeContext\";\nimport { ThemedComponent } from \"../../../themedComponent\";\nimport { resolveDisabledLink } from \"../../../utils/disabledLink\";\nimport { pickFirstTruthyKeyByCategory } from \"../../../utils/componentUtils\";\nimport { defaultLinkTheme } from \"./defaultLinkTheme\";\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n function Link(props, ref) {\n const { external, ...rest } = props;\n const theme = useTheme();\n\n const finalTarget = rest.target ?? (external ? '_blank' : undefined);\n const finalRel = rest.rel ?? (finalTarget === '_blank' ? 'noopener noreferrer' : undefined);\n\n const derivedProps = {\n ...rest,\n ...(finalTarget !== undefined && { target: finalTarget }),\n ...(finalRel !== undefined && { rel: finalRel }),\n };\n\n // disabled <a>: drop href + block activation while staying focusable\n // (aria-disabled pattern); a no-op when not disabled\n const resolvedProps = resolveDisabledLink(derivedProps, !!rest.disabled);\n\n // a link opening a new tab needs a programmatically-available advisory\n // (SC 3.2.2). Append a visually-hidden note so AT announces it with no\n // visual change; skipped for disabled links (no navigation happens) and\n // when the consumer already provided an aria-label.\n const opensNewWindow =\n finalTarget === '_blank' && !rest.disabled && !(rest as { 'aria-label'?: string })['aria-label'];\n const { children, ...linkProps } = resolvedProps as typeof resolvedProps & { children?: ReactNode };\n\n // an explicit size wins over the inheritSize default, unless inheritSize is also passed\n const explicitSize = pickFirstTruthyKeyByCategory(rest as Record<string, unknown>, {}, 'size');\n const sizeInjection = explicitSize && !rest.inheritSize ? { noInheritSize: true as const } : undefined;\n\n return (\n <ThemedComponent ref={ref} theme={theme?.link ?? defaultLinkTheme} {...sizeInjection} {...linkProps}>\n {children}\n {opensNewWindow && <span className=\"sr-only\"> (opens in new window)</span>}\n </ThemedComponent>\n );\n }\n);\n\nLink.displayName = 'Link';\n"],"names":["Link"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TYPOGRAPHY_CATEGORIES } from '../common/TypographyCategories.mjs';
|
|
2
2
|
|
|
3
|
-
const LINK_CATEGORIES = [...TYPOGRAPHY_CATEGORIES, "focusVisible"];
|
|
3
|
+
const LINK_CATEGORIES = [...TYPOGRAPHY_CATEGORIES, "focusVisible", "disabled"];
|
|
4
4
|
|
|
5
5
|
export { LINK_CATEGORIES };
|
|
6
6
|
//# sourceMappingURL=LinkCategories.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkCategories.mjs","sources":["../../../../../../src/components/ui/typography/link/LinkCategories.ts"],"sourcesContent":["import { TYPOGRAPHY_CATEGORIES } from \"../common\";\n\n/** Link-specific categories. Adds `focusVisible`
|
|
1
|
+
{"version":3,"file":"LinkCategories.mjs","sources":["../../../../../../src/components/ui/typography/link/LinkCategories.ts"],"sourcesContent":["import { TYPOGRAPHY_CATEGORIES } from \"../common\";\n\n/** Link-specific categories. Adds `focusVisible` (a focus ring on the rendered `<a>`)\n * and `disabled` (the dimmed disabled look). Other typography components (Text, Title, …)\n * are not focusable by default, so they keep the slimmer TYPOGRAPHY_CATEGORIES. */\nexport const LINK_CATEGORIES = [...TYPOGRAPHY_CATEGORIES, 'focusVisible', 'disabled'] as const;\n"],"names":[],"mappings":";;AAKO,MAAM,eAAA,GAAkB,CAAC,GAAG,qBAAA,EAAuB,gBAAgB,UAAU;;;;"}
|
|
@@ -5,6 +5,8 @@ import { typographyClassMappers } from '../../theme/common/typographyClassMapper
|
|
|
5
5
|
import '../../theme/common/appearanceClassMappers.mjs';
|
|
6
6
|
import { FocusVisibleClassMapper } from '../../theme/layout/focusVisibleClassMapper.mjs';
|
|
7
7
|
import { LinkVariantClassMapper } from '../../theme/appearance/linkVariantClassMapper.mjs';
|
|
8
|
+
import { SimpleConsumerClassMapper } from '../../theme/appearance/simpleConsumerClassMapper.mjs';
|
|
9
|
+
import { DisabledVisualClassMapper } from '../../theme/appearance/disabledClassMapper.mjs';
|
|
8
10
|
import { LINK_CATEGORIES } from './LinkCategories.mjs';
|
|
9
11
|
import { linkDefaults } from './linkDefaults.mjs';
|
|
10
12
|
|
|
@@ -17,12 +19,16 @@ const defaultLinkTheme = new ComponentTheme(
|
|
|
17
19
|
...typographyClassMappers.appearance,
|
|
18
20
|
// delta: link-variant colors (cascading --link-text / --app-text) instead
|
|
19
21
|
// of the generic text appearance — Link has no data-variant to drive --text-color
|
|
20
|
-
text: new LinkVariantClassMapper()
|
|
22
|
+
text: new LinkVariantClassMapper(),
|
|
23
|
+
// delta: the focus ring takes the link's own color; Link has no appearance, so --focus-color would be unset
|
|
24
|
+
focusVisible: new SimpleConsumerClassMapper({ base: "focus-visible:outline-current", alwaysOutput: true }, "focusVisible")
|
|
21
25
|
},
|
|
22
26
|
layout: {
|
|
23
27
|
...typographyClassMappers.layout,
|
|
24
28
|
// delta: LINK_CATEGORIES adds `focusVisible` so the rendered <a> can show a keyboard focus ring
|
|
25
|
-
focusVisible: new FocusVisibleClassMapper()
|
|
29
|
+
focusVisible: new FocusVisibleClassMapper(),
|
|
30
|
+
// delta: a disabled link dims like other disabled controls; after cursor so not-allowed wins over pointer
|
|
31
|
+
disabled: new DisabledVisualClassMapper()
|
|
26
32
|
}
|
|
27
33
|
},
|
|
28
34
|
linkDefaults,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultLinkTheme.mjs","sources":["../../../../../../src/components/ui/typography/link/defaultLinkTheme.ts"],"sourcesContent":["import { ComponentTheme } from \"../../theme/common\";\nimport type { TypographyProps } from \"../common\";\nimport type { LinkTheme } from \"./LinkTheme\";\nimport { typographyClassMappers } from \"../../theme/common/typographyClassMappers\";\nimport { FocusVisibleClassMapper } from \"../../theme/layout/focusVisibleClassMapper\";\nimport { LinkVariantClassMapper } from \"../../theme/appearance/linkVariantClassMapper\";\nimport { LINK_CATEGORIES } from \"./LinkCategories\";\nimport { linkDefaults } from \"./linkDefaults\";\n\n/* Link theme composed over the shared typographyClassMappers (inherits size/typography/layout); only the deltas below diverge. Background-less like all typography. */\nexport const defaultLinkTheme: ComponentTheme<TypographyProps, LinkTheme> = new ComponentTheme<TypographyProps, LinkTheme>(\n \"a\",\n \"vane-link hover:underline\",\n {\n ...typographyClassMappers,\n appearance: {\n ...typographyClassMappers.appearance,\n // delta: link-variant colors (cascading --link-text / --app-text) instead\n // of the generic text appearance — Link has no data-variant to drive --text-color\n text: new LinkVariantClassMapper(),\n },\n layout: {\n ...typographyClassMappers.layout,\n // delta: LINK_CATEGORIES adds `focusVisible` so the rendered <a> can show a keyboard focus ring\n focusVisible: new FocusVisibleClassMapper(),\n },\n },\n linkDefaults,\n LINK_CATEGORIES,\n undefined,\n 'ui'\n);\n\n/** Alias for backward compatibility */\nexport const linkTheme = defaultLinkTheme;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaultLinkTheme.mjs","sources":["../../../../../../src/components/ui/typography/link/defaultLinkTheme.ts"],"sourcesContent":["import { ComponentTheme } from \"../../theme/common\";\nimport type { TypographyProps } from \"../common\";\nimport type { LinkTheme } from \"./LinkTheme\";\nimport { typographyClassMappers } from \"../../theme/common/typographyClassMappers\";\nimport { FocusVisibleClassMapper } from \"../../theme/layout/focusVisibleClassMapper\";\nimport { LinkVariantClassMapper } from \"../../theme/appearance/linkVariantClassMapper\";\nimport { SimpleConsumerClassMapper } from \"../../theme/appearance/simpleConsumerClassMapper\";\nimport { DisabledVisualClassMapper } from \"../../theme/appearance/disabledClassMapper\";\nimport { LINK_CATEGORIES } from \"./LinkCategories\";\nimport { linkDefaults } from \"./linkDefaults\";\n\n/* Link theme composed over the shared typographyClassMappers (inherits size/typography/layout); only the deltas below diverge. Background-less like all typography. */\nexport const defaultLinkTheme: ComponentTheme<TypographyProps, LinkTheme> = new ComponentTheme<TypographyProps, LinkTheme>(\n \"a\",\n \"vane-link hover:underline\",\n {\n ...typographyClassMappers,\n appearance: {\n ...typographyClassMappers.appearance,\n // delta: link-variant colors (cascading --link-text / --app-text) instead\n // of the generic text appearance — Link has no data-variant to drive --text-color\n text: new LinkVariantClassMapper(),\n // delta: the focus ring takes the link's own color; Link has no appearance, so --focus-color would be unset\n focusVisible: new SimpleConsumerClassMapper({ base: \"focus-visible:outline-current\", alwaysOutput: true }, 'focusVisible'),\n },\n layout: {\n ...typographyClassMappers.layout,\n // delta: LINK_CATEGORIES adds `focusVisible` so the rendered <a> can show a keyboard focus ring\n focusVisible: new FocusVisibleClassMapper(),\n // delta: a disabled link dims like other disabled controls; after cursor so not-allowed wins over pointer\n disabled: new DisabledVisualClassMapper(),\n },\n },\n linkDefaults,\n LINK_CATEGORIES,\n undefined,\n 'ui'\n);\n\n/** Alias for backward compatibility */\nexport const linkTheme = defaultLinkTheme;\n"],"names":[],"mappings":";;;;;;;;;;;;AAYO,MAAM,mBAA+D,IAAI,cAAA;AAAA,EAC9E,GAAA;AAAA,EACA,2BAAA;AAAA,EACA;AAAA,IACE,GAAG,sBAAA;AAAA,IACH,UAAA,EAAY;AAAA,MACV,GAAG,sBAAA,CAAuB,UAAA;AAAA;AAAA;AAAA,MAG1B,IAAA,EAAM,IAAI,sBAAA,EAAuB;AAAA;AAAA,MAEjC,YAAA,EAAc,IAAI,yBAAA,CAA0B,EAAE,MAAM,+BAAA,EAAiC,YAAA,EAAc,IAAA,EAAK,EAAG,cAAc;AAAA,KAC3H;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,GAAG,sBAAA,CAAuB,MAAA;AAAA;AAAA,MAE1B,YAAA,EAAc,IAAI,uBAAA,EAAwB;AAAA;AAAA,MAE1C,QAAA,EAAU,IAAI,yBAAA;AAA0B;AAC1C,GACF;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAGO,MAAM,SAAA,GAAY;;;;"}
|
|
@@ -12,8 +12,6 @@ const ListItem = forwardRef(
|
|
|
12
12
|
return /* @__PURE__ */ jsxs(ThemedComponent, { ref, theme: theme?.listItem ?? defaultListItemTheme, ...rest, ...dataAttr, children: [
|
|
13
13
|
icon ? (
|
|
14
14
|
// me- (margin-inline-end) keeps the icon-to-text gap on the correct side under RTL.
|
|
15
|
-
// ListItem uses the full --gap (list content); Link's inline icons deliberately use
|
|
16
|
-
// half (.vane-link-start-icon / -end-icon in rules.css) for tighter inline runs.
|
|
17
15
|
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "vane-list-item-icon me-(--gap) inline-flex items-center justify-center align-middle h-(--icon-size) min-w-(--icon-size)", children: icon })
|
|
18
16
|
) : null,
|
|
19
17
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.mjs","sources":["../../../../../../src/components/ui/typography/listItem/ListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport type { ListItemProps } from './ListItemProps';\nimport { useTheme } from \"../../../themeContext\";\nimport { ThemedComponent } from \"../../../themedComponent\";\nimport { defaultListItemTheme } from \"./defaultListItemTheme\";\n\n// `icon` replaces the native list marker; data-has-icon suppresses list-style via base selector\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n function ListItem({ icon, children, ...rest }, ref) {\n const theme = useTheme();\n const dataAttr = icon ? { 'data-has-icon': 'true' as const } : {};\n return (\n <ThemedComponent ref={ref} theme={theme?.listItem ?? defaultListItemTheme} {...rest} {...dataAttr}>\n {icon ? (\n // me- (margin-inline-end) keeps the icon-to-text gap on the correct side under RTL.\n
|
|
1
|
+
{"version":3,"file":"ListItem.mjs","sources":["../../../../../../src/components/ui/typography/listItem/ListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport type { ListItemProps } from './ListItemProps';\nimport { useTheme } from \"../../../themeContext\";\nimport { ThemedComponent } from \"../../../themedComponent\";\nimport { defaultListItemTheme } from \"./defaultListItemTheme\";\n\n// `icon` replaces the native list marker; data-has-icon suppresses list-style via base selector\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n function ListItem({ icon, children, ...rest }, ref) {\n const theme = useTheme();\n const dataAttr = icon ? { 'data-has-icon': 'true' as const } : {};\n return (\n <ThemedComponent ref={ref} theme={theme?.listItem ?? defaultListItemTheme} {...rest} {...dataAttr}>\n {icon ? (\n // me- (margin-inline-end) keeps the icon-to-text gap on the correct side under RTL.\n <span aria-hidden=\"true\" className=\"vane-list-item-icon me-(--gap) inline-flex items-center justify-center align-middle h-(--icon-size) min-w-(--icon-size)\">\n {icon}\n </span>\n ) : null}\n {children}\n </ThemedComponent>\n );\n }\n);\n\nListItem.displayName = 'ListItem';\n"],"names":["ListItem"],"mappings":"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"}
|