@recursica/adapter-mui-v7 1.0.0
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/.storybook/commonArgTypes.ts +148 -0
- package/ARCHITECTURE.md +18 -0
- package/CHANGELOG.md +582 -0
- package/LICENSE +21 -0
- package/OVERSTYLING.md +59 -0
- package/README.md +70 -0
- package/SETUP.md +92 -0
- package/USAGE.md +57 -0
- package/dist/adapter-mui-v7.cjs +292 -0
- package/dist/adapter-mui-v7.cjs.map +1 -0
- package/dist/adapter-mui-v7.css +1 -0
- package/dist/adapter-mui-v7.js +40757 -0
- package/dist/adapter-mui-v7.js.map +1 -0
- package/dist/index.d.ts +2350 -0
- package/dist/vite.svg +1 -0
- package/docs/PHILOSOPHY.md +39 -0
- package/llms.txt +76 -0
- package/package.json +151 -0
- package/recursica_brand.json +2677 -0
- package/recursica_tokens.json +799 -0
- package/recursica_ui-kit.json +14981 -0
- package/recursica_variables_scoped.css +30489 -0
- package/src/GlobalExemptions.modules.css +7 -0
- package/src/Introduction.stories.tsx +184 -0
- package/src/OverStyling.tsx +87 -0
- package/src/Version.tsx +37 -0
- package/src/components/Accordion/ACCORDION_IMPLEMENTATION_NOTES.md +107 -0
- package/src/components/Accordion/Accordion.module.css +362 -0
- package/src/components/Accordion/Accordion.stories.tsx +198 -0
- package/src/components/Accordion/Accordion.test.tsx +1 -0
- package/src/components/Accordion/Accordion.tsx +285 -0
- package/src/components/Accordion/USAGE.md +43 -0
- package/src/components/Accordion/index.ts +1 -0
- package/src/components/AssistiveElement/ASSISTIVEELEMENT_IMPLEMENTATION_NOTES.md +59 -0
- package/src/components/AssistiveElement/AssistiveElement.module.css +121 -0
- package/src/components/AssistiveElement/AssistiveElement.stories.tsx +68 -0
- package/src/components/AssistiveElement/AssistiveElement.test.tsx +1 -0
- package/src/components/AssistiveElement/AssistiveElement.tsx +94 -0
- package/src/components/AssistiveElement/USAGE.md +36 -0
- package/src/components/AssistiveElement/index.ts +1 -0
- package/src/components/AutoComplete/AutoComplete.module.css +456 -0
- package/src/components/AutoComplete/AutoComplete.stories.tsx +336 -0
- package/src/components/AutoComplete/AutoComplete.test.tsx +1 -0
- package/src/components/AutoComplete/AutoComplete.tsx +266 -0
- package/src/components/AutoComplete/IMPLEMENTATION_NOTES.md +37 -0
- package/src/components/AutoComplete/USAGE.md +68 -0
- package/src/components/AutoComplete/index.ts +1 -0
- package/src/components/Avatar/AVATAR_IMPLEMENTATION_NOTES.md +36 -0
- package/src/components/Avatar/Avatar.module.css +336 -0
- package/src/components/Avatar/Avatar.stories.tsx +92 -0
- package/src/components/Avatar/Avatar.test.tsx +1 -0
- package/src/components/Avatar/Avatar.tsx +88 -0
- package/src/components/Avatar/USAGE.md +38 -0
- package/src/components/Avatar/index.ts +1 -0
- package/src/components/Badge/Badge.module.css +115 -0
- package/src/components/Badge/Badge.stories.tsx +78 -0
- package/src/components/Badge/Badge.test.tsx +1 -0
- package/src/components/Badge/Badge.tsx +61 -0
- package/src/components/Badge/USAGE.md +40 -0
- package/src/components/Badge/index.ts +1 -0
- package/src/components/Breadcrumb/BREADCRUMB_IMPLEMENTATION_NOTES.md +51 -0
- package/src/components/Breadcrumb/Breadcrumb.module.css +51 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
- package/src/components/Breadcrumb/Breadcrumb.test.tsx +1 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +70 -0
- package/src/components/Breadcrumb/USAGE.md +42 -0
- package/src/components/Breadcrumb/index.ts +1 -0
- package/src/components/Button/BUTTON_IMPLEMENTATION_NOTES.md +123 -0
- package/src/components/Button/Button.module.css +413 -0
- package/src/components/Button/Button.stories.tsx +196 -0
- package/src/components/Button/Button.styleIsolation.dom.test.tsx +98 -0
- package/src/components/Button/Button.tsx +156 -0
- package/src/components/Button/USAGE.md +46 -0
- package/src/components/Button/index.ts +1 -0
- package/src/components/Card/CARD_IMPLEMENTATION_NOTES.md +15 -0
- package/src/components/Card/Card.module.css +155 -0
- package/src/components/Card/Card.stories.tsx +131 -0
- package/src/components/Card/Card.test.tsx +1 -0
- package/src/components/Card/Card.tsx +202 -0
- package/src/components/Card/USAGE.md +57 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/Checkbox/CHECKBOX_IMPLEMENTATION_NOTES.md +14 -0
- package/src/components/Checkbox/Checkbox.module.css +286 -0
- package/src/components/Checkbox/Checkbox.stories.tsx +97 -0
- package/src/components/Checkbox/Checkbox.test.tsx +1 -0
- package/src/components/Checkbox/Checkbox.tsx +259 -0
- package/src/components/Checkbox/CheckboxGroup.stories.tsx +139 -0
- package/src/components/Checkbox/CheckboxGroup.tsx +148 -0
- package/src/components/Checkbox/USAGE.md +36 -0
- package/src/components/Checkbox/index.ts +6 -0
- package/src/components/Chip/CHIP_IMPLEMENTATION_NOTES.md +102 -0
- package/src/components/Chip/Chip.module.css +283 -0
- package/src/components/Chip/Chip.stories.tsx +154 -0
- package/src/components/Chip/Chip.test.tsx +1 -0
- package/src/components/Chip/Chip.tsx +168 -0
- package/src/components/Chip/USAGE.md +55 -0
- package/src/components/Chip/index.ts +1 -0
- package/src/components/Container/Container.stories.tsx +118 -0
- package/src/components/Container/Container.test.tsx +1 -0
- package/src/components/Container/Container.tsx +51 -0
- package/src/components/Container/IMPLEMENTATION_NOTES.md +5 -0
- package/src/components/Container/USAGE.md +48 -0
- package/src/components/Container/index.ts +1 -0
- package/src/components/DatePicker/DATEPICKER_IMPLEMENTATION_NOTES.md +29 -0
- package/src/components/DatePicker/DatePicker.icons.tsx +35 -0
- package/src/components/DatePicker/DatePicker.module.css +464 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +163 -0
- package/src/components/DatePicker/DatePicker.test.tsx +1 -0
- package/src/components/DatePicker/DatePicker.tsx +229 -0
- package/src/components/DatePicker/USAGE.md +49 -0
- package/src/components/DatePicker/index.ts +1 -0
- package/src/components/Dropdown/BareDropdown.tsx +168 -0
- package/src/components/Dropdown/DROPDOWN_IMPLEMENTATION_NOTES.md +45 -0
- package/src/components/Dropdown/Dropdown.icons.tsx +33 -0
- package/src/components/Dropdown/Dropdown.module.css +535 -0
- package/src/components/Dropdown/Dropdown.stories.tsx +252 -0
- package/src/components/Dropdown/Dropdown.test.tsx +1 -0
- package/src/components/Dropdown/Dropdown.tsx +319 -0
- package/src/components/Dropdown/USAGE.md +68 -0
- package/src/components/Dropdown/index.ts +1 -0
- package/src/components/FileInput/FILEINPUT_IMPLEMENTATION_NOTES.md +153 -0
- package/src/components/FileInput/FileInput.module.css +268 -0
- package/src/components/FileInput/FileInput.stories.tsx +313 -0
- package/src/components/FileInput/FileInput.test.tsx +1 -0
- package/src/components/FileInput/FileInput.tsx +415 -0
- package/src/components/FileInput/USAGE.md +145 -0
- package/src/components/FileInput/index.ts +1 -0
- package/src/components/FileUpload/FILEUPLOAD_IMPLEMENTATION_NOTES.md +249 -0
- package/src/components/FileUpload/FileUpload.module.css +200 -0
- package/src/components/FileUpload/FileUpload.stories.tsx +362 -0
- package/src/components/FileUpload/FileUpload.test.tsx +1 -0
- package/src/components/FileUpload/FileUpload.tsx +352 -0
- package/src/components/FileUpload/USAGE.md +199 -0
- package/src/components/FileUpload/index.ts +1 -0
- package/src/components/Flex/Flex.stories.tsx +128 -0
- package/src/components/Flex/Flex.test.tsx +1 -0
- package/src/components/Flex/Flex.tsx +89 -0
- package/src/components/Flex/USAGE.md +41 -0
- package/src/components/Flex/index.ts +1 -0
- package/src/components/FormControlLayout/FormControlLayout.module.css +92 -0
- package/src/components/FormControlLayout/FormControlLayout.stories.tsx +118 -0
- package/src/components/FormControlLayout/FormControlLayout.test.tsx +1 -0
- package/src/components/FormControlLayout/FormControlLayout.tsx +72 -0
- package/src/components/FormControlLayout/USAGE.md +40 -0
- package/src/components/FormControlLayout/index.ts +1 -0
- package/src/components/FormControlWrapper/FORMCONTROLWRAPPER_IMPLEMENTATION_NOTES.md +35 -0
- package/src/components/FormControlWrapper/FormControlWrapper.module.css +87 -0
- package/src/components/FormControlWrapper/FormControlWrapper.stories.tsx +129 -0
- package/src/components/FormControlWrapper/FormControlWrapper.test.tsx +1 -0
- package/src/components/FormControlWrapper/FormControlWrapper.tsx +149 -0
- package/src/components/FormControlWrapper/USAGE.md +40 -0
- package/src/components/FormControlWrapper/index.ts +1 -0
- package/src/components/Grid/Grid.module.css +72 -0
- package/src/components/Grid/Grid.stories.tsx +161 -0
- package/src/components/Grid/Grid.test.tsx +1 -0
- package/src/components/Grid/Grid.tsx +155 -0
- package/src/components/Grid/IMPLEMENTATION_NOTES.md +24 -0
- package/src/components/Grid/USAGE.md +53 -0
- package/src/components/Grid/index.ts +1 -0
- package/src/components/Group/Group.stories.tsx +120 -0
- package/src/components/Group/Group.test.tsx +1 -0
- package/src/components/Group/Group.tsx +116 -0
- package/src/components/Group/USAGE.md +41 -0
- package/src/components/Group/index.ts +1 -0
- package/src/components/Heading/Heading.stories.tsx +50 -0
- package/src/components/Heading/Heading.test.tsx +1 -0
- package/src/components/Heading/Heading.tsx +28 -0
- package/src/components/Heading/USAGE.md +36 -0
- package/src/components/Heading/index.ts +1 -0
- package/src/components/HoverCard/HoverCard.module.css +107 -0
- package/src/components/HoverCard/HoverCard.stories.tsx +172 -0
- package/src/components/HoverCard/HoverCard.test.tsx +1 -0
- package/src/components/HoverCard/HoverCard.tsx +145 -0
- package/src/components/HoverCard/USAGE.md +45 -0
- package/src/components/HoverCard/index.ts +1 -0
- package/src/components/Label/LABEL_IMPLEMENTATION_NOTES.md +27 -0
- package/src/components/Label/Label.module.css +169 -0
- package/src/components/Label/Label.stories.tsx +131 -0
- package/src/components/Label/Label.test.tsx +1 -0
- package/src/components/Label/Label.tsx +96 -0
- package/src/components/Label/USAGE.md +36 -0
- package/src/components/Label/index.ts +1 -0
- package/src/components/Layer/USAGE.md +50 -0
- package/src/components/Link/LINK_IMPLEMENTATION_NOTES.md +9 -0
- package/src/components/Link/Link.module.css +105 -0
- package/src/components/Link/Link.stories.tsx +58 -0
- package/src/components/Link/Link.test.tsx +1 -0
- package/src/components/Link/Link.tsx +45 -0
- package/src/components/Link/USAGE.md +40 -0
- package/src/components/Link/index.ts +1 -0
- package/src/components/Loader/LOADER_IMPLEMENTATION_NOTES.md +25 -0
- package/src/components/Loader/Loader.animate.dom.test.tsx +72 -0
- package/src/components/Loader/Loader.module.css +175 -0
- package/src/components/Loader/Loader.stories.tsx +123 -0
- package/src/components/Loader/Loader.test.tsx +1 -0
- package/src/components/Loader/Loader.tsx +72 -0
- package/src/components/Loader/USAGE.md +42 -0
- package/src/components/Loader/index.ts +1 -0
- package/src/components/Menu/IMPLEMENTATION_NOTES.md +5 -0
- package/src/components/Menu/Menu.module.css +283 -0
- package/src/components/Menu/Menu.stories.tsx +405 -0
- package/src/components/Menu/Menu.test.tsx +1 -0
- package/src/components/Menu/Menu.tsx +103 -0
- package/src/components/Menu/USAGE.md +53 -0
- package/src/components/Menu/index.ts +1 -0
- package/src/components/Modal/MODAL_IMPLEMENTATION_NOTES.md +31 -0
- package/src/components/Modal/Modal.module.css +302 -0
- package/src/components/Modal/Modal.stories.tsx +105 -0
- package/src/components/Modal/Modal.test.tsx +1 -0
- package/src/components/Modal/Modal.tsx +231 -0
- package/src/components/Modal/USAGE.md +40 -0
- package/src/components/Modal/index.ts +1 -0
- package/src/components/NumberInput/NUMBER_INPUT_IMPLEMENTATION_NOTES.md +93 -0
- package/src/components/NumberInput/NumberInput.module.css +303 -0
- package/src/components/NumberInput/NumberInput.stories.tsx +96 -0
- package/src/components/NumberInput/NumberInput.test.tsx +1 -0
- package/src/components/NumberInput/NumberInput.tsx +273 -0
- package/src/components/NumberInput/USAGE.md +36 -0
- package/src/components/NumberInput/index.ts +1 -0
- package/src/components/Pagination/IMPLEMENTATION_NOTES.md +40 -0
- package/src/components/Pagination/Pagination.icons.tsx +66 -0
- package/src/components/Pagination/Pagination.module.css +197 -0
- package/src/components/Pagination/Pagination.stories.tsx +48 -0
- package/src/components/Pagination/Pagination.test.tsx +1 -0
- package/src/components/Pagination/Pagination.tsx +123 -0
- package/src/components/Pagination/USAGE.md +36 -0
- package/src/components/Pagination/index.ts +1 -0
- package/src/components/Panel/PANEL_IMPLEMENTATION_NOTES.md +133 -0
- package/src/components/Panel/Panel.module.css +231 -0
- package/src/components/Panel/Panel.stories.tsx +227 -0
- package/src/components/Panel/Panel.test.tsx +1 -0
- package/src/components/Panel/Panel.tsx +186 -0
- package/src/components/Panel/USAGE.md +46 -0
- package/src/components/Panel/index.ts +1 -0
- package/src/components/Popover/IMPLEMENTATION_NOTES.md +22 -0
- package/src/components/Popover/Popover.module.css +118 -0
- package/src/components/Popover/Popover.stories.tsx +133 -0
- package/src/components/Popover/Popover.test.tsx +1 -0
- package/src/components/Popover/Popover.tsx +267 -0
- package/src/components/Popover/USAGE.md +69 -0
- package/src/components/Popover/index.ts +1 -0
- package/src/components/Radio/RADIO_IMPLEMENTATION_NOTES.md +12 -0
- package/src/components/Radio/Radio.module.css +247 -0
- package/src/components/Radio/Radio.stories.tsx +93 -0
- package/src/components/Radio/Radio.test.tsx +1 -0
- package/src/components/Radio/Radio.tsx +223 -0
- package/src/components/Radio/RadioGroup.stories.tsx +117 -0
- package/src/components/Radio/RadioGroup.tsx +122 -0
- package/src/components/Radio/USAGE.md +36 -0
- package/src/components/Radio/index.ts +2 -0
- package/src/components/ReadOnlyField/ReadOnlyBooleanField.tsx +21 -0
- package/src/components/ReadOnlyField/ReadOnlyField.module.css +54 -0
- package/src/components/ReadOnlyField/ReadOnlyField.stories.tsx +163 -0
- package/src/components/ReadOnlyField/ReadOnlyField.test.tsx +1 -0
- package/src/components/ReadOnlyField/ReadOnlyField.tsx +108 -0
- package/src/components/ReadOnlyField/ReadOnlySwitchField.tsx +21 -0
- package/src/components/ReadOnlyField/ReadOnlyTextField.tsx +48 -0
- package/src/components/ReadOnlyField/USAGE.md +36 -0
- package/src/components/ReadOnlyField/WithReadOnlyWrapper.tsx +93 -0
- package/src/components/ReadOnlyField/index.ts +2 -0
- package/src/components/RecursicaThemeProvider/USAGE.md +60 -0
- package/src/components/SegmentedControl/IMPLEMENTATION_NOTES.md +14 -0
- package/src/components/SegmentedControl/SegmentedControl.module.css +201 -0
- package/src/components/SegmentedControl/SegmentedControl.stories.tsx +106 -0
- package/src/components/SegmentedControl/SegmentedControl.test.tsx +1 -0
- package/src/components/SegmentedControl/SegmentedControl.tsx +149 -0
- package/src/components/SegmentedControl/USAGE.md +49 -0
- package/src/components/SegmentedControl/index.ts +1 -0
- package/src/components/Slider/IMPLEMENTATION_NOTES.md +55 -0
- package/src/components/Slider/Slider.module.css +635 -0
- package/src/components/Slider/Slider.stories.tsx +282 -0
- package/src/components/Slider/Slider.test.tsx +1 -0
- package/src/components/Slider/Slider.tsx +435 -0
- package/src/components/Slider/USAGE.md +56 -0
- package/src/components/Slider/index.ts +1 -0
- package/src/components/Stack/Stack.stories.tsx +108 -0
- package/src/components/Stack/Stack.test.tsx +1 -0
- package/src/components/Stack/Stack.tsx +43 -0
- package/src/components/Stack/USAGE.md +41 -0
- package/src/components/Stack/index.ts +1 -0
- package/src/components/Stepper/IMPLEMENTATION_NOTES.md +120 -0
- package/src/components/Stepper/Stepper.module.css +474 -0
- package/src/components/Stepper/Stepper.stories.tsx +157 -0
- package/src/components/Stepper/Stepper.test.tsx +1 -0
- package/src/components/Stepper/Stepper.tsx +240 -0
- package/src/components/Stepper/USAGE.md +45 -0
- package/src/components/Stepper/index.ts +1 -0
- package/src/components/Switch/SWITCH_IMPLEMENTATION_NOTES.md +147 -0
- package/src/components/Switch/Switch.module.css +346 -0
- package/src/components/Switch/Switch.stories.tsx +114 -0
- package/src/components/Switch/Switch.test.tsx +1 -0
- package/src/components/Switch/Switch.tsx +294 -0
- package/src/components/Switch/SwitchGroup.stories.tsx +132 -0
- package/src/components/Switch/SwitchGroup.tsx +156 -0
- package/src/components/Switch/USAGE.md +36 -0
- package/src/components/Switch/index.ts +2 -0
- package/src/components/Table/TABLE_IMPLEMENTATION_NOTES.md +75 -0
- package/src/components/Table/Table.module.css +462 -0
- package/src/components/Table/Table.stories.tsx +154 -0
- package/src/components/Table/Table.test.tsx +1 -0
- package/src/components/Table/Table.tsx +250 -0
- package/src/components/Table/USAGE.md +90 -0
- package/src/components/Table/index.ts +1 -0
- package/src/components/Tabs/IMPLEMENTATION_NOTES.md +76 -0
- package/src/components/Tabs/Tabs.module.css +801 -0
- package/src/components/Tabs/Tabs.stories.tsx +174 -0
- package/src/components/Tabs/Tabs.test.tsx +1 -0
- package/src/components/Tabs/Tabs.tsx +103 -0
- package/src/components/Tabs/USAGE.md +61 -0
- package/src/components/Tabs/index.ts +1 -0
- package/src/components/Text/TEXT_IMPLEMENTATION_NOTES.md +10 -0
- package/src/components/Text/Text.stories.tsx +75 -0
- package/src/components/Text/Text.test.tsx +1 -0
- package/src/components/Text/Text.tsx +19 -0
- package/src/components/Text/USAGE.md +40 -0
- package/src/components/Text/index.ts +1 -0
- package/src/components/TextArea/TEXTAREA_IMPLEMENTATION_NOTES.md +42 -0
- package/src/components/TextArea/TextArea.module.css +203 -0
- package/src/components/TextArea/TextArea.stories.tsx +94 -0
- package/src/components/TextArea/TextArea.test.tsx +1 -0
- package/src/components/TextArea/TextArea.tsx +162 -0
- package/src/components/TextArea/USAGE.md +38 -0
- package/src/components/TextArea/index.ts +1 -0
- package/src/components/TextField/TextField.module.css +271 -0
- package/src/components/TextField/TextField.stories.tsx +162 -0
- package/src/components/TextField/TextField.test.tsx +1 -0
- package/src/components/TextField/TextField.tsx +182 -0
- package/src/components/TextField/USAGE.md +38 -0
- package/src/components/TextField/index.ts +1 -0
- package/src/components/TimePicker/TIMEPICKER_IMPLEMENTATION_NOTES.md +89 -0
- package/src/components/TimePicker/TimePicker.module.css +262 -0
- package/src/components/TimePicker/TimePicker.stories.tsx +155 -0
- package/src/components/TimePicker/TimePicker.test.tsx +1 -0
- package/src/components/TimePicker/TimePicker.tsx +277 -0
- package/src/components/TimePicker/USAGE.md +61 -0
- package/src/components/TimePicker/index.ts +1 -0
- package/src/components/Timeline/IMPLEMENTATION_NOTES.md +42 -0
- package/src/components/Timeline/Timeline.module.css +363 -0
- package/src/components/Timeline/Timeline.stories.tsx +128 -0
- package/src/components/Timeline/Timeline.test.tsx +1 -0
- package/src/components/Timeline/Timeline.tsx +90 -0
- package/src/components/Timeline/TimelineItem.tsx +95 -0
- package/src/components/Timeline/USAGE.md +41 -0
- package/src/components/Timeline/index.ts +2 -0
- package/src/components/Toast/TOAST_IMPLEMENTATION_NOTES.md +37 -0
- package/src/components/Toast/Toast.module.css +193 -0
- package/src/components/Toast/Toast.stories.tsx +67 -0
- package/src/components/Toast/Toast.test.tsx +1 -0
- package/src/components/Toast/Toast.tsx +121 -0
- package/src/components/Toast/USAGE.md +42 -0
- package/src/components/Toast/index.ts +1 -0
- package/src/components/Tooltip/Tooltip.module.css +83 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +165 -0
- package/src/components/Tooltip/Tooltip.test.tsx +1 -0
- package/src/components/Tooltip/Tooltip.tsx +78 -0
- package/src/components/Tooltip/USAGE.md +40 -0
- package/src/components/Tooltip/index.ts +1 -0
- package/src/components/TransferList/TRANSFERLIST_IMPLEMENTATION_NOTES.md +140 -0
- package/src/components/TransferList/TransferList.module.css +174 -0
- package/src/components/TransferList/TransferList.stories.tsx +121 -0
- package/src/components/TransferList/TransferList.test.tsx +1 -0
- package/src/components/TransferList/TransferList.tsx +419 -0
- package/src/components/TransferList/USAGE.md +77 -0
- package/src/components/TransferList/index.ts +1 -0
- package/src/components/Tree/IMPLEMENTATION_NOTES.md +53 -0
- package/src/components/Tree/Tree.module.css +272 -0
- package/src/components/Tree/Tree.stories.tsx +104 -0
- package/src/components/Tree/Tree.test.tsx +1 -0
- package/src/components/Tree/Tree.tsx +298 -0
- package/src/components/Tree/USAGE.md +99 -0
- package/src/components/Tree/index.ts +1 -0
- package/src/components/Typography/TYPOGRAPHY_IMPLEMENTATION_NOTES.md +17 -0
- package/src/components/Typography/Typography.module.css +13 -0
- package/src/components/Typography/Typography.test.tsx +1 -0
- package/src/components/Typography/Typography.tsx +43 -0
- package/src/components/Typography/USAGE.md +40 -0
- package/src/components/Typography/index.ts +1 -0
- package/src/components/index.ts +50 -0
- package/src/env.d.ts +7 -0
- package/src/index.ts +194 -0
- package/src/types/index.ts +9 -0
- package/src/types/scss-modules.d.ts +9 -0
- package/src/utils/ColorSchemeWrapper.tsx +23 -0
- package/src/utils/RequireAccessibleLabel.ts +1 -0
- package/src/utils/copyToClipboard.ts +36 -0
- package/src/utils/filterStylingProps.test.ts +85 -0
- package/src/utils/filterStylingProps.ts +143 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/renderRichOption.tsx +51 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# AssistiveElement - Usage Guide
|
|
2
|
+
|
|
3
|
+
This document describes how to integrate and use the `AssistiveElement` component in your projects using `@recursica/adapter-mui-v7`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Import Reference
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
import { AssistiveElement } from "@recursica/adapter-mui-v7";
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 2. Basic Example
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import React from "react";
|
|
19
|
+
import { AssistiveElement } from "@recursica/adapter-mui-v7";
|
|
20
|
+
|
|
21
|
+
export default function Demo() {
|
|
22
|
+
return <AssistiveElement state="error" message="This field is required" />;
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 3. Design System Integration
|
|
29
|
+
|
|
30
|
+
All Recursica components in the `@recursica/adapter-mui-v7` package adhere strictly to design system spacing, scaling, and behavior patterns.
|
|
31
|
+
|
|
32
|
+
> [!IMPORTANT]
|
|
33
|
+
>
|
|
34
|
+
> - **Anti-override protection**: Rogues style injections (like inline `style` or arbitrary `className`) are automatically blocked by our prop layer unless `overStyled={true}` is explicitly provided.
|
|
35
|
+
> - **No Direct Layers**: Do not pass a `layer` prop to this component. To place it on a specific visual layer, wrap it in a `<Layer layer={0|1|2|3}>` component natively.
|
|
36
|
+
> - **Variables and Theming**: Styling is entirely determined by local CSS variables defined in `recursica_variables_scoped.css` and mapped in the component's CSS module.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./AssistiveElement";
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/* Brand-layer exemptions (recursica-allow-brand) — see recursica-token-analyzer README.md.
|
|
2
|
+
* Global hover/focus/disabled state tokens (recursica_variables_scoped.css header, 'Hover & Focus states' / 'Disabled state' — implicit rule for every interactive element; components must not define their own per-component treatment).
|
|
3
|
+
* recursica-allow-brand: --recursica_brand_states_focus_blur
|
|
4
|
+
* recursica-allow-brand: --recursica_brand_states_focus_border-size
|
|
5
|
+
* recursica-allow-brand: --recursica_brand_states_focus_color
|
|
6
|
+
* recursica-allow-brand: --recursica_brand_states_focus_margin
|
|
7
|
+
* recursica-allow-brand: --recursica_brand_states_hover_color
|
|
8
|
+
* recursica-allow-brand: --recursica_brand_states_hover_opacity
|
|
9
|
+
* No ui-kit token exists for the input-to-menu gap (see `.popper` below) — reusing the closest
|
|
10
|
+
* matching generic dimension token instead of hardcoding an unexplained pixel value.
|
|
11
|
+
* recursica-allow-brand: --recursica_brand_dimensions_general_default
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/* LAYOUT SPACING OVERRIDES:
|
|
15
|
+
- Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens.
|
|
16
|
+
- Also sets the --autocomplete-control-{max,min}-width hooks consumed inline in Autocomplete.tsx,
|
|
17
|
+
since the token schema no longer provides a single layout-agnostic min/max width. */
|
|
18
|
+
.layoutOverride {
|
|
19
|
+
--form-control-margin-bottom: var(
|
|
20
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_top-bottom-margin
|
|
21
|
+
);
|
|
22
|
+
--autocomplete-control-max-width: var(
|
|
23
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_max-width
|
|
24
|
+
);
|
|
25
|
+
--autocomplete-control-min-width: var(
|
|
26
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_min-width
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.layoutOverride[data-form-layout="side-by-side"] {
|
|
31
|
+
--form-control-margin-bottom: var(
|
|
32
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_top-bottom-margin
|
|
33
|
+
);
|
|
34
|
+
--autocomplete-control-max-width: var(
|
|
35
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_max-width
|
|
36
|
+
);
|
|
37
|
+
--autocomplete-control-min-width: var(
|
|
38
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_min-width
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* HARDCODED VALUES:
|
|
43
|
+
- border-style: solid. Native structural rendering rule.
|
|
44
|
+
- outline: none. Bypassing browser focus rings to rely strictly on Recursica focus states natively.
|
|
45
|
+
- flex/layout: display: flex on the root wrapper safely encapsulating internal section rendering.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
.root {
|
|
49
|
+
display: flex;
|
|
50
|
+
position: relative;
|
|
51
|
+
width: 100% !important; /* Override MUI default 300px width */
|
|
52
|
+
min-height: var(--recursica_ui-kit_components_autocomplete_properties_height);
|
|
53
|
+
|
|
54
|
+
/* Override Mantine native Input variables governing section spacing padding mathematics safely */
|
|
55
|
+
--input-left-section-size: calc(
|
|
56
|
+
var(
|
|
57
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
58
|
+
) +
|
|
59
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
|
|
60
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
|
|
61
|
+
);
|
|
62
|
+
--input-right-section-size: calc(
|
|
63
|
+
var(
|
|
64
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
65
|
+
) +
|
|
66
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
|
|
67
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Strip MUI native Form Control wrapper margins on standard variant */
|
|
72
|
+
.root :global(.MuiFormControl-root) {
|
|
73
|
+
margin: 0 !important;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.input {
|
|
77
|
+
/* Structural Overrides */
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
width: 100%;
|
|
81
|
+
box-sizing: border-box;
|
|
82
|
+
margin: 0;
|
|
83
|
+
|
|
84
|
+
/* Box Geometry */
|
|
85
|
+
min-height: var(--recursica_ui-kit_components_autocomplete_properties_height);
|
|
86
|
+
padding-top: var(
|
|
87
|
+
--recursica_ui-kit_components_autocomplete_properties_vertical-padding
|
|
88
|
+
) !important;
|
|
89
|
+
padding-bottom: var(
|
|
90
|
+
--recursica_ui-kit_components_autocomplete_properties_vertical-padding
|
|
91
|
+
) !important;
|
|
92
|
+
padding-left: var(
|
|
93
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
94
|
+
) !important;
|
|
95
|
+
padding-right: var(
|
|
96
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
97
|
+
) !important;
|
|
98
|
+
border-radius: var(
|
|
99
|
+
--recursica_ui-kit_components_autocomplete_properties_border-radius
|
|
100
|
+
);
|
|
101
|
+
border-width: var(
|
|
102
|
+
--recursica_ui-kit_components_autocomplete_properties_border-size
|
|
103
|
+
);
|
|
104
|
+
border-style: solid;
|
|
105
|
+
|
|
106
|
+
/* Strict Typography Unification */
|
|
107
|
+
font-family: var(
|
|
108
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-family
|
|
109
|
+
);
|
|
110
|
+
font-size: var(
|
|
111
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-size
|
|
112
|
+
);
|
|
113
|
+
font-style: var(
|
|
114
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-style
|
|
115
|
+
);
|
|
116
|
+
font-weight: var(
|
|
117
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-weight
|
|
118
|
+
);
|
|
119
|
+
letter-spacing: var(
|
|
120
|
+
--recursica_ui-kit_components_autocomplete_properties_text_letter-spacing
|
|
121
|
+
);
|
|
122
|
+
line-height: var(
|
|
123
|
+
--recursica_ui-kit_components_autocomplete_properties_text_line-height
|
|
124
|
+
);
|
|
125
|
+
text-decoration: var(
|
|
126
|
+
--recursica_ui-kit_components_autocomplete_properties_text_text-decoration
|
|
127
|
+
);
|
|
128
|
+
text-transform: var(
|
|
129
|
+
--recursica_ui-kit_components_autocomplete_properties_text_text-transform
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
/* Base State Default Execution */
|
|
133
|
+
background-color: var(
|
|
134
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_background-color
|
|
135
|
+
);
|
|
136
|
+
border-color: var(
|
|
137
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_border-color
|
|
138
|
+
);
|
|
139
|
+
color: var(
|
|
140
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_text-color
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
outline: none;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* Reset internal MUI <input> node padding to safely allow the wrapper to manage geometry */
|
|
147
|
+
.input :global(input.MuiInputBase-input) {
|
|
148
|
+
padding: 0 !important;
|
|
149
|
+
height: 100%;
|
|
150
|
+
margin: 0;
|
|
151
|
+
box-sizing: border-box;
|
|
152
|
+
color: inherit;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* Ensure MUI standard variant pseudo-elements (underlines) are destroyed completely */
|
|
156
|
+
.input::before,
|
|
157
|
+
.input::after {
|
|
158
|
+
display: none !important;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.input::placeholder {
|
|
162
|
+
opacity: var(
|
|
163
|
+
--recursica_ui-kit_components_autocomplete_properties_placeholder-opacity
|
|
164
|
+
);
|
|
165
|
+
color: inherit;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Dynamic Padding Overrides */
|
|
169
|
+
/* MUI naturally flexes adornments, so we don't need absolute padding overrides for the wrapper.
|
|
170
|
+
Instead, we apply gap to the input wrapper to space out the adornments and the input natively. */
|
|
171
|
+
.input {
|
|
172
|
+
gap: var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* Flexible End-Caps (Icons, actions) */
|
|
176
|
+
.section {
|
|
177
|
+
display: flex;
|
|
178
|
+
align-items: center;
|
|
179
|
+
height: 100%;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.section[data-position="left"] {
|
|
183
|
+
justify-content: flex-start;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.section[data-position="right"] {
|
|
187
|
+
justify-content: flex-end;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.section :global(svg) {
|
|
191
|
+
width: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
|
|
192
|
+
height: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
|
|
193
|
+
color: var(
|
|
194
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_leading-icon
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.section[data-position="right"] :global(svg) {
|
|
199
|
+
color: var(
|
|
200
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_trailing-icon
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* MUI's Autocomplete positions its Popper flush against the input — it sets `margin: 0px` as an
|
|
205
|
+
inline style, so the option list touches the control's bottom border with no gap. Mantine's
|
|
206
|
+
equivalent (Combobox, built on its own Popover) leaves an 8px gap, but that comes from
|
|
207
|
+
Popover.mjs's own untokenized `offset: 8` default, not any Recursica token — there's no
|
|
208
|
+
dedicated "menu offset" token in the schema. `--recursica_brand_dimensions_general_default`
|
|
209
|
+
happens to also resolve to 8px, so it's reused here rather than hardcoding an unexplained
|
|
210
|
+
magic number; if the schema ever adds a real gap token for this, prefer it over this one.
|
|
211
|
+
`!important` needed: MUI's inline `margin: 0px` otherwise always wins over a class rule. */
|
|
212
|
+
.popper {
|
|
213
|
+
margin-top: var(--recursica_brand_dimensions_general_default) !important;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* Dropdown and Options */
|
|
217
|
+
/* We want to make sure the dropdown inherits font correctly. */
|
|
218
|
+
.dropdown {
|
|
219
|
+
background-color: var(
|
|
220
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_background-color
|
|
221
|
+
);
|
|
222
|
+
border: 1px solid
|
|
223
|
+
var(
|
|
224
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_border-color
|
|
225
|
+
);
|
|
226
|
+
border-radius: var(
|
|
227
|
+
--recursica_ui-kit_components_autocomplete_properties_border-radius
|
|
228
|
+
);
|
|
229
|
+
box-shadow: var(--recursica_ui-kit_components_menu_properties_elevation);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.option {
|
|
233
|
+
font-family: var(
|
|
234
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-family
|
|
235
|
+
);
|
|
236
|
+
font-size: var(
|
|
237
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-size
|
|
238
|
+
);
|
|
239
|
+
font-weight: var(
|
|
240
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-weight
|
|
241
|
+
);
|
|
242
|
+
color: var(
|
|
243
|
+
--recursica_ui-kit_components_autocomplete_properties_colors_text-color
|
|
244
|
+
);
|
|
245
|
+
/* Padding/inter-item gap reuse the menu-item component's tokens (same reasoning as the icon/
|
|
246
|
+
supporting-text tokens below) instead of an arbitrary scaled autocomplete padding — matches
|
|
247
|
+
the mantine-adapter's equivalent Menu.module.css `.item` padding + gap exactly. `!important`
|
|
248
|
+
needed on padding: MUI's own `.MuiAutocomplete-listbox .MuiAutocomplete-option` rule
|
|
249
|
+
(hardcoded `6px 16px`) is a two-class descendant selector, higher specificity than this
|
|
250
|
+
single-class rule, and otherwise wins regardless of source order. */
|
|
251
|
+
padding: var(
|
|
252
|
+
--recursica_ui-kit_components_menu-item_properties_vertical-padding
|
|
253
|
+
)
|
|
254
|
+
var(--recursica_ui-kit_components_menu-item_properties_horizontal-padding) !important;
|
|
255
|
+
margin-bottom: var(--recursica_ui-kit_components_menu_properties_item-gap);
|
|
256
|
+
cursor: pointer;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.option:last-of-type {
|
|
260
|
+
margin-bottom: 0;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* No per-option hovered token exists in the schema; use the generic overlay tint (same technique
|
|
264
|
+
as Table/Dropdown) to highlight a hovered-but-not-selected option. `data-combobox-selected`/
|
|
265
|
+
`data-combobox-active`/`data-hovered` are Mantine-only attributes that never actually appear on
|
|
266
|
+
this MUI-driven tree — kept here only so this stays shape-matched with the mantine-adapter's
|
|
267
|
+
equivalent file. */
|
|
268
|
+
.option[data-selected="true"],
|
|
269
|
+
.option[data-selected],
|
|
270
|
+
.option[data-combobox-selected="true"],
|
|
271
|
+
.option[data-combobox-selected],
|
|
272
|
+
.option[data-hovered="true"],
|
|
273
|
+
.option[data-hovered],
|
|
274
|
+
.option:hover {
|
|
275
|
+
background-color: color-mix(
|
|
276
|
+
in srgb,
|
|
277
|
+
var(--recursica_brand_states_hover_color)
|
|
278
|
+
calc(var(--recursica_brand_states_hover_opacity) * 100%),
|
|
279
|
+
transparent
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/* No dedicated autocomplete-option "selected" token exists in the schema either, but the
|
|
284
|
+
menu-item component's selected-state colors are the closest real token family for the same
|
|
285
|
+
concept (a selected row in a list) — same reuse Dropdown.module.css makes. MUI's Autocomplete
|
|
286
|
+
already stamps `aria-selected="true"` onto the option matching the current value (see
|
|
287
|
+
useAutocomplete.js's `getOptionProps`), and `defaultRenderOption` (Autocomplete.tsx) spreads
|
|
288
|
+
that straight onto the `<li>` — there was previously no rule keyed off it at all, so the
|
|
289
|
+
selected option never got a distinct highlight (only ever the same neutral hover tint above,
|
|
290
|
+
and only while actually hovered). `!important` needed: MUI's own
|
|
291
|
+
`.MuiAutocomplete-listbox .MuiAutocomplete-option[aria-selected="true"]` rule (Autocomplete.js)
|
|
292
|
+
is a two-class descendant selector, higher specificity than this single-class rule, and
|
|
293
|
+
otherwise wins with its default blue tint regardless of source order — same reasoning as the
|
|
294
|
+
padding `!important` above. */
|
|
295
|
+
.option[aria-selected="true"] {
|
|
296
|
+
background-color: var(
|
|
297
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_background-color
|
|
298
|
+
) !important;
|
|
299
|
+
color: var(
|
|
300
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_selected_properties_colors_text-color
|
|
301
|
+
) !important;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/* Rich option content (leadingIcon/supportingText — see MANTINE_ADAPTER_RICH_OPTION_DATA.md). No
|
|
305
|
+
dedicated autocomplete-option icon or supporting-text token exists in the schema either; reuse
|
|
306
|
+
the menu-item component's tokens, same reasoning as Dropdown.module.css. */
|
|
307
|
+
.optionContent {
|
|
308
|
+
display: flex;
|
|
309
|
+
align-items: center;
|
|
310
|
+
gap: var(--recursica_ui-kit_components_menu-item_properties_icon-text-gap);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.optionIcon {
|
|
314
|
+
display: flex;
|
|
315
|
+
flex-shrink: 0;
|
|
316
|
+
width: var(
|
|
317
|
+
--recursica_ui-kit_components_menu-item_properties_icon-leading-size
|
|
318
|
+
);
|
|
319
|
+
height: var(
|
|
320
|
+
--recursica_ui-kit_components_menu-item_properties_icon-leading-size
|
|
321
|
+
);
|
|
322
|
+
color: var(
|
|
323
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_leading-icon-color
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.optionIcon :global(svg) {
|
|
328
|
+
width: 100%;
|
|
329
|
+
height: 100%;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.optionText {
|
|
333
|
+
display: flex;
|
|
334
|
+
flex-direction: column;
|
|
335
|
+
min-width: 0;
|
|
336
|
+
gap: var(--recursica_ui-kit_components_menu-item_properties_text-gap);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/* Default: label/supportingText each truncate to a single line with an ellipsis. */
|
|
340
|
+
.optionText > * {
|
|
341
|
+
overflow: clip; /* HARDCODE: `hidden` clips descenders (e.g. "g") when text_line-height is
|
|
342
|
+
tighter than the font's natural ascent+descent; overflow-clip-margin gives ink a small bleed
|
|
343
|
+
allowance while still clipping genuinely overflowing text (see Chip's IMPLEMENTATION_NOTES.md). */
|
|
344
|
+
overflow-clip-margin: 0.35em;
|
|
345
|
+
text-overflow: ellipsis;
|
|
346
|
+
white-space: nowrap;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/* Applied alongside .optionText when `wrapItemText` is true — long values wrap onto additional
|
|
350
|
+
lines instead of overflowing the fixed-width dropdown. */
|
|
351
|
+
.optionTextWrap > * {
|
|
352
|
+
overflow: visible;
|
|
353
|
+
text-overflow: clip;
|
|
354
|
+
white-space: normal;
|
|
355
|
+
overflow-wrap: anywhere;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.optionSupportingText {
|
|
359
|
+
font-family: var(
|
|
360
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_font-family
|
|
361
|
+
);
|
|
362
|
+
font-size: var(
|
|
363
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_font-size
|
|
364
|
+
);
|
|
365
|
+
font-style: var(
|
|
366
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_font-style
|
|
367
|
+
);
|
|
368
|
+
font-weight: var(
|
|
369
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_font-weight
|
|
370
|
+
);
|
|
371
|
+
letter-spacing: var(
|
|
372
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_letter-spacing
|
|
373
|
+
);
|
|
374
|
+
line-height: var(
|
|
375
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_line-height
|
|
376
|
+
);
|
|
377
|
+
text-decoration: var(
|
|
378
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_text-decoration
|
|
379
|
+
);
|
|
380
|
+
text-transform: var(
|
|
381
|
+
--recursica_ui-kit_components_menu-item_properties_supporting-text_text-transform
|
|
382
|
+
);
|
|
383
|
+
color: var(
|
|
384
|
+
--recursica_ui-kit_components_menu-item_variants_selection-states_unselected_properties_colors_supporting-text-color
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/* -------------------------------------
|
|
389
|
+
STATE CASCADE ARCHITECTURE
|
|
390
|
+
-------------------------------------- */
|
|
391
|
+
|
|
392
|
+
/* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
|
|
393
|
+
/* The token schema no longer provides per-component focus colors; apply the generic focus ring
|
|
394
|
+
tokens as a box-shadow ring instead of a color swap. */
|
|
395
|
+
.input:focus-within,
|
|
396
|
+
.input:focus {
|
|
397
|
+
box-shadow:
|
|
398
|
+
0 0 0 var(--recursica_brand_states_focus_border-size)
|
|
399
|
+
var(--recursica_brand_states_focus_color),
|
|
400
|
+
0 0 var(--recursica_brand_states_focus_blur)
|
|
401
|
+
var(--recursica_brand_states_focus_margin)
|
|
402
|
+
var(--recursica_brand_states_focus_color);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
406
|
+
.root[data-error] .input {
|
|
407
|
+
border-color: var(
|
|
408
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_border-color
|
|
409
|
+
);
|
|
410
|
+
background-color: var(
|
|
411
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_background-color
|
|
412
|
+
);
|
|
413
|
+
color: var(
|
|
414
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_text-color
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.root[data-error] .section[data-position="left"] :global(svg) {
|
|
419
|
+
color: var(
|
|
420
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_leading-icon
|
|
421
|
+
);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.root[data-error] .section[data-position="right"] :global(svg) {
|
|
425
|
+
color: var(
|
|
426
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_trailing-icon
|
|
427
|
+
);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
431
|
+
.root[data-disabled] .input {
|
|
432
|
+
border-color: var(
|
|
433
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_border-color
|
|
434
|
+
);
|
|
435
|
+
background-color: var(
|
|
436
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_background-color
|
|
437
|
+
);
|
|
438
|
+
color: var(
|
|
439
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_text-color
|
|
440
|
+
);
|
|
441
|
+
opacity: var(
|
|
442
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_opacity
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.root[data-disabled] .section[data-position="left"] :global(svg) {
|
|
447
|
+
color: var(
|
|
448
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_leading-icon
|
|
449
|
+
);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.root[data-disabled] .section[data-position="right"] :global(svg) {
|
|
453
|
+
color: var(
|
|
454
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_trailing-icon
|
|
455
|
+
);
|
|
456
|
+
}
|