@recursica/adapter-mantine-v8 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 +688 -0
- package/LICENSE +21 -0
- package/OVERSTYLING.md +56 -0
- package/README.md +70 -0
- package/SETUP.md +93 -0
- package/USAGE.md +57 -0
- package/dist/adapter-mantine-v8.cjs +12 -0
- package/dist/adapter-mantine-v8.cjs.map +1 -0
- package/dist/adapter-mantine-v8.css +1 -0
- package/dist/adapter-mantine-v8.js +5759 -0
- package/dist/adapter-mantine-v8.js.map +1 -0
- package/dist/index.d.ts +2095 -0
- package/dist/test.html +1 -0
- package/dist/vite.svg +1 -0
- package/docs/PHILOSOPHY.md +39 -0
- package/llms.txt +74 -0
- package/package.json +131 -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 +154 -0
- package/src/OverStyling.tsx +79 -0
- package/src/Version.tsx +44 -0
- package/src/components/Accordion/ACCORDION_IMPLEMENTATION_NOTES.md +72 -0
- package/src/components/Accordion/Accordion.module.css +367 -0
- package/src/components/Accordion/Accordion.stories.tsx +189 -0
- package/src/components/Accordion/Accordion.test.tsx +1 -0
- package/src/components/Accordion/Accordion.tsx +220 -0
- package/src/components/Accordion/USAGE.md +51 -0
- package/src/components/Accordion/index.ts +1 -0
- package/src/components/AssistiveElement/ASSISTIVEELEMENT_IMPLEMENTATION_NOTES.md +45 -0
- package/src/components/AssistiveElement/AssistiveElement.module.css +111 -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 +93 -0
- package/src/components/AssistiveElement/USAGE.md +36 -0
- package/src/components/AutoComplete/AUTOCOMPLETE_IMPLEMENTATION_NOTES.md +42 -0
- package/src/components/AutoComplete/AutoComplete.module.css +430 -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 +179 -0
- package/src/components/AutoComplete/USAGE.md +80 -0
- package/src/components/Avatar/AVATAR_IMPLEMENTATION_NOTES.md +34 -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 +108 -0
- package/src/components/Avatar/USAGE.md +38 -0
- package/src/components/Avatar/index.ts +1 -0
- package/src/components/Badge/BADGE_IMPLEMENTATION_NOTES.md +18 -0
- package/src/components/Badge/Badge.module.css +127 -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 +64 -0
- package/src/components/Badge/USAGE.md +56 -0
- package/src/components/Breadcrumb/BREADCRUMB_IMPLEMENTATION_NOTES.md +47 -0
- package/src/components/Breadcrumb/Breadcrumb.module.css +48 -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 +85 -0
- package/src/components/Breadcrumb/USAGE.md +55 -0
- package/src/components/Breadcrumb/markCurrentPageItem.test.ts +49 -0
- package/src/components/Button/Button.module.css +446 -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 +184 -0
- package/src/components/Button/IMPLEMENTATION_NOTES.md +109 -0
- package/src/components/Button/USAGE.md +80 -0
- package/src/components/Button/index.ts +1 -0
- package/src/components/Card/CARD_IMPLEMENTATION_NOTES.md +17 -0
- package/src/components/Card/Card.module.css +119 -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 +248 -0
- package/src/components/Card/USAGE.md +63 -0
- package/src/components/Checkbox/CHECKBOX_IMPLEMENTATION_NOTES.md +25 -0
- package/src/components/Checkbox/Checkbox.module.css +267 -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 +151 -0
- package/src/components/Checkbox/CheckboxGroup.stories.tsx +139 -0
- package/src/components/Checkbox/CheckboxGroup.tsx +147 -0
- package/src/components/Checkbox/USAGE.md +48 -0
- package/src/components/Chip/CHIP_IMPLEMENTATION_NOTES.md +110 -0
- package/src/components/Chip/Chip.module.css +288 -0
- package/src/components/Chip/Chip.stories.tsx +128 -0
- package/src/components/Chip/Chip.test.tsx +1 -0
- package/src/components/Chip/Chip.tsx +157 -0
- package/src/components/Chip/USAGE.md +55 -0
- package/src/components/Container/CONTAINER_IMPLEMENTATION_NOTES.md +4 -0
- package/src/components/Container/Container.module.css +7 -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 +69 -0
- package/src/components/Container/USAGE.md +47 -0
- package/src/components/DatePicker/DATEPICKER_IMPLEMENTATION_NOTES.md +31 -0
- package/src/components/DatePicker/DatePicker.icons.tsx +27 -0
- package/src/components/DatePicker/DatePicker.module.css +566 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +158 -0
- package/src/components/DatePicker/DatePicker.test.tsx +1 -0
- package/src/components/DatePicker/DatePicker.tsx +218 -0
- package/src/components/DatePicker/USAGE.md +49 -0
- package/src/components/Dropdown/BareDropdown.tsx +97 -0
- package/src/components/Dropdown/DROPDOWN_IMPLEMENTATION_NOTES.md +12 -0
- package/src/components/Dropdown/Dropdown.module.css +477 -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 +213 -0
- package/src/components/Dropdown/USAGE.md +69 -0
- package/src/components/FileInput/FILEINPUT_IMPLEMENTATION_NOTES.md +153 -0
- package/src/components/FileInput/FileInput.module.css +280 -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 +417 -0
- package/src/components/FileInput/USAGE.md +145 -0
- package/src/components/FileUpload/FILEUPLOAD_IMPLEMENTATION_NOTES.md +244 -0
- package/src/components/FileUpload/FileUpload.module.css +205 -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 +354 -0
- package/src/components/FileUpload/USAGE.md +199 -0
- package/src/components/Flex/FLEX_IMPLEMENTATION_NOTES.md +4 -0
- package/src/components/Flex/Flex.module.css +7 -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 +75 -0
- package/src/components/Flex/USAGE.md +48 -0
- package/src/components/FormControlLayout/FormControlLayout.module.css +90 -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 +74 -0
- package/src/components/FormControlLayout/USAGE.md +40 -0
- package/src/components/FormControlWrapper/FORMCONTROLWRAPPER_IMPLEMENTATION_NOTES.md +32 -0
- package/src/components/FormControlWrapper/FormControlWrapper.module.css +75 -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 +151 -0
- package/src/components/FormControlWrapper/USAGE.md +47 -0
- package/src/components/Grid/GRID_IMPLEMENTATION_NOTES.md +18 -0
- package/src/components/Grid/Grid.module.css +11 -0
- package/src/components/Grid/Grid.stories.tsx +206 -0
- package/src/components/Grid/Grid.test.tsx +1 -0
- package/src/components/Grid/Grid.tsx +140 -0
- package/src/components/Grid/USAGE.md +47 -0
- package/src/components/Group/GROUP_IMPLEMENTATION_NOTES.md +4 -0
- package/src/components/Group/Group.module.css +7 -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 +60 -0
- package/src/components/Group/USAGE.md +48 -0
- package/src/components/Heading/HEADING_IMPLEMENTATION_NOTES.md +18 -0
- package/src/components/Heading/Heading.module.css +13 -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 +52 -0
- package/src/components/Heading/USAGE.md +36 -0
- package/src/components/HoverCard/HOVERCARD_IMPLEMENTATION_NOTES.md +77 -0
- package/src/components/HoverCard/HoverCard.module.css +90 -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 +133 -0
- package/src/components/HoverCard/USAGE.md +52 -0
- package/src/components/Label/LABEL_IMPLEMENTATION_NOTES.md +48 -0
- package/src/components/Label/Label.module.css +141 -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 +113 -0
- package/src/components/Label/USAGE.md +47 -0
- package/src/components/Label/index.ts +1 -0
- package/src/components/Layer/USAGE.md +54 -0
- package/src/components/Link/IMPLEMENTATION_NOTES.md +19 -0
- package/src/components/Link/Link.module.css +110 -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 +67 -0
- package/src/components/Link/USAGE.md +56 -0
- package/src/components/Link/index.ts +1 -0
- package/src/components/Loader/LOADER_IMPLEMENTATION_NOTES.md +24 -0
- package/src/components/Loader/Loader.animate.dom.test.tsx +82 -0
- package/src/components/Loader/Loader.module.css +63 -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 +69 -0
- package/src/components/Loader/USAGE.md +44 -0
- package/src/components/Menu/MENU_IMPLEMENTATION_NOTES.md +88 -0
- package/src/components/Menu/Menu.module.css +280 -0
- package/src/components/Menu/Menu.stories.tsx +371 -0
- package/src/components/Menu/Menu.test.tsx +1 -0
- package/src/components/Menu/Menu.tsx +373 -0
- package/src/components/Menu/USAGE.md +55 -0
- package/src/components/Modal/MODAL_IMPLEMENTATION_NOTES.md +32 -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 +368 -0
- package/src/components/Modal/USAGE.md +58 -0
- package/src/components/Modal/index.ts +1 -0
- package/src/components/NumberInput/NUMBER_INPUT_IMPLEMENTATION_NOTES.md +24 -0
- package/src/components/NumberInput/NumberInput.module.css +302 -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 +157 -0
- package/src/components/NumberInput/USAGE.md +52 -0
- package/src/components/Pagination/IMPLEMENTATION_NOTES.md +16 -0
- package/src/components/Pagination/Pagination.icons.tsx +66 -0
- package/src/components/Pagination/Pagination.module.css +188 -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 +265 -0
- package/src/components/Pagination/USAGE.md +36 -0
- package/src/components/Pagination/index.ts +5 -0
- package/src/components/Panel/PANEL_IMPLEMENTATION_NOTES.md +116 -0
- package/src/components/Panel/Panel.module.css +209 -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 +269 -0
- package/src/components/Panel/USAGE.md +56 -0
- package/src/components/Popover/IMPLEMENTATION_NOTES.md +77 -0
- package/src/components/Popover/Popover.module.css +86 -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 +142 -0
- package/src/components/Popover/USAGE.md +61 -0
- package/src/components/Popover/index.ts +1 -0
- package/src/components/Radio/Radio.module.css +231 -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 +168 -0
- package/src/components/Radio/RadioGroup.stories.tsx +117 -0
- package/src/components/Radio/RadioGroup.tsx +124 -0
- package/src/components/Radio/USAGE.md +36 -0
- package/src/components/ReadOnlyField/READ_ONLY_FIELD_IMPLEMENTATION_NOTES.md +15 -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 +114 -0
- package/src/components/ReadOnlyField/ReadOnlySwitchField.tsx +21 -0
- package/src/components/ReadOnlyField/ReadOnlyTextField.tsx +48 -0
- package/src/components/ReadOnlyField/USAGE.md +44 -0
- package/src/components/ReadOnlyField/WithReadOnlyWrapper.tsx +93 -0
- package/src/components/ReadOnlyField/index.ts +5 -0
- package/src/components/RecursicaThemeProvider/USAGE.md +60 -0
- package/src/components/SegmentedControl/IMPLEMENTATION_NOTES.md +25 -0
- package/src/components/SegmentedControl/SegmentedControl.module.css +185 -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 +110 -0
- package/src/components/SegmentedControl/USAGE.md +55 -0
- package/src/components/Slider/IMPLEMENTATION_NOTES.md +92 -0
- package/src/components/Slider/Slider.module.css +588 -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 +391 -0
- package/src/components/Slider/USAGE.md +56 -0
- package/src/components/Stack/STACK_IMPLEMENTATION_NOTES.md +4 -0
- package/src/components/Stack/Stack.module.css +7 -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 +62 -0
- package/src/components/Stack/USAGE.md +48 -0
- package/src/components/Stepper/IMPLEMENTATION_NOTES.md +28 -0
- package/src/components/Stepper/Stepper.module.css +404 -0
- package/src/components/Stepper/Stepper.stories.tsx +148 -0
- package/src/components/Stepper/Stepper.test.tsx +1 -0
- package/src/components/Stepper/Stepper.tsx +93 -0
- package/src/components/Stepper/USAGE.md +41 -0
- package/src/components/Switch/SWITCH_IMPLEMENTATION_NOTES.md +64 -0
- package/src/components/Switch/Switch.module.css +279 -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 +177 -0
- package/src/components/Switch/SwitchGroup.stories.tsx +132 -0
- package/src/components/Switch/SwitchGroup.tsx +127 -0
- package/src/components/Switch/USAGE.md +42 -0
- package/src/components/Table/TABLE_IMPLEMENTATION_NOTES.md +78 -0
- package/src/components/Table/Table.icons.tsx +40 -0
- package/src/components/Table/Table.module.css +444 -0
- package/src/components/Table/Table.stories.tsx +140 -0
- package/src/components/Table/Table.test.tsx +1 -0
- package/src/components/Table/Table.tsx +243 -0
- package/src/components/Table/USAGE.md +78 -0
- package/src/components/Tabs/IMPLEMENTATION_NOTES.md +27 -0
- package/src/components/Tabs/Tabs.module.css +591 -0
- package/src/components/Tabs/Tabs.stories.tsx +154 -0
- package/src/components/Tabs/Tabs.test.tsx +1 -0
- package/src/components/Tabs/Tabs.tsx +114 -0
- package/src/components/Tabs/USAGE.md +45 -0
- package/src/components/Text/TEXT_IMPLEMENTATION_NOTES.md +12 -0
- package/src/components/Text/Text.module.css +13 -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 +53 -0
- package/src/components/Text/USAGE.md +40 -0
- package/src/components/TextArea/TEXTAREA_IMPLEMENTATION_NOTES.md +7 -0
- package/src/components/TextArea/TextArea.module.css +183 -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 +137 -0
- package/src/components/TextArea/USAGE.md +48 -0
- package/src/components/TextField/TEXTFIELD_IMPLEMENTATION_NOTES.md +19 -0
- package/src/components/TextField/TextField.module.css +264 -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 +139 -0
- package/src/components/TextField/USAGE.md +44 -0
- package/src/components/TimePicker/TIMEPICKER_IMPLEMENTATION_NOTES.md +119 -0
- package/src/components/TimePicker/TimePicker.module.css +291 -0
- package/src/components/TimePicker/TimePicker.stories.tsx +141 -0
- package/src/components/TimePicker/TimePicker.test.tsx +1 -0
- package/src/components/TimePicker/TimePicker.tsx +304 -0
- package/src/components/TimePicker/USAGE.md +57 -0
- package/src/components/Timeline/TIMELINE_IMPLEMENTATION_NOTES.md +13 -0
- package/src/components/Timeline/Timeline.module.css +373 -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 +73 -0
- package/src/components/Timeline/TimelineItem.tsx +79 -0
- package/src/components/Timeline/USAGE.md +49 -0
- package/src/components/Toast/TOAST_IMPLEMENTATION_NOTES.md +39 -0
- package/src/components/Toast/Toast.module.css +184 -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 +82 -0
- package/src/components/Toast/USAGE.md +50 -0
- package/src/components/Toast/index.ts +1 -0
- package/src/components/Tooltip/TOOLTIP_IMPLEMENTATION_NOTES.md +85 -0
- package/src/components/Tooltip/Tooltip.module.css +91 -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 +117 -0
- package/src/components/Tooltip/USAGE.md +80 -0
- package/src/components/TransferList/TRANSFERLIST_IMPLEMENTATION_NOTES.md +111 -0
- package/src/components/TransferList/TransferList.module.css +182 -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/Tree/IMPLEMENTATION_NOTES.md +48 -0
- package/src/components/Tree/Tree.module.css +232 -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 +220 -0
- package/src/components/Tree/USAGE.md +96 -0
- package/src/components/Tree/index.ts +1 -0
- package/src/components/index.ts +52 -0
- package/src/env.d.ts +7 -0
- package/src/index.ts +179 -0
- package/src/types/index.ts +9 -0
- package/src/types/mantine.d.ts +7 -0
- package/src/types/scss-modules.d.ts +9 -0
- package/src/utils/ColorSchemeWrapper.tsx +27 -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 +150 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/renderRichOption.tsx +65 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLOBAL EXEMPTIONS
|
|
3
|
+
*
|
|
4
|
+
* This file hosts global, brand, and layout variables that are defined in
|
|
5
|
+
* recursica_variables_scoped.css but are not used by any specific component.
|
|
6
|
+
* Isolating them here keeps individual component stylesheets clean and focused.
|
|
7
|
+
*/
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import type { Meta } from "@storybook/react-vite";
|
|
2
|
+
import { AdaptersContent, MantineLogo } from "@recursica/storybook-template";
|
|
3
|
+
import { VersionInfo } from "./Version";
|
|
4
|
+
import { OverStylingInfo } from "./OverStyling";
|
|
5
|
+
import {
|
|
6
|
+
Container,
|
|
7
|
+
Stack,
|
|
8
|
+
Group,
|
|
9
|
+
Heading,
|
|
10
|
+
Text,
|
|
11
|
+
Link,
|
|
12
|
+
Button,
|
|
13
|
+
} from "./components";
|
|
14
|
+
|
|
15
|
+
const DOCS_URL = "https://recursica.com";
|
|
16
|
+
const FORGE_URL = "https://forge.recursica.com";
|
|
17
|
+
|
|
18
|
+
function IntroductionContent() {
|
|
19
|
+
return (
|
|
20
|
+
<Container size="md" style={{ padding: "32px 0", maxWidth: 640 }}>
|
|
21
|
+
<Group gap="rec-md" mb="rec-xl" align="flex-start" wrap="nowrap">
|
|
22
|
+
<MantineLogo width={80} height={80} />
|
|
23
|
+
<Stack gap={0}>
|
|
24
|
+
<Heading order={1} m={0}>
|
|
25
|
+
Recursica Design System (Mantine Adapter)
|
|
26
|
+
</Heading>
|
|
27
|
+
<Link href="https://mantine.dev" target="_blank" rel="noreferrer">
|
|
28
|
+
mantine.dev
|
|
29
|
+
</Link>
|
|
30
|
+
</Stack>
|
|
31
|
+
</Group>
|
|
32
|
+
<Text mb="rec-xl">
|
|
33
|
+
This Storybook showcases the Recursica design system implemented for the{" "}
|
|
34
|
+
<strong>Mantine UI Kit</strong>. It provides reusable components that
|
|
35
|
+
map our design tokens to Mantine's robust component layer.
|
|
36
|
+
</Text>
|
|
37
|
+
|
|
38
|
+
<Stack mb="rec-xl">
|
|
39
|
+
<Heading order={2} mb="rec-md">
|
|
40
|
+
Looking for another UI Kit?
|
|
41
|
+
</Heading>
|
|
42
|
+
<Text mb="rec-md">
|
|
43
|
+
Are you using a different UI Kit (like Material UI)? Recursica
|
|
44
|
+
provides multiple adapters for different frameworks.
|
|
45
|
+
</Text>
|
|
46
|
+
<Group mt="rec-md">
|
|
47
|
+
<Button
|
|
48
|
+
component="a"
|
|
49
|
+
href="./?path=/story/introduction--adapters"
|
|
50
|
+
target="_parent"
|
|
51
|
+
variant="solid"
|
|
52
|
+
>
|
|
53
|
+
View Supported Adapters
|
|
54
|
+
</Button>
|
|
55
|
+
</Group>
|
|
56
|
+
</Stack>
|
|
57
|
+
|
|
58
|
+
<Stack mb="rec-xl">
|
|
59
|
+
<Heading order={2} mb="rec-md">
|
|
60
|
+
Installation
|
|
61
|
+
</Heading>
|
|
62
|
+
<Text mb="rec-md">
|
|
63
|
+
To install the Mantine adapter in your project, run:
|
|
64
|
+
</Text>
|
|
65
|
+
<Stack
|
|
66
|
+
style={{
|
|
67
|
+
padding: 12,
|
|
68
|
+
backgroundColor: "#f5f5f5",
|
|
69
|
+
borderRadius: 6,
|
|
70
|
+
fontSize: 13,
|
|
71
|
+
marginTop: 8,
|
|
72
|
+
}}
|
|
73
|
+
>
|
|
74
|
+
<code>
|
|
75
|
+
npm install @recursica/adapter-mantine-v8 @mantine/core @mantine/hooks
|
|
76
|
+
</code>
|
|
77
|
+
</Stack>
|
|
78
|
+
</Stack>
|
|
79
|
+
|
|
80
|
+
<Stack mb="rec-xl">
|
|
81
|
+
<Heading order={2} mb="rec-md">
|
|
82
|
+
Tokens
|
|
83
|
+
</Heading>
|
|
84
|
+
<Text mb="rec-md">
|
|
85
|
+
Raw design tokens (colors, sizes, font weights, opacities, etc.) that
|
|
86
|
+
feed the theme and components. These are the primitive values defined
|
|
87
|
+
in your token set and exposed as CSS custom properties.
|
|
88
|
+
</Text>
|
|
89
|
+
</Stack>
|
|
90
|
+
|
|
91
|
+
<Stack mb="rec-xl">
|
|
92
|
+
<Heading order={2} mb="rec-md">
|
|
93
|
+
Theme
|
|
94
|
+
</Heading>
|
|
95
|
+
<Text mb="rec-md">
|
|
96
|
+
Brand and theme layer built on top of tokens. Typography types,
|
|
97
|
+
dimensions, and layout grids are defined here. Theme uses the tokens
|
|
98
|
+
and exposes both CSS variables and helper classes (e.g. typography
|
|
99
|
+
classes) for consistent styling across the product.
|
|
100
|
+
</Text>
|
|
101
|
+
</Stack>
|
|
102
|
+
|
|
103
|
+
<Stack mb="rec-xl">
|
|
104
|
+
<Heading order={2} mb="rec-md">
|
|
105
|
+
Configuring Recursica
|
|
106
|
+
</Heading>
|
|
107
|
+
<Text mb="rec-md">
|
|
108
|
+
To modify the Recursica configuration (tokens, brand, theme), go to{" "}
|
|
109
|
+
<Link href={FORGE_URL} target="_blank" rel="noopener noreferrer">
|
|
110
|
+
{FORGE_URL}
|
|
111
|
+
</Link>
|
|
112
|
+
. Changes there drive the tokens and theme you see in this Storybook.
|
|
113
|
+
</Text>
|
|
114
|
+
</Stack>
|
|
115
|
+
|
|
116
|
+
<Stack mb="rec-xl">
|
|
117
|
+
<Heading order={2} mb="rec-md">
|
|
118
|
+
Documentation
|
|
119
|
+
</Heading>
|
|
120
|
+
<Text mb="rec-md">
|
|
121
|
+
For full documentation, guides, and API reference, visit{" "}
|
|
122
|
+
<Link href={DOCS_URL} target="_blank" rel="noopener noreferrer">
|
|
123
|
+
{DOCS_URL}
|
|
124
|
+
</Link>
|
|
125
|
+
.
|
|
126
|
+
</Text>
|
|
127
|
+
</Stack>
|
|
128
|
+
</Container>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const meta = {
|
|
133
|
+
title: "Introduction",
|
|
134
|
+
} satisfies Meta;
|
|
135
|
+
|
|
136
|
+
export default meta;
|
|
137
|
+
|
|
138
|
+
export const Welcome = {
|
|
139
|
+
render: () => <IntroductionContent />,
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export const Adapters = {
|
|
143
|
+
render: () => <AdaptersContent />,
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export const OverStyling = {
|
|
147
|
+
name: "Over Styling",
|
|
148
|
+
render: () => <OverStylingInfo />,
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export const VersionInfoStory = {
|
|
152
|
+
name: "Version Info",
|
|
153
|
+
render: () => <VersionInfo />,
|
|
154
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import ReactMarkdown from "react-markdown";
|
|
2
|
+
import { TypographyStylesProvider } from "@mantine/core";
|
|
3
|
+
import {
|
|
4
|
+
Container,
|
|
5
|
+
Card,
|
|
6
|
+
Heading,
|
|
7
|
+
Text as RawText,
|
|
8
|
+
Group,
|
|
9
|
+
Stack,
|
|
10
|
+
Switch as RawSwitch,
|
|
11
|
+
} from "./components";
|
|
12
|
+
import { Button as RawButton } from "./components/Button/Button";
|
|
13
|
+
import {
|
|
14
|
+
useGlobalOverStyled,
|
|
15
|
+
toggleGlobalOverStyled,
|
|
16
|
+
wrapComponent,
|
|
17
|
+
} from "@recursica/adapter-common";
|
|
18
|
+
import overStylingDoc from "../OVERSTYLING.md?raw";
|
|
19
|
+
|
|
20
|
+
const Button = wrapComponent(RawButton);
|
|
21
|
+
const Text = wrapComponent(RawText);
|
|
22
|
+
const Switch = wrapComponent(RawSwitch);
|
|
23
|
+
|
|
24
|
+
export const OverStylingInfo = () => {
|
|
25
|
+
const isHighlightActive = useGlobalOverStyled();
|
|
26
|
+
return (
|
|
27
|
+
<Container size="md" style={{ padding: "32px 0" }}>
|
|
28
|
+
<Card>
|
|
29
|
+
<Card.Content>
|
|
30
|
+
<TypographyStylesProvider>
|
|
31
|
+
<ReactMarkdown>{overStylingDoc}</ReactMarkdown>
|
|
32
|
+
</TypographyStylesProvider>
|
|
33
|
+
|
|
34
|
+
<Stack
|
|
35
|
+
style={{ height: 1, backgroundColor: "#eaeaea" }}
|
|
36
|
+
my="rec-xl"
|
|
37
|
+
/>
|
|
38
|
+
|
|
39
|
+
<Heading order={3} mb="rec-md">
|
|
40
|
+
Try It Yourself
|
|
41
|
+
</Heading>
|
|
42
|
+
|
|
43
|
+
<Group mb="rec-xl">
|
|
44
|
+
<Switch
|
|
45
|
+
label="Highlight Over-Styled Components"
|
|
46
|
+
checked={isHighlightActive}
|
|
47
|
+
onChange={() => toggleGlobalOverStyled()}
|
|
48
|
+
/>
|
|
49
|
+
</Group>
|
|
50
|
+
|
|
51
|
+
<Text mb="rec-xl">
|
|
52
|
+
Below is a side-by-side comparison. The first is a standard
|
|
53
|
+
Recursica Button protected by the design tokens mapping. The second
|
|
54
|
+
flagrantly forces <code>overStyled={`{true}`}</code>, allowing
|
|
55
|
+
Mantine's native styling generics to punch right through the sandbox
|
|
56
|
+
layout.
|
|
57
|
+
</Text>
|
|
58
|
+
|
|
59
|
+
<Group gap="rec-xl">
|
|
60
|
+
<Stack gap="rec-sm">
|
|
61
|
+
<Text overStyled size="sm" c="dimmed">
|
|
62
|
+
Strict Baseline (Default)
|
|
63
|
+
</Text>
|
|
64
|
+
<Button variant="solid">Standard UI Kit Button</Button>
|
|
65
|
+
</Stack>
|
|
66
|
+
<Stack gap="rec-sm">
|
|
67
|
+
<Text overStyled size="sm" c="dimmed">
|
|
68
|
+
overStyled
|
|
69
|
+
</Text>
|
|
70
|
+
<Button overStyled={true} bg="pink" c="black" radius="xl">
|
|
71
|
+
Unsafe Pink Marketing Button
|
|
72
|
+
</Button>
|
|
73
|
+
</Stack>
|
|
74
|
+
</Group>
|
|
75
|
+
</Card.Content>
|
|
76
|
+
</Card>
|
|
77
|
+
</Container>
|
|
78
|
+
);
|
|
79
|
+
};
|
package/src/Version.tsx
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import ReactMarkdown from "react-markdown";
|
|
2
|
+
import {
|
|
3
|
+
Container,
|
|
4
|
+
Paper,
|
|
5
|
+
Title,
|
|
6
|
+
TypographyStylesProvider,
|
|
7
|
+
Group,
|
|
8
|
+
Anchor,
|
|
9
|
+
Divider,
|
|
10
|
+
} from "@mantine/core";
|
|
11
|
+
import pkg from "../package.json";
|
|
12
|
+
import changelog from "../CHANGELOG.md?raw";
|
|
13
|
+
|
|
14
|
+
export const VersionInfo = () => {
|
|
15
|
+
return (
|
|
16
|
+
<Container size="md" py="xl">
|
|
17
|
+
<Paper withBorder p="xl" radius="md">
|
|
18
|
+
<Title order={1} mb="xs">
|
|
19
|
+
Mantine Adapter v{pkg.version}
|
|
20
|
+
</Title>
|
|
21
|
+
<Group mb="xl" gap="md">
|
|
22
|
+
<Anchor
|
|
23
|
+
href="https://github.com/borderux/recursica"
|
|
24
|
+
target="_blank"
|
|
25
|
+
rel="noopener noreferrer"
|
|
26
|
+
>
|
|
27
|
+
GitHub Repository
|
|
28
|
+
</Anchor>
|
|
29
|
+
<Anchor
|
|
30
|
+
href="https://recursica.com"
|
|
31
|
+
target="_blank"
|
|
32
|
+
rel="noopener noreferrer"
|
|
33
|
+
>
|
|
34
|
+
Documentation & Website
|
|
35
|
+
</Anchor>
|
|
36
|
+
</Group>
|
|
37
|
+
<Divider mb="xl" />
|
|
38
|
+
<TypographyStylesProvider>
|
|
39
|
+
<ReactMarkdown>{changelog}</ReactMarkdown>
|
|
40
|
+
</TypographyStylesProvider>
|
|
41
|
+
</Paper>
|
|
42
|
+
</Container>
|
|
43
|
+
);
|
|
44
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Accordion – implementation notes
|
|
2
|
+
|
|
3
|
+
Decisions and design tweaks strictly tailored for the UI Kit's Accordion wrapped against `@mantine/core`. Use this when managing components possessing deeply nested state logic (e.g., active toggles, nested headers mapping external design properties).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Hybrid Composition API (Smart Rendering Flow)
|
|
8
|
+
|
|
9
|
+
**Decision:** We fundamentally maintain the exact library composition API structure (`<Accordion>`, `<Accordion.Item>`, `<Accordion.Control>`, `<Accordion.Panel>`) while actively supporting an auto-completing flattened prop schema matching the unified Recursica API (`title`, `leftIcon`, `divider`).
|
|
10
|
+
**Implementation:** Avoid rigid raw parameter dumps. Mantine dynamically injects explicit `id` logic, keyboard ARIA mapping, and focus tracking correctly across `Control` to `Panel` DOM connections natively. By exposing the hierarchical mapping 1:1, Recursica safely adopts these capabilities. However, to strictly support Recursica's unified prop mapping interface:
|
|
11
|
+
|
|
12
|
+
- **Auto-Construction:** If integrators natively pass `title` and/or `leftIcon` props into `<AccordionItem>`, the component structurally auto-generates the internal `AccordionControl` sub-wrappers mapping the text and SVG natively, whilst treating `children` implicitly as the Panel contents.
|
|
13
|
+
- **Graceful Falldown:** If `title` is heavily omitted, the node immediately falls backward into raw Mantine composability expecting integrators mapped `<Accordion.Control>` entirely manually.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. Default Configuration Reset (`unstyled`)
|
|
18
|
+
|
|
19
|
+
**Decision:** We strip Mantine's inner styles away completely from Accordion mappings by leveraging Mantine's own `variant="unstyled"`. That Mantine sentinel is an internal implementation detail, not something a Recursica consumer should ever set directly — `RecursicaAccordionProps.variant` is `"default" | (string & {})`: `"default"` is the only value with dedicated Recursica styling, mapped internally via `mapVariant` in `Accordion.tsx`; any other string is a caller-supplied custom variant and passes straight through to Mantine unmapped.
|
|
20
|
+
**Implementation:** `AccordionBase` defaults `variant` to Recursica's `"default"`, looks it up in `mapVariant` (`{ default: "unstyled" }`), and passes the resolved value (or the original string, if it wasn't a recognized key) to `<MantineAccordion variant={...}>`. The `"default"` → `"unstyled"` mapping effectively deletes Mantine's precomputed padding, borders, and shadow mappings allowing our targeted `classNames` inside `Accordion.module.css` to become the exact source of foundational truth without "fighting" `!important` tags or unpredictable flex-layouts inherited globally.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 3. Strict SVG Icons Wrapper (`.iconLeftWrapper`)
|
|
25
|
+
|
|
26
|
+
**Decision:** Identical logic enforced as seen within Buttons: SVG scales dynamically inside `.mantine-leftSection` based on SVGs internal definition boundaries potentially corrupting header gaps.
|
|
27
|
+
**Implementation:** `AccordionControl` captures `<span className={styles.iconLeftWrapper} aria-hidden>` forcing `object-fit: contain` mapped exactly to the `properties_icon-left-size` Recursica dimension token forcing integrator SVG overrides inline perfectly.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 4. Transparent Global Hover Fixes
|
|
32
|
+
|
|
33
|
+
**Decision:** We nullify internal Mantine button hover actions and exclusively utilize Recursica's hover structure natively.
|
|
34
|
+
**Implementation:** We construct `.control::after` pseudo-objects dynamically pulling our `hover-color` & `hover-opacity` bindings. Mantine's native action sets `.control:hover { background-color: var(...) }` dynamically causing internal layer overlaps. We enforce `background-color: transparent` strictly overriding it, preserving our pseudo-overlay layer-cascade cleanly.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 5. Active Target Hooks (`[data-active]`)
|
|
39
|
+
|
|
40
|
+
**Decision:** Collapsed and expanded state tracking requires separate background maps across `AccordionItem`.
|
|
41
|
+
**Implementation:** Rather than syncing React `useState` hooks matching `Accordion.value`, we defer to Mantine's inherent DOM mapping: `.item[data-active]` implicitly triggers exactly when Mantine registers an expansion state swap changing values down dynamically on the element layer, perfectly binding to `--recursica_..._background-expanded`.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 6. Nullifying Isolated State Bounds (`open` boolean)
|
|
46
|
+
|
|
47
|
+
**Decision:** We do not bind isolated `open={true}` state properties natively on individual `<AccordionItem>` configurations.
|
|
48
|
+
**Implementation:** Recursica natively dictates an item-level `open` tracking mapping. However, internally mapping boolean flags structurally across specific tree nodes heavily corrupts Mantine's DOM layout algorithms mapping parent-driven transition listeners. Mantine forces all expanded-height logic to run symmetrically off the `<Accordion value="...">` string matching array to accurately bind ARIA transitions. We explicitly ignore isolated item `<AccordionItem open={...}>` booleans to shield the rendering sequence cleanly.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 7. Native `icon` slot is omitted on `AccordionControl`
|
|
53
|
+
|
|
54
|
+
**Decision:** Mantine's `AccordionControl` has its own native `icon` prop — a distinct,
|
|
55
|
+
documented slot ("icon displayed next to the label") — which the adapter reuses internally
|
|
56
|
+
to render Recursica's `leftIcon`. Left unguarded, a caller could pass native `icon` directly
|
|
57
|
+
and silently override the `leftIcon`-derived element (spread order would let it win).
|
|
58
|
+
**Implementation:** `AccordionControlWrapperProps` omits `icon` from Mantine's native
|
|
59
|
+
`AccordionControlProps` before merging in `RecursicaAccordionControlProps`, so the only way
|
|
60
|
+
to set that slot is through `leftIcon`. Mantine's separate, per-control `chevron` override
|
|
61
|
+
is _not_ omitted — nothing here computes it, so it still passes through safely if a caller
|
|
62
|
+
wants to override the cascaded container-level chevron for a single item.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## `.label` descender clipping (Matt Massey, 2026-08-28)
|
|
67
|
+
|
|
68
|
+
`.label` used plain `overflow: hidden` to make `text-overflow: ellipsis` work, which also clips
|
|
69
|
+
descenders (e.g. the "g" in a long title) whenever `text_line-height` is tighter than the font's
|
|
70
|
+
natural ascent+descent. Switched to `overflow: clip; overflow-clip-margin: 0.35em;` — same
|
|
71
|
+
truncation, but ink can bleed slightly past the line box before it's actually clipped. Project-wide
|
|
72
|
+
fix; see Chip's `CHIP_IMPLEMENTATION_NOTES.md` for the original discovery.
|