paris 0.23.1 → 0.24.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/CHANGELOG.md +16 -0
- package/README.md +17 -17
- package/dist/helpers/OpenChangeEffect.d.ts +11 -0
- package/dist/helpers/OpenChangeEffect.js +16 -0
- package/dist/helpers/OpenChangeEffect.js.map +1 -0
- package/dist/helpers/renderEnhancer.d.ts +7 -0
- package/dist/helpers/renderEnhancer.js +20 -0
- package/dist/helpers/renderEnhancer.js.map +1 -0
- package/dist/helpers/useControllableState.d.ts +7 -0
- package/dist/helpers/useControllableState.js +49 -0
- package/dist/helpers/useControllableState.js.map +1 -0
- package/dist/helpers/useIsMounted.d.ts +1 -0
- package/dist/helpers/useResizeObserver.d.ts +12 -0
- package/dist/stories/accordion/Accordion.d.ts +47 -0
- package/dist/stories/accordion/Accordion.js +82 -0
- package/dist/stories/accordion/Accordion.js.map +1 -0
- package/dist/stories/accordion/Accordion.module.css +130 -0
- package/dist/stories/accordion/Accordion.module.scss.js +26 -0
- package/dist/stories/accordion/Accordion.module.scss.js.map +1 -0
- package/dist/stories/accordion/index.js +2 -0
- package/dist/stories/accordion/index.js.map +1 -0
- package/dist/stories/accordionselect/AccordionSelect.d.ts +102 -0
- package/dist/stories/accordionselect/AccordionSelect.js +137 -0
- package/dist/stories/accordionselect/AccordionSelect.js.map +1 -0
- package/dist/stories/accordionselect/AccordionSelect.module.css +106 -0
- package/dist/stories/accordionselect/AccordionSelect.module.scss.js +27 -0
- package/dist/stories/accordionselect/AccordionSelect.module.scss.js.map +1 -0
- package/dist/stories/accordionselect/index.js +2 -0
- package/dist/stories/accordionselect/index.js.map +1 -0
- package/dist/stories/avatar/Avatar.d.ts +22 -0
- package/dist/stories/avatar/Avatar.js +37 -0
- package/dist/stories/avatar/Avatar.js.map +1 -0
- package/dist/stories/avatar/Avatar.module.css +7 -0
- package/dist/stories/avatar/Avatar.module.scss.js +7 -0
- package/dist/stories/avatar/Avatar.module.scss.js.map +1 -0
- package/dist/stories/avatar/index.js +2 -0
- package/dist/stories/avatar/index.js.map +1 -0
- package/dist/stories/button/Button.d.ts +120 -0
- package/dist/stories/button/Button.js +123 -0
- package/dist/stories/button/Button.js.map +1 -0
- package/dist/stories/button/Button.module.css +137 -0
- package/dist/stories/button/Button.module.scss.js +35 -0
- package/dist/stories/button/Button.module.scss.js.map +1 -0
- package/dist/stories/button/index.js +2 -0
- package/dist/stories/button/index.js.map +1 -0
- package/dist/stories/callout/Callout.d.ts +22 -0
- package/dist/stories/callout/Callout.js +21 -0
- package/dist/stories/callout/Callout.js.map +1 -0
- package/dist/stories/callout/Callout.module.css +35 -0
- package/dist/stories/callout/Callout.module.scss.js +15 -0
- package/dist/stories/callout/Callout.module.scss.js.map +1 -0
- package/dist/stories/callout/index.js +2 -0
- package/dist/stories/callout/index.js.map +1 -0
- package/dist/stories/card/Card.d.ts +30 -0
- package/dist/stories/card/Card.js +22 -0
- package/dist/stories/card/Card.js.map +1 -0
- package/dist/stories/card/Card.module.css +39 -0
- package/dist/stories/card/Card.module.scss.js +17 -0
- package/dist/stories/card/Card.module.scss.js.map +1 -0
- package/dist/stories/card/index.js +2 -0
- package/dist/stories/card/index.js.map +1 -0
- package/dist/stories/cardbutton/CardButton.d.ts +50 -0
- package/dist/stories/cardbutton/CardButton.js +53 -0
- package/dist/stories/cardbutton/CardButton.js.map +1 -0
- package/dist/stories/cardbutton/CardButton.module.css +77 -0
- package/dist/stories/cardbutton/CardButton.module.scss.js +19 -0
- package/dist/stories/cardbutton/CardButton.module.scss.js.map +1 -0
- package/dist/stories/cardbutton/index.js +2 -0
- package/dist/stories/cardbutton/index.js.map +1 -0
- package/dist/stories/checkbox/Checkbox.d.ts +31 -0
- package/dist/stories/checkbox/Checkbox.js +99 -0
- package/dist/stories/checkbox/Checkbox.js.map +1 -0
- package/dist/stories/checkbox/Checkbox.module.css +155 -0
- package/dist/stories/checkbox/Checkbox.module.scss.js +32 -0
- package/dist/stories/checkbox/Checkbox.module.scss.js.map +1 -0
- package/dist/stories/checkbox/index.js +2 -0
- package/dist/stories/checkbox/index.js.map +1 -0
- package/dist/stories/codeinput/CodeInput.d.ts +47 -0
- package/dist/stories/codeinput/CodeInput.js +105 -0
- package/dist/stories/codeinput/CodeInput.js.map +1 -0
- package/dist/stories/codeinput/CodeInput.module.css +63 -0
- package/dist/stories/codeinput/CodeInput.module.scss.js +13 -0
- package/dist/stories/codeinput/CodeInput.module.scss.js.map +1 -0
- package/dist/stories/codeinput/index.js +2 -0
- package/dist/stories/codeinput/index.js.map +1 -0
- package/dist/stories/combobox/Combobox.d.ts +125 -0
- package/dist/stories/combobox/Combobox.js +257 -0
- package/dist/stories/combobox/Combobox.js.map +1 -0
- package/dist/stories/combobox/index.js +2 -0
- package/dist/stories/combobox/index.js.map +1 -0
- package/dist/stories/dialog/Dialog.d.ts +103 -0
- package/dist/stories/dialog/Dialog.js +187 -0
- package/dist/stories/dialog/Dialog.js.map +1 -0
- package/dist/stories/dialog/Dialog.module.css +185 -0
- package/dist/stories/dialog/Dialog.module.scss.js +48 -0
- package/dist/stories/dialog/Dialog.module.scss.js.map +1 -0
- package/dist/stories/dialog/index.js +2 -0
- package/dist/stories/dialog/index.js.map +1 -0
- package/dist/stories/drawer/Drawer.d.ts +143 -0
- package/dist/stories/drawer/Drawer.js +357 -0
- package/dist/stories/drawer/Drawer.js.map +1 -0
- package/dist/stories/drawer/Drawer.module.css +406 -0
- package/dist/stories/drawer/Drawer.module.scss.js +96 -0
- package/dist/stories/drawer/Drawer.module.scss.js.map +1 -0
- package/dist/stories/drawer/DrawerActions.d.ts +5 -0
- package/dist/stories/drawer/DrawerActions.js +23 -0
- package/dist/stories/drawer/DrawerActions.js.map +1 -0
- package/dist/stories/drawer/DrawerBottomPanel.d.ts +9 -0
- package/dist/stories/drawer/DrawerBottomPanel.js +48 -0
- package/dist/stories/drawer/DrawerBottomPanel.js.map +1 -0
- package/dist/stories/drawer/DrawerContext.d.ts +11 -0
- package/dist/stories/drawer/DrawerContext.js +23 -0
- package/dist/stories/drawer/DrawerContext.js.map +1 -0
- package/dist/stories/drawer/DrawerPage.d.ts +12 -0
- package/dist/stories/drawer/DrawerPage.js +22 -0
- package/dist/stories/drawer/DrawerPage.js.map +1 -0
- package/dist/stories/drawer/DrawerPageContext.d.ts +12 -0
- package/dist/stories/drawer/DrawerPageContext.js +23 -0
- package/dist/stories/drawer/DrawerPageContext.js.map +1 -0
- package/dist/stories/drawer/DrawerPaginationContext.d.ts +9 -0
- package/dist/stories/drawer/DrawerPaginationContext.js +17 -0
- package/dist/stories/drawer/DrawerPaginationContext.js.map +1 -0
- package/dist/stories/drawer/DrawerProgressBar.d.ts +15 -0
- package/dist/stories/drawer/DrawerProgressBar.js +60 -0
- package/dist/stories/drawer/DrawerProgressBar.js.map +1 -0
- package/dist/stories/drawer/DrawerSlotContext.d.ts +34 -0
- package/dist/stories/drawer/DrawerSlotContext.js +120 -0
- package/dist/stories/drawer/DrawerSlotContext.js.map +1 -0
- package/dist/stories/drawer/DrawerTitle.d.ts +5 -0
- package/dist/stories/drawer/DrawerTitle.js +29 -0
- package/dist/stories/drawer/DrawerTitle.js.map +1 -0
- package/dist/stories/drawer/index.js +10 -0
- package/dist/stories/drawer/index.js.map +1 -0
- package/dist/stories/field/Field.d.ts +54 -0
- package/dist/stories/field/Field.js +91 -0
- package/dist/stories/field/Field.js.map +1 -0
- package/dist/stories/field/index.js +2 -0
- package/dist/stories/field/index.js.map +1 -0
- package/dist/stories/icon/ArrowRight.d.ts +2 -0
- package/dist/stories/icon/ArrowRight.js +13 -0
- package/dist/stories/icon/ArrowRight.js.map +1 -0
- package/dist/stories/icon/Check.d.ts +2 -0
- package/dist/stories/icon/Check.js +13 -0
- package/dist/stories/icon/Check.js.map +1 -0
- package/dist/stories/icon/ChevronLeft.d.ts +2 -0
- package/dist/stories/icon/ChevronLeft.js +13 -0
- package/dist/stories/icon/ChevronLeft.js.map +1 -0
- package/dist/stories/icon/ChevronRight.d.ts +2 -0
- package/dist/stories/icon/ChevronRight.js +13 -0
- package/dist/stories/icon/ChevronRight.js.map +1 -0
- package/dist/stories/icon/Close.d.ts +2 -0
- package/dist/stories/icon/Close.js +13 -0
- package/dist/stories/icon/Close.js.map +1 -0
- package/dist/stories/icon/Ellipsis.d.ts +2 -0
- package/dist/stories/icon/Ellipsis.js +13 -0
- package/dist/stories/icon/Ellipsis.js.map +1 -0
- package/{src/stories/icon/Icon.tsx → dist/stories/icon/Icon.d.ts} +2 -8
- package/dist/stories/icon/Icon.js +8 -0
- package/dist/stories/icon/Icon.js.map +1 -0
- package/dist/stories/icon/Info.d.ts +2 -0
- package/dist/stories/icon/Info.js +13 -0
- package/dist/stories/icon/Info.js.map +1 -0
- package/dist/stories/icon/NotificationDot.d.ts +2 -0
- package/dist/stories/icon/NotificationDot.js +7 -0
- package/dist/stories/icon/NotificationDot.js.map +1 -0
- package/dist/stories/icon/Spinner.d.ts +2 -0
- package/dist/stories/icon/Spinner.js +24 -0
- package/dist/stories/icon/Spinner.js.map +1 -0
- package/dist/stories/icon/index.js +11 -0
- package/dist/stories/icon/index.js.map +1 -0
- package/dist/stories/informationaltooltip/InformationalTooltip.d.ts +68 -0
- package/dist/stories/informationaltooltip/InformationalTooltip.js +85 -0
- package/dist/stories/informationaltooltip/InformationalTooltip.js.map +1 -0
- package/dist/stories/informationaltooltip/InformationalTooltip.module.css +22 -0
- package/dist/stories/informationaltooltip/InformationalTooltip.module.scss.js +11 -0
- package/dist/stories/informationaltooltip/InformationalTooltip.module.scss.js.map +1 -0
- package/dist/stories/informationaltooltip/index.js +2 -0
- package/dist/stories/informationaltooltip/index.js.map +1 -0
- package/dist/stories/input/Input.d.ts +57 -0
- package/dist/stories/input/Input.js +108 -0
- package/dist/stories/input/Input.js.map +1 -0
- package/dist/stories/input/Input.module.css +165 -0
- package/dist/stories/input/Input.module.scss.js +23 -0
- package/dist/stories/input/Input.module.scss.js.map +1 -0
- package/dist/stories/input/index.js +2 -0
- package/dist/stories/input/index.js.map +1 -0
- package/dist/stories/markdown/Markdown.d.ts +36 -0
- package/dist/stories/markdown/Markdown.js +141 -0
- package/dist/stories/markdown/Markdown.js.map +1 -0
- package/dist/stories/markdown/Markdown.module.css +301 -0
- package/dist/stories/markdown/Markdown.module.scss.js +73 -0
- package/dist/stories/markdown/Markdown.module.scss.js.map +1 -0
- package/dist/stories/markdown/index.js +2 -0
- package/dist/stories/markdown/index.js.map +1 -0
- package/dist/stories/markdowneditor/FixedToolbar.d.ts +19 -0
- package/dist/stories/markdowneditor/FixedToolbar.js +212 -0
- package/dist/stories/markdowneditor/FixedToolbar.js.map +1 -0
- package/dist/stories/markdowneditor/FixedToolbar.module.css +24 -0
- package/dist/stories/markdowneditor/FixedToolbar.module.scss.js +11 -0
- package/dist/stories/markdowneditor/FixedToolbar.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/FloatingToolbar.d.ts +15 -0
- package/dist/stories/markdowneditor/FloatingToolbar.js +66 -0
- package/dist/stories/markdowneditor/FloatingToolbar.js.map +1 -0
- package/dist/stories/markdowneditor/FloatingToolbar.module.css +18 -0
- package/dist/stories/markdowneditor/FloatingToolbar.module.scss.js +9 -0
- package/dist/stories/markdowneditor/FloatingToolbar.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/LinkPopover.d.ts +11 -0
- package/dist/stories/markdowneditor/LinkPopover.js +106 -0
- package/dist/stories/markdowneditor/LinkPopover.js.map +1 -0
- package/dist/stories/markdowneditor/LinkPopover.module.css +113 -0
- package/dist/stories/markdowneditor/LinkPopover.module.scss.js +21 -0
- package/dist/stories/markdowneditor/LinkPopover.module.scss.js.map +1 -0
- package/{src/stories/markdowneditor/MarkdownEditor.tsx → dist/stories/markdowneditor/MarkdownEditor.d.ts} +5 -68
- package/dist/stories/markdowneditor/MarkdownEditor.js +62 -0
- package/dist/stories/markdowneditor/MarkdownEditor.js.map +1 -0
- package/dist/stories/markdowneditor/MarkdownEditor.module.css +325 -0
- package/dist/stories/markdowneditor/MarkdownEditor.module.scss.js +11 -0
- package/dist/stories/markdowneditor/MarkdownEditor.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/MarkdownEditorContext.d.ts +10 -0
- package/dist/stories/markdowneditor/MarkdownEditorContext.js +11 -0
- package/dist/stories/markdowneditor/MarkdownEditorContext.js.map +1 -0
- package/dist/stories/markdowneditor/ToolbarButton.d.ts +22 -0
- package/dist/stories/markdowneditor/ToolbarButton.js +33 -0
- package/dist/stories/markdowneditor/ToolbarButton.js.map +1 -0
- package/dist/stories/markdowneditor/ToolbarButton.module.css +30 -0
- package/dist/stories/markdowneditor/ToolbarButton.module.scss.js +7 -0
- package/dist/stories/markdowneditor/ToolbarButton.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/features.d.ts +10 -0
- package/dist/stories/markdowneditor/features.js +79 -0
- package/dist/stories/markdowneditor/features.js.map +1 -0
- package/dist/stories/markdowneditor/index.js +7 -0
- package/dist/stories/markdowneditor/index.js.map +1 -0
- package/dist/stories/markdowneditor/useMarkdownEditor.d.ts +19 -0
- package/dist/stories/markdowneditor/useMarkdownEditor.js +50 -0
- package/dist/stories/markdowneditor/useMarkdownEditor.js.map +1 -0
- package/dist/stories/menu/Menu.d.ts +48 -0
- package/dist/stories/menu/Menu.js +31 -0
- package/dist/stories/menu/Menu.js.map +1 -0
- package/dist/stories/menu/Menu.module.css +59 -0
- package/dist/stories/menu/Menu.module.scss.js +12 -0
- package/dist/stories/menu/Menu.module.scss.js.map +1 -0
- package/dist/stories/menu/index.js +2 -0
- package/dist/stories/menu/index.js.map +1 -0
- package/dist/stories/pagination/index.js +2 -0
- package/dist/stories/pagination/index.js.map +1 -0
- package/dist/stories/pagination/usePagination.d.ts +47 -0
- package/dist/stories/pagination/usePagination.js +52 -0
- package/dist/stories/pagination/usePagination.js.map +1 -0
- package/dist/stories/popover/Popover.d.ts +29 -0
- package/dist/stories/popover/Popover.js +56 -0
- package/dist/stories/popover/Popover.js.map +1 -0
- package/dist/stories/popover/Popover.module.css +20 -0
- package/dist/stories/popover/Popover.module.scss.js +8 -0
- package/dist/stories/popover/Popover.module.scss.js.map +1 -0
- package/dist/stories/popover/index.js +2 -0
- package/dist/stories/popover/index.js.map +1 -0
- package/dist/stories/select/Select.d.ts +112 -0
- package/dist/stories/select/Select.js +283 -0
- package/dist/stories/select/Select.js.map +1 -0
- package/dist/stories/select/Select.module.css +236 -0
- package/dist/stories/select/Select.module.scss.js +47 -0
- package/dist/stories/select/Select.module.scss.js.map +1 -0
- package/dist/stories/select/index.js +2 -0
- package/dist/stories/select/index.js.map +1 -0
- package/dist/stories/styledlink/StyledLink.d.ts +20 -0
- package/dist/stories/styledlink/StyledLink.js +15 -0
- package/dist/stories/styledlink/StyledLink.js.map +1 -0
- package/dist/stories/styledlink/StyledLink.module.css +10 -0
- package/dist/stories/styledlink/StyledLink.module.scss.js +7 -0
- package/dist/stories/styledlink/StyledLink.module.scss.js.map +1 -0
- package/dist/stories/styledlink/index.js +2 -0
- package/dist/stories/styledlink/index.js.map +1 -0
- package/dist/stories/table/Table.d.ts +76 -0
- package/dist/stories/table/Table.js +91 -0
- package/dist/stories/table/Table.js.map +1 -0
- package/dist/stories/table/Table.module.css +60 -0
- package/dist/stories/table/Table.module.scss.js +21 -0
- package/dist/stories/table/Table.module.scss.js.map +1 -0
- package/dist/stories/table/index.js +2 -0
- package/dist/stories/table/index.js.map +1 -0
- package/dist/stories/tabs/Tabs.d.ts +74 -0
- package/dist/stories/tabs/Tabs.js +128 -0
- package/dist/stories/tabs/Tabs.js.map +1 -0
- package/dist/stories/tabs/Tabs.module.css +144 -0
- package/dist/stories/tabs/Tabs.module.scss.js +37 -0
- package/dist/stories/tabs/Tabs.module.scss.js.map +1 -0
- package/dist/stories/tabs/index.js +2 -0
- package/dist/stories/tabs/index.js.map +1 -0
- package/dist/stories/tag/Tag.d.ts +36 -0
- package/dist/stories/tag/Tag.js +52 -0
- package/dist/stories/tag/Tag.js.map +1 -0
- package/dist/stories/tag/Tag.module.css +164 -0
- package/dist/stories/tag/Tag.module.scss.js +38 -0
- package/dist/stories/tag/Tag.module.scss.js.map +1 -0
- package/dist/stories/tag/index.js +2 -0
- package/dist/stories/tag/index.js.map +1 -0
- package/dist/stories/text/Text.d.ts +52 -0
- package/dist/stories/text/Text.js +37 -0
- package/dist/stories/text/Text.js.map +1 -0
- package/dist/stories/text/Text.module.css +54 -0
- package/dist/stories/text/Text.module.scss.js +19 -0
- package/dist/stories/text/Text.module.scss.js.map +1 -0
- package/{src → dist}/stories/text/Typography.module.css +20 -20
- package/dist/stories/text/Typography.module.css.js +45 -0
- package/dist/stories/text/Typography.module.css.js.map +1 -0
- package/dist/stories/text/index.js +2 -0
- package/dist/stories/text/index.js.map +1 -0
- package/dist/stories/textarea/TextArea.d.ts +28 -0
- package/dist/stories/textarea/TextArea.js +102 -0
- package/dist/stories/textarea/TextArea.js.map +1 -0
- package/dist/stories/textarea/index.js +2 -0
- package/dist/stories/textarea/index.js.map +1 -0
- package/{src/stories/theme/tw-preflight.css → dist/stories/theme/global.css} +86 -110
- package/dist/stories/theme/index.js +4 -0
- package/dist/stories/theme/index.js.map +1 -0
- package/dist/stories/theme/themes.d.ts +513 -0
- package/dist/stories/theme/themes.js +854 -0
- package/dist/stories/theme/themes.js.map +1 -0
- package/dist/stories/theme/tokens.d.ts +128 -0
- package/dist/stories/theme/tokens.js +130 -0
- package/dist/stories/theme/tokens.js.map +1 -0
- package/dist/stories/tilt/Tilt.d.ts +70 -0
- package/dist/stories/tilt/Tilt.js +256 -0
- package/dist/stories/tilt/Tilt.js.map +1 -0
- package/dist/stories/tilt/Tilt.module.css +22 -0
- package/dist/stories/tilt/Tilt.module.scss.js +11 -0
- package/dist/stories/tilt/Tilt.module.scss.js.map +1 -0
- package/dist/stories/tilt/index.js +2 -0
- package/dist/stories/tilt/index.js.map +1 -0
- package/{src/stories/toast/Toast.tsx → dist/stories/toast/Toast.d.ts} +3 -17
- package/dist/stories/toast/Toast.js +19 -0
- package/dist/stories/toast/Toast.js.map +1 -0
- package/dist/stories/toast/Toast.module.css +17 -0
- package/dist/stories/toast/Toast.module.scss.js +7 -0
- package/dist/stories/toast/Toast.module.scss.js.map +1 -0
- package/dist/stories/toast/index.js +3 -0
- package/dist/stories/toast/index.js.map +1 -0
- package/dist/stories/utility/EasingFunctions.d.ts +1 -0
- package/dist/stories/utility/EasingFunctions.js +6 -0
- package/dist/stories/utility/EasingFunctions.js.map +1 -0
- package/dist/stories/utility/RemoveFromDOM.d.ts +11 -0
- package/dist/stories/utility/RemoveFromDOM.js +7 -0
- package/dist/stories/utility/RemoveFromDOM.js.map +1 -0
- package/dist/stories/utility/TextWhenString.d.ts +6 -0
- package/dist/stories/utility/TextWhenString.js +13 -0
- package/dist/stories/utility/TextWhenString.js.map +1 -0
- package/dist/stories/utility/VisuallyHidden.d.ts +13 -0
- package/dist/stories/utility/VisuallyHidden.js +8 -0
- package/dist/stories/utility/VisuallyHidden.js.map +1 -0
- package/dist/stories/utility/index.js +5 -0
- package/dist/stories/utility/index.js.map +1 -0
- package/dist/styles.css +3307 -0
- package/dist/types/Enhancer.d.ts +4 -0
- package/package.json +148 -44
- package/src/helpers/OpenChangeEffect.tsx +0 -21
- package/src/helpers/renderEnhancer.tsx +0 -20
- package/src/helpers/useControllableState.test.ts +0 -88
- package/src/helpers/useControllableState.ts +0 -59
- package/src/helpers/useIsMounted.ts +0 -17
- package/src/helpers/useResizeObserver.ts +0 -94
- package/src/pages/_app.tsx +0 -6
- package/src/pages/_document.tsx +0 -13
- package/src/pages/index.tsx +0 -116
- package/src/stories/Pagination.mdx +0 -73
- package/src/stories/Tokens.mdx +0 -46
- package/src/stories/Welcome.mdx +0 -8
- package/src/stories/accordion/Accordion.module.scss +0 -163
- package/src/stories/accordion/Accordion.stories.ts +0 -48
- package/src/stories/accordion/Accordion.test.tsx +0 -142
- package/src/stories/accordion/Accordion.tsx +0 -148
- package/src/stories/accordionselect/AccordionSelect.module.scss +0 -119
- package/src/stories/accordionselect/AccordionSelect.stories.ts +0 -38
- package/src/stories/accordionselect/AccordionSelect.test.tsx +0 -327
- package/src/stories/accordionselect/AccordionSelect.tsx +0 -249
- package/src/stories/avatar/Avatar.module.scss +0 -7
- package/src/stories/avatar/Avatar.stories.ts +0 -22
- package/src/stories/avatar/Avatar.test.tsx +0 -77
- package/src/stories/avatar/Avatar.tsx +0 -55
- package/src/stories/button/Button.module.scss +0 -167
- package/src/stories/button/Button.stories.ts +0 -93
- package/src/stories/button/Button.test.tsx +0 -266
- package/src/stories/button/Button.tsx +0 -226
- package/src/stories/callout/Callout.module.scss +0 -43
- package/src/stories/callout/Callout.stories.ts +0 -52
- package/src/stories/callout/Callout.test.tsx +0 -79
- package/src/stories/callout/Callout.tsx +0 -43
- package/src/stories/card/Card.module.scss +0 -42
- package/src/stories/card/Card.stories.ts +0 -38
- package/src/stories/card/Card.test.tsx +0 -81
- package/src/stories/card/Card.tsx +0 -54
- package/src/stories/cardbutton/CardButton.module.scss +0 -88
- package/src/stories/cardbutton/CardButton.stories.tsx +0 -24
- package/src/stories/cardbutton/CardButton.test.tsx +0 -174
- package/src/stories/cardbutton/CardButton.tsx +0 -100
- package/src/stories/checkbox/Checkbox.module.scss +0 -198
- package/src/stories/checkbox/Checkbox.stories.ts +0 -87
- package/src/stories/checkbox/Checkbox.test.tsx +0 -584
- package/src/stories/checkbox/Checkbox.tsx +0 -123
- package/src/stories/codeinput/CodeInput.module.scss +0 -77
- package/src/stories/codeinput/CodeInput.stories.ts +0 -51
- package/src/stories/codeinput/CodeInput.test.tsx +0 -56
- package/src/stories/codeinput/CodeInput.tsx +0 -160
- package/src/stories/combobox/Combobox.module.scss +0 -5
- package/src/stories/combobox/Combobox.stories.ts +0 -270
- package/src/stories/combobox/Combobox.test.tsx +0 -275
- package/src/stories/combobox/Combobox.tsx +0 -396
- package/src/stories/dialog/Dialog.module.scss +0 -211
- package/src/stories/dialog/Dialog.stories.tsx +0 -93
- package/src/stories/dialog/Dialog.test.tsx +0 -244
- package/src/stories/dialog/Dialog.tsx +0 -283
- package/src/stories/drawer/Drawer.module.scss +0 -479
- package/src/stories/drawer/Drawer.stories.tsx +0 -494
- package/src/stories/drawer/Drawer.test.tsx +0 -734
- package/src/stories/drawer/Drawer.tsx +0 -548
- package/src/stories/drawer/DrawerActions.tsx +0 -28
- package/src/stories/drawer/DrawerBottomPanel.tsx +0 -55
- package/src/stories/drawer/DrawerContext.tsx +0 -31
- package/src/stories/drawer/DrawerPage.tsx +0 -37
- package/src/stories/drawer/DrawerPageContext.tsx +0 -35
- package/src/stories/drawer/DrawerPaginationContext.tsx +0 -22
- package/src/stories/drawer/DrawerProgressBar.tsx +0 -72
- package/src/stories/drawer/DrawerSlotContext.tsx +0 -172
- package/src/stories/drawer/DrawerTitle.tsx +0 -35
- package/src/stories/field/Field.stories.ts +0 -36
- package/src/stories/field/Field.test.tsx +0 -146
- package/src/stories/field/Field.tsx +0 -145
- package/src/stories/icon/ArrowRight.tsx +0 -11
- package/src/stories/icon/Check.tsx +0 -11
- package/src/stories/icon/ChevronLeft.tsx +0 -11
- package/src/stories/icon/ChevronRight.tsx +0 -11
- package/src/stories/icon/Close.tsx +0 -11
- package/src/stories/icon/Ellipsis.tsx +0 -11
- package/src/stories/icon/Icon.module.scss +0 -5
- package/src/stories/icon/Icon.stories.ts +0 -33
- package/src/stories/icon/Icon.test.tsx +0 -59
- package/src/stories/icon/Info.tsx +0 -11
- package/src/stories/icon/NotificationDot.tsx +0 -8
- package/src/stories/icon/Spinner.tsx +0 -17
- package/src/stories/informationaltooltip/InformationalTooltip.module.scss +0 -23
- package/src/stories/informationaltooltip/InformationalTooltip.stories.tsx +0 -61
- package/src/stories/informationaltooltip/InformationalTooltip.test.tsx +0 -178
- package/src/stories/informationaltooltip/InformationalTooltip.tsx +0 -170
- package/src/stories/input/Input.module.scss +0 -217
- package/src/stories/input/Input.stories.ts +0 -110
- package/src/stories/input/Input.test.tsx +0 -174
- package/src/stories/input/Input.tsx +0 -181
- package/src/stories/markdown/Markdown.module.scss +0 -384
- package/src/stories/markdown/Markdown.stories.ts +0 -203
- package/src/stories/markdown/Markdown.test.tsx +0 -228
- package/src/stories/markdown/Markdown.tsx +0 -293
- package/src/stories/markdowneditor/FixedToolbar.module.scss +0 -24
- package/src/stories/markdowneditor/FixedToolbar.tsx +0 -274
- package/src/stories/markdowneditor/FloatingToolbar.module.scss +0 -21
- package/src/stories/markdowneditor/FloatingToolbar.tsx +0 -94
- package/src/stories/markdowneditor/LinkPopover.module.scss +0 -124
- package/src/stories/markdowneditor/LinkPopover.tsx +0 -135
- package/src/stories/markdowneditor/MarkdownEditor.module.scss +0 -405
- package/src/stories/markdowneditor/MarkdownEditor.stories.tsx +0 -226
- package/src/stories/markdowneditor/MarkdownEditor.test.tsx +0 -115
- package/src/stories/markdowneditor/MarkdownEditorContext.tsx +0 -20
- package/src/stories/markdowneditor/ToolbarButton.module.scss +0 -35
- package/src/stories/markdowneditor/ToolbarButton.tsx +0 -52
- package/src/stories/markdowneditor/features.ts +0 -92
- package/src/stories/markdowneditor/useMarkdownEditor.ts +0 -75
- package/src/stories/menu/Menu.module.scss +0 -71
- package/src/stories/menu/Menu.stories.tsx +0 -37
- package/src/stories/menu/Menu.test.tsx +0 -254
- package/src/stories/menu/Menu.tsx +0 -95
- package/src/stories/pagination/usePagination.test.ts +0 -259
- package/src/stories/pagination/usePagination.ts +0 -117
- package/src/stories/popover/Popover.module.scss +0 -22
- package/src/stories/popover/Popover.stories.ts +0 -20
- package/src/stories/popover/Popover.test.tsx +0 -152
- package/src/stories/popover/Popover.tsx +0 -89
- package/src/stories/select/Select.module.scss +0 -311
- package/src/stories/select/Select.stories.ts +0 -153
- package/src/stories/select/Select.test.tsx +0 -341
- package/src/stories/select/Select.tsx +0 -398
- package/src/stories/styledlink/StyledLink.module.scss +0 -11
- package/src/stories/styledlink/StyledLink.stories.ts +0 -28
- package/src/stories/styledlink/StyledLink.test.tsx +0 -59
- package/src/stories/styledlink/StyledLink.tsx +0 -33
- package/src/stories/table/Table.module.scss +0 -74
- package/src/stories/table/Table.stories.ts +0 -62
- package/src/stories/table/Table.test.tsx +0 -156
- package/src/stories/table/Table.tsx +0 -182
- package/src/stories/tabs/Tabs.module.scss +0 -185
- package/src/stories/tabs/Tabs.stories.tsx +0 -209
- package/src/stories/tabs/Tabs.test.tsx +0 -167
- package/src/stories/tabs/Tabs.tsx +0 -191
- package/src/stories/tag/Tag.module.scss +0 -189
- package/src/stories/tag/Tag.stories.ts +0 -58
- package/src/stories/tag/Tag.test.tsx +0 -90
- package/src/stories/tag/Tag.tsx +0 -84
- package/src/stories/text/Text.module.scss +0 -39
- package/src/stories/text/Text.stories.ts +0 -195
- package/src/stories/text/Text.test.tsx +0 -81
- package/src/stories/text/Text.tsx +0 -108
- package/src/stories/textarea/TextArea.stories.ts +0 -39
- package/src/stories/textarea/TextArea.test.tsx +0 -147
- package/src/stories/textarea/TextArea.tsx +0 -112
- package/src/stories/theme/global.scss +0 -6
- package/src/stories/theme/themes.ts +0 -1509
- package/src/stories/theme/tokens.ts +0 -149
- package/src/stories/theme/util.scss +0 -8
- package/src/stories/tilt/Tilt.module.scss +0 -22
- package/src/stories/tilt/Tilt.stories.tsx +0 -42
- package/src/stories/tilt/Tilt.test.tsx +0 -203
- package/src/stories/tilt/Tilt.tsx +0 -375
- package/src/stories/toast/Toast.module.scss +0 -20
- package/src/stories/toast/Toast.stories.tsx +0 -31
- package/src/stories/toast/Toast.test.tsx +0 -86
- package/src/stories/utility/Dropdown.module.scss +0 -28
- package/src/stories/utility/EasingFunctions.ts +0 -3
- package/src/stories/utility/RemoveFromDOM.tsx +0 -15
- package/src/stories/utility/TextWhenString.tsx +0 -15
- package/src/stories/utility/Utility.test.tsx +0 -96
- package/src/stories/utility/VisuallyHidden.tsx +0 -18
- package/src/styles/Home.module.css +0 -268
- package/src/styles/globals.css +0 -3
- package/src/test/render.tsx +0 -20
- package/src/test/setup.ts +0 -32
- package/src/types/Enhancer.ts +0 -3
- /package/{src/stories/accordion/index.ts → dist/stories/accordion/index.d.ts} +0 -0
- /package/{src/stories/accordionselect/index.ts → dist/stories/accordionselect/index.d.ts} +0 -0
- /package/{src/stories/avatar/index.ts → dist/stories/avatar/index.d.ts} +0 -0
- /package/{src/stories/button/index.ts → dist/stories/button/index.d.ts} +0 -0
- /package/{src/stories/callout/index.ts → dist/stories/callout/index.d.ts} +0 -0
- /package/{src/stories/card/index.ts → dist/stories/card/index.d.ts} +0 -0
- /package/{src/stories/cardbutton/index.ts → dist/stories/cardbutton/index.d.ts} +0 -0
- /package/{src/stories/checkbox/index.ts → dist/stories/checkbox/index.d.ts} +0 -0
- /package/{src/stories/codeinput/index.ts → dist/stories/codeinput/index.d.ts} +0 -0
- /package/{src/stories/combobox/index.ts → dist/stories/combobox/index.d.ts} +0 -0
- /package/{src/stories/dialog/index.ts → dist/stories/dialog/index.d.ts} +0 -0
- /package/{src/stories/drawer/index.ts → dist/stories/drawer/index.d.ts} +0 -0
- /package/{src/stories/field/index.ts → dist/stories/field/index.d.ts} +0 -0
- /package/{src/stories/icon/index.ts → dist/stories/icon/index.d.ts} +0 -0
- /package/{src/stories/informationaltooltip/index.ts → dist/stories/informationaltooltip/index.d.ts} +0 -0
- /package/{src/stories/input/index.ts → dist/stories/input/index.d.ts} +0 -0
- /package/{src/stories/markdown/index.ts → dist/stories/markdown/index.d.ts} +0 -0
- /package/{src/stories/markdowneditor/index.ts → dist/stories/markdowneditor/index.d.ts} +0 -0
- /package/{src/stories/menu/index.ts → dist/stories/menu/index.d.ts} +0 -0
- /package/{src/stories/pagination/index.ts → dist/stories/pagination/index.d.ts} +0 -0
- /package/{src/stories/popover/index.ts → dist/stories/popover/index.d.ts} +0 -0
- /package/{src/stories/select/index.ts → dist/stories/select/index.d.ts} +0 -0
- /package/{src/stories/styledlink/index.ts → dist/stories/styledlink/index.d.ts} +0 -0
- /package/{src/stories/table/index.ts → dist/stories/table/index.d.ts} +0 -0
- /package/{src/stories/tabs/index.ts → dist/stories/tabs/index.d.ts} +0 -0
- /package/{src/stories/tag/index.ts → dist/stories/tag/index.d.ts} +0 -0
- /package/{src/stories/text/index.ts → dist/stories/text/index.d.ts} +0 -0
- /package/{src/stories/textarea/index.ts → dist/stories/textarea/index.d.ts} +0 -0
- /package/{src/stories/theme/index.ts → dist/stories/theme/index.d.ts} +0 -0
- /package/{src/stories/tilt/index.ts → dist/stories/tilt/index.d.ts} +0 -0
- /package/{src/stories/toast/index.ts → dist/stories/toast/index.d.ts} +0 -0
- /package/{src/stories/utility/index.ts → dist/stories/utility/index.d.ts} +0 -0
|
@@ -1,548 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from '@headlessui/react';
|
|
4
|
-
import type { CSSLength } from '@ssh/csstypes';
|
|
5
|
-
import { clsx } from 'clsx';
|
|
6
|
-
import { motion } from 'framer-motion';
|
|
7
|
-
import {
|
|
8
|
-
Children,
|
|
9
|
-
type ComponentPropsWithoutRef,
|
|
10
|
-
type ReactNode,
|
|
11
|
-
useCallback,
|
|
12
|
-
useEffect,
|
|
13
|
-
useMemo,
|
|
14
|
-
useRef,
|
|
15
|
-
useState,
|
|
16
|
-
} from 'react';
|
|
17
|
-
import { Button } from '../button';
|
|
18
|
-
import { ChevronLeft, ChevronRight, Close, Icon } from '../icon';
|
|
19
|
-
import type { PaginationState } from '../pagination';
|
|
20
|
-
import { Text } from '../text';
|
|
21
|
-
import { RemoveFromDOM } from '../utility/RemoveFromDOM';
|
|
22
|
-
import { TextWhenString } from '../utility/TextWhenString';
|
|
23
|
-
import { VisuallyHidden } from '../utility/VisuallyHidden';
|
|
24
|
-
import styles from './Drawer.module.scss';
|
|
25
|
-
import { DrawerProvider } from './DrawerContext';
|
|
26
|
-
import { type DrawerPageProps, isDrawerPageElement } from './DrawerPage';
|
|
27
|
-
import { DrawerPageProvider } from './DrawerPageContext';
|
|
28
|
-
import { DrawerPaginationProvider } from './DrawerPaginationContext';
|
|
29
|
-
import { DrawerProgressBar, type DrawerProgressBarStyleProps } from './DrawerProgressBar';
|
|
30
|
-
import { DrawerSlotProvider, useDrawerSlotContext } from './DrawerSlotContext';
|
|
31
|
-
|
|
32
|
-
export const DrawerSizePresets = ['content', 'default', 'full', 'fullWithMargin', 'fullOnMobile'] as const;
|
|
33
|
-
|
|
34
|
-
export type DrawerPageTransition = 'none' | 'crossfade' | 'slide';
|
|
35
|
-
|
|
36
|
-
/** Extract the page ID from a child element (DrawerPage or legacy div-with-key). */
|
|
37
|
-
const getChildPageID = (child: ReactNode): string | null => {
|
|
38
|
-
if (isDrawerPageElement(child)) return (child as React.ReactElement<DrawerPageProps>).props.id;
|
|
39
|
-
if (child != null && typeof child === 'object' && 'key' in child) return child.key as string;
|
|
40
|
-
return null;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export type DrawerProps<T extends string[] | readonly string[] = string[]> = {
|
|
44
|
-
/**
|
|
45
|
-
* The dialog's open state.
|
|
46
|
-
*/
|
|
47
|
-
isOpen?: boolean;
|
|
48
|
-
/**
|
|
49
|
-
* A callback that will be called when the user closes the drawer by clicking the close button or the backdrop overlay.
|
|
50
|
-
*
|
|
51
|
-
* @param value {boolean} - The new open state of the dialog.
|
|
52
|
-
*/
|
|
53
|
-
onClose?: (value: boolean) => void | Promise<void>;
|
|
54
|
-
/**
|
|
55
|
-
* The title of the drawer. Required for accessibility, but can be hidden with the `hideTitle` prop.
|
|
56
|
-
*
|
|
57
|
-
* If pagination is enabled, the title should instead describe the entire drawer, not any single page. The title will be visually hidden on all pages.
|
|
58
|
-
*
|
|
59
|
-
* If a string is passed, it will be wrapped in a {@link Text} component with `headingXSmall` styling.
|
|
60
|
-
*/
|
|
61
|
-
title: ReactNode;
|
|
62
|
-
/**
|
|
63
|
-
* Whether the title should be hidden. If `true`, the title will be visually hidden but still accessible to screen readers.
|
|
64
|
-
*
|
|
65
|
-
* If you're hiding the title to add a custom header, you may also want to hide the close button and render your own by using the `hideCloseButton` prop.
|
|
66
|
-
*
|
|
67
|
-
* @default false
|
|
68
|
-
*/
|
|
69
|
-
hideTitle?: boolean;
|
|
70
|
-
/**
|
|
71
|
-
* Whether the close button should be hidden. This will entirely remove the close button from the DOM, so you should provide your own way to close the dialog.
|
|
72
|
-
*
|
|
73
|
-
* @default false
|
|
74
|
-
*/
|
|
75
|
-
hideCloseButton?: boolean;
|
|
76
|
-
/**
|
|
77
|
-
* An optional area that will be rendered at the top of the Drawer next to the title. This is useful for adding actions to the Drawer. Recommended to use {@link Menu} for an action menu.
|
|
78
|
-
*/
|
|
79
|
-
additionalActions?: ReactNode;
|
|
80
|
-
/**
|
|
81
|
-
* The direction from which the Drawer will appear.
|
|
82
|
-
*/
|
|
83
|
-
from?: 'left' | 'right' | 'top' | 'bottom';
|
|
84
|
-
/**
|
|
85
|
-
* The size of the Drawer, either a preset or a valid {@link CSSLength} string.
|
|
86
|
-
*
|
|
87
|
-
* `default` is the default size (360px), with a margin until the screen hits 370px.
|
|
88
|
-
* `fullOnMobile` uses the default size (360px) until the mobile breakpoint (480px), where it then fills the viewport.
|
|
89
|
-
* `full` is the size of the viewport.
|
|
90
|
-
* `fullWithMargin` is the size of the viewport, minus the panel container's padding.
|
|
91
|
-
* `content` is the size of the Drawer's content.
|
|
92
|
-
*
|
|
93
|
-
* @see DrawerSizePresets
|
|
94
|
-
* @default 'default'
|
|
95
|
-
*/
|
|
96
|
-
size?: (typeof DrawerSizePresets)[number] | CSSLength;
|
|
97
|
-
/**
|
|
98
|
-
* An optional pagination state. If provided, each child of the Drawer will be rendered in its own page, and the Drawer will contain back and next buttons that will be used to navigate between pages.
|
|
99
|
-
*
|
|
100
|
-
* The state should be created using the {@link usePagination} hook and the entire state should be passed to the Drawer. For example:
|
|
101
|
-
* ```tsx
|
|
102
|
-
* const pagination = usePagination<['step1', 'step2', 'step3']>();
|
|
103
|
-
* // ...
|
|
104
|
-
* <Drawer pagination={pagination}>
|
|
105
|
-
* <DrawerPage id="step1">Step 1</DrawerPage>
|
|
106
|
-
* <DrawerPage id="step2">Step 2</DrawerPage>
|
|
107
|
-
* <DrawerPage id="step3">Step 3</DrawerPage>
|
|
108
|
-
* </Drawer>
|
|
109
|
-
*```
|
|
110
|
-
*
|
|
111
|
-
* @see {@link PaginationState} for more information on the pagination state and available methods
|
|
112
|
-
* @see {@link usePagination} for more information on how to create the pagination state
|
|
113
|
-
* @default false
|
|
114
|
-
*/
|
|
115
|
-
pagination?: PaginationState<T>;
|
|
116
|
-
/**
|
|
117
|
-
* The page transition animation style for paginated drawers.
|
|
118
|
-
*
|
|
119
|
-
* - `'none'` — instant page switch
|
|
120
|
-
* - `'crossfade'` — opacity crossfade between pages (default)
|
|
121
|
-
* - `'slide'` — direction-aware horizontal slide (Framer Motion)
|
|
122
|
-
*
|
|
123
|
-
* @default 'crossfade'
|
|
124
|
-
*/
|
|
125
|
-
pageTransition?: DrawerPageTransition;
|
|
126
|
-
/**
|
|
127
|
-
* Show a progress bar at the top of the bottom panel. Requires `pagination` to be set.
|
|
128
|
-
* The bar auto-fills based on the current page position.
|
|
129
|
-
*
|
|
130
|
-
* Pass `true` for defaults, or an object with `fill`, `track`, and `height` overrides.
|
|
131
|
-
*
|
|
132
|
-
* For explicit percentage control, use `<DrawerProgressBar value={75} />` directly instead.
|
|
133
|
-
*
|
|
134
|
-
* @default false
|
|
135
|
-
*/
|
|
136
|
-
progressBar?: boolean | DrawerProgressBarStyleProps;
|
|
137
|
-
/**
|
|
138
|
-
* Callback fired after the drawer's close animation completes.
|
|
139
|
-
* Use this to reset forms, clear state, and clean up without visual glitches.
|
|
140
|
-
*/
|
|
141
|
-
onAfterClose?: () => void;
|
|
142
|
-
/**
|
|
143
|
-
* The overlay style of the Drawer, either 'grey' or 'blur'.
|
|
144
|
-
*
|
|
145
|
-
* @default 'grey'
|
|
146
|
-
*/
|
|
147
|
-
overlayStyle?: 'grey' | 'blur';
|
|
148
|
-
/** The contents of the Drawer. */
|
|
149
|
-
children?: ReactNode | ReactNode[];
|
|
150
|
-
|
|
151
|
-
/** Prop overrides for other rendered elements. Overrides for the input itself should be passed directly to the component. */
|
|
152
|
-
overrides?: {
|
|
153
|
-
dialog?: ComponentPropsWithoutRef<'div'>;
|
|
154
|
-
overlay?: ComponentPropsWithoutRef<'div'>;
|
|
155
|
-
panelContainer?: ComponentPropsWithoutRef<'div'>;
|
|
156
|
-
panel?: ComponentPropsWithoutRef<'div'>;
|
|
157
|
-
titleBar?: ComponentPropsWithoutRef<'div'>;
|
|
158
|
-
titleArea?: ComponentPropsWithoutRef<'div'>;
|
|
159
|
-
titleBarButtons?: ComponentPropsWithoutRef<'div'>;
|
|
160
|
-
content?: ComponentPropsWithoutRef<'div'>;
|
|
161
|
-
contentChildren?: ComponentPropsWithoutRef<'div'>;
|
|
162
|
-
contentChildrenChildren?: ComponentPropsWithoutRef<'div'>;
|
|
163
|
-
bottomPanelSpacer?: ComponentPropsWithoutRef<'div'>;
|
|
164
|
-
bottomPanel?: ComponentPropsWithoutRef<'div'>;
|
|
165
|
-
bottomPanelContent?: ComponentPropsWithoutRef<'div'>;
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Drawers are panels that slide in from the edge of the screen to reveal additional content.
|
|
171
|
-
*
|
|
172
|
-
* <hr />
|
|
173
|
-
*
|
|
174
|
-
* To use this component, import it as follows:
|
|
175
|
-
*
|
|
176
|
-
* ```js
|
|
177
|
-
* import { Drawer } from 'paris/drawer';
|
|
178
|
-
* ```
|
|
179
|
-
* @constructor
|
|
180
|
-
*/
|
|
181
|
-
export const Drawer = <T extends string[] | readonly string[] = string[]>(props: DrawerProps<T>) => {
|
|
182
|
-
const { isOpen = false, onClose = () => {}, onAfterClose } = props;
|
|
183
|
-
|
|
184
|
-
const handleClose = useCallback(() => onClose(false), [onClose]);
|
|
185
|
-
|
|
186
|
-
const hasBeenOpen = useRef(false);
|
|
187
|
-
useEffect(() => {
|
|
188
|
-
if (isOpen) hasBeenOpen.current = true;
|
|
189
|
-
}, [isOpen]);
|
|
190
|
-
|
|
191
|
-
const handleAfterLeave = useCallback(() => {
|
|
192
|
-
if (hasBeenOpen.current) {
|
|
193
|
-
onAfterClose?.();
|
|
194
|
-
}
|
|
195
|
-
}, [onAfterClose]);
|
|
196
|
-
|
|
197
|
-
return (
|
|
198
|
-
// `appear` runs the enter transition on the very first mount. Without it,
|
|
199
|
-
// a Drawer that is conditionally rendered and mounts already-open (i.e. its
|
|
200
|
-
// first render has `show={true}`) snaps straight to the open state instead of
|
|
201
|
-
// animating in. Always-mounted Drawers mount with `show={false}`, so `appear`
|
|
202
|
-
// is a no-op for them — it only adds the (desired) enter animation for the
|
|
203
|
-
// mount-open case.
|
|
204
|
-
<Transition show={isOpen} appear afterLeave={handleAfterLeave}>
|
|
205
|
-
<Dialog
|
|
206
|
-
as="div"
|
|
207
|
-
className={clsx(styles.root, props.overrides?.dialog?.className)}
|
|
208
|
-
onClose={onClose}
|
|
209
|
-
{...props.overrides?.dialog}
|
|
210
|
-
role="dialog"
|
|
211
|
-
>
|
|
212
|
-
<DrawerProvider close={handleClose} isOpen={isOpen}>
|
|
213
|
-
<DrawerPaginationProvider pagination={props.pagination ?? null}>
|
|
214
|
-
<DrawerSlotProvider>
|
|
215
|
-
<DrawerInner {...props} />
|
|
216
|
-
</DrawerSlotProvider>
|
|
217
|
-
</DrawerPaginationProvider>
|
|
218
|
-
</DrawerProvider>
|
|
219
|
-
</Dialog>
|
|
220
|
-
</Transition>
|
|
221
|
-
);
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
/** Internal component that renders inside all providers so it can consume slot context. */
|
|
225
|
-
const DrawerInner = <T extends string[] | readonly string[] = string[]>({
|
|
226
|
-
onClose = () => {},
|
|
227
|
-
title,
|
|
228
|
-
hideTitle = false,
|
|
229
|
-
hideCloseButton = false,
|
|
230
|
-
from = 'right',
|
|
231
|
-
size = 'default',
|
|
232
|
-
pagination,
|
|
233
|
-
pageTransition = 'crossfade',
|
|
234
|
-
progressBar,
|
|
235
|
-
overlayStyle = 'grey',
|
|
236
|
-
additionalActions,
|
|
237
|
-
children,
|
|
238
|
-
overrides,
|
|
239
|
-
}: DrawerProps<T>) => {
|
|
240
|
-
const slotContext = useDrawerSlotContext();
|
|
241
|
-
|
|
242
|
-
const xAxisDrawer = from === 'left' || from === 'right';
|
|
243
|
-
const sizeIsPreset = (DrawerSizePresets as readonly string[]).includes(size);
|
|
244
|
-
const isPaginated = Boolean(pagination);
|
|
245
|
-
const hasAdditionalActions = Boolean(additionalActions);
|
|
246
|
-
|
|
247
|
-
const showBottomPanel = (slotContext?.hasAnyBottomPanelSlot ?? false) || (slotContext?.hasProgressBar ?? false);
|
|
248
|
-
|
|
249
|
-
// Sync spacer height with absolute-positioned bottom panel so content doesn't get clipped
|
|
250
|
-
const bottomPanelElRef = useRef<HTMLDivElement | null>(null);
|
|
251
|
-
const spacerRef = useRef<HTMLDivElement | null>(null);
|
|
252
|
-
const appendEntries = slotContext?.bottomPanelAppendEntries;
|
|
253
|
-
useEffect(() => {
|
|
254
|
-
if (!showBottomPanel) return;
|
|
255
|
-
const panel = bottomPanelElRef.current;
|
|
256
|
-
const spacer = spacerRef.current;
|
|
257
|
-
if (!panel || !spacer) return;
|
|
258
|
-
|
|
259
|
-
const update = () => {
|
|
260
|
-
spacer.style.height = `${panel.offsetHeight}px`;
|
|
261
|
-
};
|
|
262
|
-
update();
|
|
263
|
-
|
|
264
|
-
const observer = new ResizeObserver(update);
|
|
265
|
-
observer.observe(panel);
|
|
266
|
-
for (const child of panel.querySelectorAll<HTMLElement>('[data-slot-mode]')) {
|
|
267
|
-
observer.observe(child);
|
|
268
|
-
}
|
|
269
|
-
return () => observer.disconnect();
|
|
270
|
-
}, [showBottomPanel, appendEntries]);
|
|
271
|
-
|
|
272
|
-
const [loadedPage, setLoadedPage] = useState<string | null>(pagination?.currentPage ?? null);
|
|
273
|
-
|
|
274
|
-
const pageEntries = useMemo(() => {
|
|
275
|
-
if (!isPaginated || !pagination || !children) return null;
|
|
276
|
-
const childArray = Array.isArray(children) ? children : Children.toArray(children);
|
|
277
|
-
return childArray
|
|
278
|
-
.map((child) => ({ id: getChildPageID(child), child }))
|
|
279
|
-
.filter((entry): entry is { id: string; child: ReactNode } => entry.id !== null);
|
|
280
|
-
}, [isPaginated, pagination, children]);
|
|
281
|
-
|
|
282
|
-
const activePageIndex = pageEntries?.findIndex((p) => p.id === pagination?.currentPage) ?? -1;
|
|
283
|
-
|
|
284
|
-
const paginatedContent = useMemo(() => {
|
|
285
|
-
if (!pageEntries || !pagination) return null;
|
|
286
|
-
|
|
287
|
-
switch (pageTransition) {
|
|
288
|
-
case 'none':
|
|
289
|
-
return pageEntries.map((page) => {
|
|
290
|
-
const isActive = pagination.currentPage === page.id;
|
|
291
|
-
return (
|
|
292
|
-
<DrawerPageProvider key={page.id} isActive={isActive} pageID={page.id}>
|
|
293
|
-
<div
|
|
294
|
-
style={{ display: isActive ? undefined : 'none' }}
|
|
295
|
-
className={overrides?.contentChildrenChildren?.className}
|
|
296
|
-
>
|
|
297
|
-
{page.child}
|
|
298
|
-
</div>
|
|
299
|
-
</DrawerPageProvider>
|
|
300
|
-
);
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
case 'crossfade':
|
|
304
|
-
return pageEntries.map((page) => {
|
|
305
|
-
const isActive = pagination.currentPage === page.id && loadedPage === page.id;
|
|
306
|
-
return (
|
|
307
|
-
<DrawerPageProvider key={page.id} isActive={isActive} pageID={page.id}>
|
|
308
|
-
<Transition
|
|
309
|
-
show={isActive}
|
|
310
|
-
as="div"
|
|
311
|
-
enter={styles.paginationEnter}
|
|
312
|
-
enterFrom={styles.enterFromOpacity}
|
|
313
|
-
enterTo={styles.enterToOpacity}
|
|
314
|
-
leave={styles.paginationLeave}
|
|
315
|
-
leaveFrom={styles.leaveFromOpacity}
|
|
316
|
-
leaveTo={styles.leaveToOpacity}
|
|
317
|
-
afterLeave={() => setLoadedPage(pagination.currentPage)}
|
|
318
|
-
className={overrides?.contentChildrenChildren?.className}
|
|
319
|
-
>
|
|
320
|
-
{page.child}
|
|
321
|
-
</Transition>
|
|
322
|
-
</DrawerPageProvider>
|
|
323
|
-
);
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
case 'slide':
|
|
327
|
-
return (
|
|
328
|
-
<div className={clsx(styles.pageStack, styles.pageStackClip)}>
|
|
329
|
-
{pageEntries.map((page, i) => {
|
|
330
|
-
const isActive = pagination.currentPage === page.id;
|
|
331
|
-
const offset = (i - activePageIndex) * 100;
|
|
332
|
-
return (
|
|
333
|
-
<DrawerPageProvider key={page.id} isActive={isActive} pageID={page.id}>
|
|
334
|
-
<motion.div
|
|
335
|
-
initial={false}
|
|
336
|
-
animate={{ x: `${offset}%` }}
|
|
337
|
-
transition={{
|
|
338
|
-
type: 'tween',
|
|
339
|
-
duration: 0.3,
|
|
340
|
-
ease: [0.32, 0.72, 0, 1],
|
|
341
|
-
}}
|
|
342
|
-
className={clsx(
|
|
343
|
-
styles.pageStackItem,
|
|
344
|
-
overrides?.contentChildrenChildren?.className,
|
|
345
|
-
)}
|
|
346
|
-
data-active={isActive}
|
|
347
|
-
>
|
|
348
|
-
{page.child}
|
|
349
|
-
</motion.div>
|
|
350
|
-
</DrawerPageProvider>
|
|
351
|
-
);
|
|
352
|
-
})}
|
|
353
|
-
</div>
|
|
354
|
-
);
|
|
355
|
-
|
|
356
|
-
default: {
|
|
357
|
-
const _exhaustive: never = pageTransition;
|
|
358
|
-
return _exhaustive;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}, [
|
|
362
|
-
pageEntries,
|
|
363
|
-
pagination,
|
|
364
|
-
pageTransition,
|
|
365
|
-
loadedPage,
|
|
366
|
-
activePageIndex,
|
|
367
|
-
overrides?.contentChildrenChildren?.className,
|
|
368
|
-
]);
|
|
369
|
-
|
|
370
|
-
/** Non-page children (e.g. Drawer-level DrawerBottomPanel) that should render alongside paginated content. */
|
|
371
|
-
const nonPageChildren = useMemo(() => {
|
|
372
|
-
if (!isPaginated || !children) return null;
|
|
373
|
-
const childArray = Array.isArray(children) ? children : Children.toArray(children);
|
|
374
|
-
return childArray.filter((child) => getChildPageID(child) === null);
|
|
375
|
-
}, [isPaginated, children]);
|
|
376
|
-
|
|
377
|
-
return (
|
|
378
|
-
<>
|
|
379
|
-
<div
|
|
380
|
-
className={clsx(
|
|
381
|
-
overlayStyle === 'blur' && styles.overlayBlurContainer,
|
|
382
|
-
overlayStyle === 'grey' && styles.overlayGreyContainer,
|
|
383
|
-
overrides?.overlay?.className,
|
|
384
|
-
)}
|
|
385
|
-
>
|
|
386
|
-
<TransitionChild
|
|
387
|
-
enter={styles.enter}
|
|
388
|
-
enterFrom={styles.enterFrom}
|
|
389
|
-
enterTo={styles.enterTo}
|
|
390
|
-
leave={styles.leave}
|
|
391
|
-
leaveFrom={styles.leaveFrom}
|
|
392
|
-
leaveTo={styles.leaveTo}
|
|
393
|
-
>
|
|
394
|
-
<div
|
|
395
|
-
className={clsx(
|
|
396
|
-
styles.overlay,
|
|
397
|
-
overlayStyle === 'blur' && styles.overlayBlur,
|
|
398
|
-
overlayStyle === 'grey' && styles.overlayGrey,
|
|
399
|
-
)}
|
|
400
|
-
/>
|
|
401
|
-
</TransitionChild>
|
|
402
|
-
</div>
|
|
403
|
-
|
|
404
|
-
<div
|
|
405
|
-
className={clsx(
|
|
406
|
-
styles.panelContainer,
|
|
407
|
-
styles[`from-${from}`],
|
|
408
|
-
{ [styles[`size-${size}`]]: sizeIsPreset },
|
|
409
|
-
overrides?.panelContainer?.className,
|
|
410
|
-
)}
|
|
411
|
-
style={
|
|
412
|
-
!sizeIsPreset
|
|
413
|
-
? {
|
|
414
|
-
[xAxisDrawer ? 'width' : 'height']: size,
|
|
415
|
-
...overrides?.panelContainer?.style,
|
|
416
|
-
}
|
|
417
|
-
: overrides?.panelContainer?.style
|
|
418
|
-
}
|
|
419
|
-
{...overrides?.panelContainer}
|
|
420
|
-
>
|
|
421
|
-
<TransitionChild
|
|
422
|
-
enter={styles.enter}
|
|
423
|
-
enterFrom={styles.enterFrom}
|
|
424
|
-
enterTo={styles.enterTo}
|
|
425
|
-
leave={styles.leave}
|
|
426
|
-
leaveFrom={styles.leaveFrom}
|
|
427
|
-
leaveTo={styles.leaveTo}
|
|
428
|
-
>
|
|
429
|
-
<DialogPanel className={clsx(styles.panel, styles[`from-${from}`], overrides?.panel?.className)}>
|
|
430
|
-
{/* Dialog title bar */}
|
|
431
|
-
<div className={clsx(styles.titleBar, overrides?.titleBar?.className)}>
|
|
432
|
-
<div className={clsx(styles.titleArea, overrides?.titleArea?.className)}>
|
|
433
|
-
<RemoveFromDOM when={!isPaginated}>
|
|
434
|
-
<div className={clsx(styles.paginationButtons)}>
|
|
435
|
-
<Button
|
|
436
|
-
className={clsx(styles.navButton)}
|
|
437
|
-
size="medium"
|
|
438
|
-
kind="tertiary"
|
|
439
|
-
shape="circle"
|
|
440
|
-
onClick={() => pagination?.back()}
|
|
441
|
-
disabled={!pagination?.canGoBack()}
|
|
442
|
-
startEnhancer={<Icon icon={ChevronLeft} size={16} />}
|
|
443
|
-
>
|
|
444
|
-
Go to previous page in this drawer
|
|
445
|
-
</Button>
|
|
446
|
-
<Button
|
|
447
|
-
className={clsx(styles.navButton)}
|
|
448
|
-
size="medium"
|
|
449
|
-
kind="tertiary"
|
|
450
|
-
shape="circle"
|
|
451
|
-
onClick={() => pagination?.forward()}
|
|
452
|
-
disabled={!pagination?.canGoForward()}
|
|
453
|
-
startEnhancer={<Icon icon={ChevronRight} size={16} />}
|
|
454
|
-
>
|
|
455
|
-
Go to next page in this drawer
|
|
456
|
-
</Button>
|
|
457
|
-
</div>
|
|
458
|
-
</RemoveFromDOM>
|
|
459
|
-
{slotContext && <div ref={slotContext.titleRef} />}
|
|
460
|
-
<VisuallyHidden when={hideTitle || (slotContext?.hasTitleSlot ?? false)}>
|
|
461
|
-
<DialogTitle as="h2" className={styles.titleTextContainer}>
|
|
462
|
-
<TextWhenString kind="paragraphSmall" weight="medium">
|
|
463
|
-
{title}
|
|
464
|
-
</TextWhenString>
|
|
465
|
-
</DialogTitle>
|
|
466
|
-
</VisuallyHidden>
|
|
467
|
-
</div>
|
|
468
|
-
<div className={clsx(styles.titleBarButtons, overrides?.titleBarButtons?.className)}>
|
|
469
|
-
{slotContext && <div ref={slotContext.actionsRef} />}
|
|
470
|
-
{!slotContext?.hasActionsSlot && (
|
|
471
|
-
<RemoveFromDOM when={!hasAdditionalActions}>{additionalActions}</RemoveFromDOM>
|
|
472
|
-
)}
|
|
473
|
-
|
|
474
|
-
{/* Close button */}
|
|
475
|
-
<RemoveFromDOM when={hideCloseButton}>
|
|
476
|
-
<Button
|
|
477
|
-
kind="tertiary"
|
|
478
|
-
shape="circle"
|
|
479
|
-
onClick={() => onClose(false)}
|
|
480
|
-
startEnhancer={<Icon icon={Close} size={20} />}
|
|
481
|
-
data-title-hidden={hideTitle}
|
|
482
|
-
className={clsx(styles.closeButton)}
|
|
483
|
-
>
|
|
484
|
-
Close drawer
|
|
485
|
-
</Button>
|
|
486
|
-
</RemoveFromDOM>
|
|
487
|
-
</div>
|
|
488
|
-
</div>
|
|
489
|
-
|
|
490
|
-
<div className={clsx(styles.content, overrides?.content?.className)}>
|
|
491
|
-
<div className={clsx(styles.contentChildren, overrides?.contentChildren?.className)}>
|
|
492
|
-
{isPaginated ? (
|
|
493
|
-
<>
|
|
494
|
-
{paginatedContent}
|
|
495
|
-
{nonPageChildren}
|
|
496
|
-
{progressBar && pageEntries && (
|
|
497
|
-
<DrawerProgressBar
|
|
498
|
-
steps={pageEntries.map((p) => p.id)}
|
|
499
|
-
{...(typeof progressBar === 'object' ? progressBar : undefined)}
|
|
500
|
-
/>
|
|
501
|
-
)}
|
|
502
|
-
</>
|
|
503
|
-
) : (
|
|
504
|
-
children
|
|
505
|
-
)}
|
|
506
|
-
</div>
|
|
507
|
-
{showBottomPanel && (
|
|
508
|
-
<>
|
|
509
|
-
<div
|
|
510
|
-
ref={spacerRef}
|
|
511
|
-
tabIndex={-1}
|
|
512
|
-
aria-hidden="true"
|
|
513
|
-
className={clsx(
|
|
514
|
-
styles.bottomPanelSpacer,
|
|
515
|
-
overrides?.bottomPanelSpacer?.className,
|
|
516
|
-
)}
|
|
517
|
-
/>
|
|
518
|
-
<div
|
|
519
|
-
ref={bottomPanelElRef}
|
|
520
|
-
className={clsx(styles.bottomPanel, overrides?.bottomPanel?.className)}
|
|
521
|
-
>
|
|
522
|
-
{slotContext && <div ref={slotContext.progressBarRef} />}
|
|
523
|
-
<div className={styles.glassOpacity} />
|
|
524
|
-
<div className={styles.glassBlend} />
|
|
525
|
-
<div
|
|
526
|
-
className={clsx(
|
|
527
|
-
styles.bottomPanelContent,
|
|
528
|
-
styles.noPadding,
|
|
529
|
-
overrides?.bottomPanelContent?.className,
|
|
530
|
-
)}
|
|
531
|
-
>
|
|
532
|
-
{slotContext && (
|
|
533
|
-
<div
|
|
534
|
-
ref={slotContext.bottomPanelCallbackRef}
|
|
535
|
-
className={styles.bottomPanelSlots}
|
|
536
|
-
/>
|
|
537
|
-
)}
|
|
538
|
-
</div>
|
|
539
|
-
</div>
|
|
540
|
-
</>
|
|
541
|
-
)}
|
|
542
|
-
</div>
|
|
543
|
-
</DialogPanel>
|
|
544
|
-
</TransitionChild>
|
|
545
|
-
</div>
|
|
546
|
-
</>
|
|
547
|
-
);
|
|
548
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { type ReactNode, useId, useLayoutEffect } from 'react';
|
|
4
|
-
import { createPortal } from 'react-dom';
|
|
5
|
-
import { useIsPageActive } from './DrawerPageContext';
|
|
6
|
-
import { useDrawerSlotContext } from './DrawerSlotContext';
|
|
7
|
-
|
|
8
|
-
export type DrawerActionsProps = {
|
|
9
|
-
children: ReactNode;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const DrawerActions = ({ children }: DrawerActionsProps) => {
|
|
13
|
-
const isActive = useIsPageActive();
|
|
14
|
-
const slotContext = useDrawerSlotContext();
|
|
15
|
-
const id = useId();
|
|
16
|
-
|
|
17
|
-
useLayoutEffect(() => {
|
|
18
|
-
if (!isActive || !slotContext) return;
|
|
19
|
-
const unregister = slotContext.registerActionsSlot();
|
|
20
|
-
return unregister;
|
|
21
|
-
}, [isActive, slotContext]);
|
|
22
|
-
|
|
23
|
-
if (!isActive || !slotContext?.actionsRef.current) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return createPortal(children, slotContext.actionsRef.current, id);
|
|
28
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { clsx } from 'clsx';
|
|
4
|
-
import { type ComponentPropsWithoutRef, type ReactNode, useId, useLayoutEffect } from 'react';
|
|
5
|
-
import { createPortal } from 'react-dom';
|
|
6
|
-
import styles from './Drawer.module.scss';
|
|
7
|
-
import { useIsPageActive } from './DrawerPageContext';
|
|
8
|
-
import { useDrawerSlotContext } from './DrawerSlotContext';
|
|
9
|
-
|
|
10
|
-
export type DrawerBottomPanelProps = ComponentPropsWithoutRef<'div'> & {
|
|
11
|
-
children: ReactNode;
|
|
12
|
-
/** 'replace' fully replaces the base bottomPanel. 'append' renders after the base. @default 'replace' */
|
|
13
|
-
mode?: 'replace' | 'append';
|
|
14
|
-
/** Render order for append mode. Lower = higher up. @default 0 */
|
|
15
|
-
priority?: number;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export const DrawerBottomPanel = ({
|
|
19
|
-
children,
|
|
20
|
-
className,
|
|
21
|
-
mode = 'replace',
|
|
22
|
-
priority = 0,
|
|
23
|
-
style,
|
|
24
|
-
...rest
|
|
25
|
-
}: DrawerBottomPanelProps) => {
|
|
26
|
-
const isActive = useIsPageActive();
|
|
27
|
-
const slotContext = useDrawerSlotContext();
|
|
28
|
-
const id = useId();
|
|
29
|
-
|
|
30
|
-
const registerBottomPanel = slotContext?.registerBottomPanel;
|
|
31
|
-
|
|
32
|
-
useLayoutEffect(() => {
|
|
33
|
-
if (!isActive || !registerBottomPanel) return;
|
|
34
|
-
const unregister = registerBottomPanel({ id, mode, priority });
|
|
35
|
-
return unregister;
|
|
36
|
-
}, [isActive, registerBottomPanel, id, mode, priority]);
|
|
37
|
-
|
|
38
|
-
if (!isActive || !slotContext?.isBottomPanelMounted || !slotContext.bottomPanelRef.current) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return createPortal(
|
|
43
|
-
<div
|
|
44
|
-
data-slot-mode={mode}
|
|
45
|
-
data-slot-priority={priority}
|
|
46
|
-
className={clsx(styles.bottomPanelSlotItem, className)}
|
|
47
|
-
style={{ order: priority, ...style }}
|
|
48
|
-
{...rest}
|
|
49
|
-
>
|
|
50
|
-
{children}
|
|
51
|
-
</div>,
|
|
52
|
-
slotContext.bottomPanelRef.current,
|
|
53
|
-
`${id}-${priority}`,
|
|
54
|
-
);
|
|
55
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { createContext, type ReactNode, useContext, useMemo } from 'react';
|
|
4
|
-
|
|
5
|
-
export type DrawerContextValue = {
|
|
6
|
-
close: () => void;
|
|
7
|
-
isOpen: boolean;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const DrawerContext = createContext<DrawerContextValue | null>(null);
|
|
11
|
-
|
|
12
|
-
export function useDrawer(): DrawerContextValue {
|
|
13
|
-
const context = useContext(DrawerContext);
|
|
14
|
-
if (!context) {
|
|
15
|
-
throw new Error('useDrawer must be used within a Drawer component');
|
|
16
|
-
}
|
|
17
|
-
return context;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function DrawerProvider({
|
|
21
|
-
close,
|
|
22
|
-
isOpen,
|
|
23
|
-
children,
|
|
24
|
-
}: {
|
|
25
|
-
close: () => void;
|
|
26
|
-
isOpen: boolean;
|
|
27
|
-
children: ReactNode;
|
|
28
|
-
}) {
|
|
29
|
-
const value = useMemo(() => ({ close, isOpen }), [close, isOpen]);
|
|
30
|
-
return <DrawerContext.Provider value={value}>{children}</DrawerContext.Provider>;
|
|
31
|
-
}
|