paris 0.23.1 → 0.24.1
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 +26 -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.css +130 -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.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.css +106 -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.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.css +7 -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.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.css +137 -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.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.css +35 -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.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.css +39 -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.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.css +77 -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.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.css +155 -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.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.css +63 -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.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.css +185 -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.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.css +406 -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.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.css +22 -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.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.css +165 -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.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.css +301 -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.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.css +24 -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.scss.js +11 -0
- package/dist/stories/markdowneditor/FixedToolbar.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/FloatingToolbar.css +18 -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.scss.js +9 -0
- package/dist/stories/markdowneditor/FloatingToolbar.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/LinkPopover.css +113 -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.scss.js +21 -0
- package/dist/stories/markdowneditor/LinkPopover.module.scss.js.map +1 -0
- package/dist/stories/markdowneditor/MarkdownEditor.css +325 -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.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.css +30 -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.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.css +59 -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.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.css +20 -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.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.css +236 -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.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.css +10 -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.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.css +60 -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.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.css +144 -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.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.css +164 -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.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.css +54 -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.scss.js +19 -0
- package/dist/stories/text/Text.module.scss.js.map +1 -0
- package/{src/stories/text/Typography.module.css → dist/stories/text/Typography.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.css +22 -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.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/dist/stories/toast/Toast.css +17 -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.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
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import './Drawer.css';const root = "paris_root_wVedw";
|
|
2
|
+
const overlay = "paris_overlay_WN57R";
|
|
3
|
+
const overlayBlur = "paris_overlayBlur_W12Sf";
|
|
4
|
+
const overlayGrey = "paris_overlayGrey_q3bTn";
|
|
5
|
+
const overlayBlurContainer = "paris_overlayBlurContainer_cSgvI";
|
|
6
|
+
const enterFrom = "paris_enterFrom_zr3n4";
|
|
7
|
+
const enterTo = "paris_enterTo_GrF2Z";
|
|
8
|
+
const leave = "paris_leave_w8FN3";
|
|
9
|
+
const leaveFrom = "paris_leaveFrom_YtyIZ";
|
|
10
|
+
const leaveTo = "paris_leaveTo_9QQtj";
|
|
11
|
+
const overlayGreyContainer = "paris_overlayGreyContainer_CXgCA";
|
|
12
|
+
const panelContainer = "paris_panelContainer_APxfS";
|
|
13
|
+
const enter = "paris_enter_WSNrL";
|
|
14
|
+
const panel = "paris_panel_TfIuG";
|
|
15
|
+
const titleTextContainer = "paris_titleTextContainer_vxVpU";
|
|
16
|
+
const titleBar = "paris_titleBar_SMIdo";
|
|
17
|
+
const titleBarButtons = "paris_titleBarButtons_0oNpU";
|
|
18
|
+
const content = "paris_content_NRQ-q";
|
|
19
|
+
const contentChildren = "paris_contentChildren_3gvnu";
|
|
20
|
+
const paginationButtons = "paris_paginationButtons_9T8xu";
|
|
21
|
+
const navButton = "paris_navButton_2bjrt";
|
|
22
|
+
const titleArea = "paris_titleArea_q2SWc";
|
|
23
|
+
const enterFromOpacity = "paris_enterFromOpacity_ddD5x";
|
|
24
|
+
const enterToOpacity = "paris_enterToOpacity_JKJ7T";
|
|
25
|
+
const leaveFromOpacity = "paris_leaveFromOpacity_xAfhm";
|
|
26
|
+
const leaveToOpacity = "paris_leaveToOpacity_-gHpF";
|
|
27
|
+
const paginationEnter = "paris_paginationEnter_DT9JT";
|
|
28
|
+
const paginationLeave = "paris_paginationLeave_OR93X";
|
|
29
|
+
const pageStack = "paris_pageStack_s7fPJ";
|
|
30
|
+
const pageStackClip = "paris_pageStackClip_DQKZW";
|
|
31
|
+
const pageStackItem = "paris_pageStackItem_n8m9c";
|
|
32
|
+
const progressBar = "paris_progressBar_3-iya";
|
|
33
|
+
const progressBarFill = "paris_progressBarFill_QAxRP";
|
|
34
|
+
const bottomPanel = "paris_bottomPanel_g3-TO";
|
|
35
|
+
const bottomPanelSlots = "paris_bottomPanelSlots_aLf1H";
|
|
36
|
+
const bottomPanelContent = "paris_bottomPanelContent_dfSgU";
|
|
37
|
+
const noPadding = "paris_noPadding_fr4a4";
|
|
38
|
+
const bottomPanelSlotItem = "paris_bottomPanelSlotItem_fEB43";
|
|
39
|
+
const bottomPanelSpacer = "paris_bottomPanelSpacer_bBinW";
|
|
40
|
+
const glassBlend = "paris_glassBlend_5DeJV";
|
|
41
|
+
const glassOpacity = "paris_glassOpacity_flxn1";
|
|
42
|
+
const styles = {
|
|
43
|
+
root: root,
|
|
44
|
+
overlay: overlay,
|
|
45
|
+
overlayBlur: overlayBlur,
|
|
46
|
+
overlayGrey: overlayGrey,
|
|
47
|
+
overlayBlurContainer: overlayBlurContainer,
|
|
48
|
+
enterFrom: enterFrom,
|
|
49
|
+
enterTo: enterTo,
|
|
50
|
+
leave: leave,
|
|
51
|
+
leaveFrom: leaveFrom,
|
|
52
|
+
leaveTo: leaveTo,
|
|
53
|
+
overlayGreyContainer: overlayGreyContainer,
|
|
54
|
+
panelContainer: panelContainer,
|
|
55
|
+
enter: enter,
|
|
56
|
+
"from-right": "paris_from-right_2gsEu",
|
|
57
|
+
"size-content": "paris_size-content_-2Lgk",
|
|
58
|
+
"size-fullWithMargin": "paris_size-fullWithMargin_fcu9t",
|
|
59
|
+
"size-default": "paris_size-default_1Q1At",
|
|
60
|
+
"size-fullOnMobile": "paris_size-fullOnMobile_G97hn",
|
|
61
|
+
"from-left": "paris_from-left_1gDXg",
|
|
62
|
+
"size-full": "paris_size-full_Vltmt",
|
|
63
|
+
"from-top": "paris_from-top_-Vc82",
|
|
64
|
+
"from-bottom": "paris_from-bottom_G1MLu",
|
|
65
|
+
panel: panel,
|
|
66
|
+
titleTextContainer: titleTextContainer,
|
|
67
|
+
titleBar: titleBar,
|
|
68
|
+
titleBarButtons: titleBarButtons,
|
|
69
|
+
content: content,
|
|
70
|
+
contentChildren: contentChildren,
|
|
71
|
+
paginationButtons: paginationButtons,
|
|
72
|
+
navButton: navButton,
|
|
73
|
+
titleArea: titleArea,
|
|
74
|
+
enterFromOpacity: enterFromOpacity,
|
|
75
|
+
enterToOpacity: enterToOpacity,
|
|
76
|
+
leaveFromOpacity: leaveFromOpacity,
|
|
77
|
+
leaveToOpacity: leaveToOpacity,
|
|
78
|
+
paginationEnter: paginationEnter,
|
|
79
|
+
paginationLeave: paginationLeave,
|
|
80
|
+
pageStack: pageStack,
|
|
81
|
+
pageStackClip: pageStackClip,
|
|
82
|
+
pageStackItem: pageStackItem,
|
|
83
|
+
progressBar: progressBar,
|
|
84
|
+
progressBarFill: progressBarFill,
|
|
85
|
+
bottomPanel: bottomPanel,
|
|
86
|
+
bottomPanelSlots: bottomPanelSlots,
|
|
87
|
+
bottomPanelContent: bottomPanelContent,
|
|
88
|
+
noPadding: noPadding,
|
|
89
|
+
bottomPanelSlotItem: bottomPanelSlotItem,
|
|
90
|
+
bottomPanelSpacer: bottomPanelSpacer,
|
|
91
|
+
glassBlend: glassBlend,
|
|
92
|
+
glassOpacity: glassOpacity
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { bottomPanel, bottomPanelContent, bottomPanelSlotItem, bottomPanelSlots, bottomPanelSpacer, content, contentChildren, styles as default, enter, enterFrom, enterFromOpacity, enterTo, enterToOpacity, glassBlend, glassOpacity, leave, leaveFrom, leaveFromOpacity, leaveTo, leaveToOpacity, navButton, noPadding, overlay, overlayBlur, overlayBlurContainer, overlayGrey, overlayGreyContainer, pageStack, pageStackClip, pageStackItem, paginationButtons, paginationEnter, paginationLeave, panel, panelContainer, progressBar, progressBarFill, root, titleArea, titleBar, titleBarButtons, titleTextContainer };
|
|
96
|
+
//# sourceMappingURL=Drawer.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useId, useLayoutEffect } from 'react';
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
import { useIsPageActive } from './DrawerPageContext.js';
|
|
5
|
+
import { useDrawerSlotContext } from './DrawerSlotContext.js';
|
|
6
|
+
|
|
7
|
+
const DrawerActions = ({ children }) => {
|
|
8
|
+
const isActive = useIsPageActive();
|
|
9
|
+
const slotContext = useDrawerSlotContext();
|
|
10
|
+
const id = useId();
|
|
11
|
+
useLayoutEffect(() => {
|
|
12
|
+
if (!isActive || !slotContext) return;
|
|
13
|
+
const unregister = slotContext.registerActionsSlot();
|
|
14
|
+
return unregister;
|
|
15
|
+
}, [isActive, slotContext]);
|
|
16
|
+
if (!isActive || !slotContext?.actionsRef.current) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return createPortal(children, slotContext.actionsRef.current, id);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { DrawerActions };
|
|
23
|
+
//# sourceMappingURL=DrawerActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerActions.js","sources":["../../../src/stories/drawer/DrawerActions.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useId, useLayoutEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useIsPageActive } from './DrawerPageContext';\nimport { useDrawerSlotContext } from './DrawerSlotContext';\n\nexport type DrawerActionsProps = {\n children: ReactNode;\n};\n\nexport const DrawerActions = ({ children }: DrawerActionsProps) => {\n const isActive = useIsPageActive();\n const slotContext = useDrawerSlotContext();\n const id = useId();\n\n useLayoutEffect(() => {\n if (!isActive || !slotContext) return;\n const unregister = slotContext.registerActionsSlot();\n return unregister;\n }, [isActive, slotContext]);\n\n if (!isActive || !slotContext?.actionsRef.current) {\n return null;\n }\n\n return createPortal(children, slotContext.actionsRef.current, id);\n};\n"],"names":[],"mappings":";;;;;;AAWO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,aAAA,CAAA,CAAA,CAAgB,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAA0B;AAC/D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB;AACjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB;AACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,IAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM;AAEjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM;AAClB,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,WAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,mBAAA,CAAA,CAAoB;AACnD,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACX,CAAA,CAAA,CAAG,CAAC,QAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA;AAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,WAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS;AAC/C,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACX;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAA,CAAE,CAAA;AACpE,CAAA;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
export type DrawerBottomPanelProps = ComponentPropsWithoutRef<'div'> & {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
/** 'replace' fully replaces the base bottomPanel. 'append' renders after the base. @default 'replace' */
|
|
5
|
+
mode?: 'replace' | 'append';
|
|
6
|
+
/** Render order for append mode. Lower = higher up. @default 0 */
|
|
7
|
+
priority?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const DrawerBottomPanel: ({ children, className, mode, priority, style, ...rest }: DrawerBottomPanelProps) => import('react').ReactPortal | null;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { useId, useLayoutEffect } from 'react';
|
|
5
|
+
import { createPortal } from 'react-dom';
|
|
6
|
+
import styles from './Drawer.module.scss.js';
|
|
7
|
+
import { useIsPageActive } from './DrawerPageContext.js';
|
|
8
|
+
import { useDrawerSlotContext } from './DrawerSlotContext.js';
|
|
9
|
+
|
|
10
|
+
const DrawerBottomPanel = ({
|
|
11
|
+
children,
|
|
12
|
+
className,
|
|
13
|
+
mode = "replace",
|
|
14
|
+
priority = 0,
|
|
15
|
+
style,
|
|
16
|
+
...rest
|
|
17
|
+
}) => {
|
|
18
|
+
const isActive = useIsPageActive();
|
|
19
|
+
const slotContext = useDrawerSlotContext();
|
|
20
|
+
const id = useId();
|
|
21
|
+
const registerBottomPanel = slotContext?.registerBottomPanel;
|
|
22
|
+
useLayoutEffect(() => {
|
|
23
|
+
if (!isActive || !registerBottomPanel) return;
|
|
24
|
+
const unregister = registerBottomPanel({ id, mode, priority });
|
|
25
|
+
return unregister;
|
|
26
|
+
}, [isActive, registerBottomPanel, id, mode, priority]);
|
|
27
|
+
if (!isActive || !slotContext?.isBottomPanelMounted || !slotContext.bottomPanelRef.current) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return createPortal(
|
|
31
|
+
/* @__PURE__ */ jsx(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
"data-slot-mode": mode,
|
|
35
|
+
"data-slot-priority": priority,
|
|
36
|
+
className: clsx(styles.bottomPanelSlotItem, className),
|
|
37
|
+
style: { order: priority, ...style },
|
|
38
|
+
...rest,
|
|
39
|
+
children
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
slotContext.bottomPanelRef.current,
|
|
43
|
+
`${id}-${priority}`
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { DrawerBottomPanel };
|
|
48
|
+
//# sourceMappingURL=DrawerBottomPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerBottomPanel.js","sources":["../../../src/stories/drawer/DrawerBottomPanel.tsx"],"sourcesContent":["'use client';\n\nimport { clsx } from 'clsx';\nimport { type ComponentPropsWithoutRef, type ReactNode, useId, useLayoutEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport styles from './Drawer.module.scss';\nimport { useIsPageActive } from './DrawerPageContext';\nimport { useDrawerSlotContext } from './DrawerSlotContext';\n\nexport type DrawerBottomPanelProps = ComponentPropsWithoutRef<'div'> & {\n children: ReactNode;\n /** 'replace' fully replaces the base bottomPanel. 'append' renders after the base. @default 'replace' */\n mode?: 'replace' | 'append';\n /** Render order for append mode. Lower = higher up. @default 0 */\n priority?: number;\n};\n\nexport const DrawerBottomPanel = ({\n children,\n className,\n mode = 'replace',\n priority = 0,\n style,\n ...rest\n}: DrawerBottomPanelProps) => {\n const isActive = useIsPageActive();\n const slotContext = useDrawerSlotContext();\n const id = useId();\n\n const registerBottomPanel = slotContext?.registerBottomPanel;\n\n useLayoutEffect(() => {\n if (!isActive || !registerBottomPanel) return;\n const unregister = registerBottomPanel({ id, mode, priority });\n return unregister;\n }, [isActive, registerBottomPanel, id, mode, priority]);\n\n if (!isActive || !slotContext?.isBottomPanelMounted || !slotContext.bottomPanelRef.current) {\n return null;\n }\n\n return createPortal(\n <div\n data-slot-mode={mode}\n data-slot-priority={priority}\n className={clsx(styles.bottomPanelSlotItem, className)}\n style={{ order: priority, ...style }}\n {...rest}\n >\n {children}\n </div>,\n slotContext.bottomPanelRef.current,\n `${id}-${priority}`,\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type DrawerContextValue = {
|
|
3
|
+
close: () => void;
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function useDrawer(): DrawerContextValue;
|
|
7
|
+
export declare function DrawerProvider({ close, isOpen, children, }: {
|
|
8
|
+
close: () => void;
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useContext, useMemo, createContext } from 'react';
|
|
4
|
+
|
|
5
|
+
const DrawerContext = createContext(null);
|
|
6
|
+
function useDrawer() {
|
|
7
|
+
const context = useContext(DrawerContext);
|
|
8
|
+
if (!context) {
|
|
9
|
+
throw new Error("useDrawer must be used within a Drawer component");
|
|
10
|
+
}
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
function DrawerProvider({
|
|
14
|
+
close,
|
|
15
|
+
isOpen,
|
|
16
|
+
children
|
|
17
|
+
}) {
|
|
18
|
+
const value = useMemo(() => ({ close, isOpen }), [close, isOpen]);
|
|
19
|
+
return /* @__PURE__ */ jsx(DrawerContext.Provider, { value, children });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { DrawerProvider, useDrawer };
|
|
23
|
+
//# sourceMappingURL=DrawerContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerContext.js","sources":["../../../src/stories/drawer/DrawerContext.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\n\nexport type DrawerContextValue = {\n close: () => void;\n isOpen: boolean;\n};\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nexport function useDrawer(): DrawerContextValue {\n const context = useContext(DrawerContext);\n if (!context) {\n throw new Error('useDrawer must be used within a Drawer component');\n }\n return context;\n}\n\nexport function DrawerProvider({\n close,\n isOpen,\n children,\n}: {\n close: () => void;\n isOpen: boolean;\n children: ReactNode;\n}) {\n const value = useMemo(() => ({ close, isOpen }), [close, isOpen]);\n return <DrawerContext.Provider value={value}>{children}</DrawerContext.Provider>;\n}\n"],"names":[],"mappings":";;;;AASA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyC,IAAI,CAAA;AAE5D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,SAAA,CAAA,CAAA,CAAgC;AAC5C,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,aAAa,CAAA;AACxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,EAAM,kDAAkD,CAAA;AAAA,CAAA,CACtE;AACA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACX;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,cAAA,CAAe;AAAA,CAAA,CAC3B,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAIG;AACC,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAI,CAAC,KAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAChE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAd,CAAA,CAAuB,CAAA,CAAA,CAAA,CAAA,GAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA;AAC3D;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type DrawerPageProps<TPageID extends string = string> = {
|
|
3
|
+
/** Unique identifier for this page. Must match a pagination page ID. */
|
|
4
|
+
id: TPageID;
|
|
5
|
+
/** Defer first mount until page becomes active. Once mounted, stays mounted. */
|
|
6
|
+
lazy?: boolean;
|
|
7
|
+
/** Page content. */
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export declare const DrawerPage: <TPageID extends string = string>({ lazy, children }: DrawerPageProps<TPageID>) => import("react/jsx-runtime").JSX.Element | null;
|
|
11
|
+
/** Type guard to check if a React element is a DrawerPage */
|
|
12
|
+
export declare const isDrawerPageElement: (element: unknown) => element is React.ReactElement<DrawerPageProps>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
import { useIsPageActive } from './DrawerPageContext.js';
|
|
5
|
+
|
|
6
|
+
const DrawerPage = ({ lazy = false, children }) => {
|
|
7
|
+
const isActive = useIsPageActive();
|
|
8
|
+
const [hasBeenActive, setHasBeenActive] = useState(isActive);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (isActive && !hasBeenActive) {
|
|
11
|
+
setHasBeenActive(true);
|
|
12
|
+
}
|
|
13
|
+
}, [isActive, hasBeenActive]);
|
|
14
|
+
if (lazy && !hasBeenActive) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
18
|
+
};
|
|
19
|
+
const isDrawerPageElement = (element) => element != null && typeof element === "object" && "type" in element && element.type === DrawerPage;
|
|
20
|
+
|
|
21
|
+
export { DrawerPage, isDrawerPageElement };
|
|
22
|
+
//# sourceMappingURL=DrawerPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerPage.js","sources":["../../../src/stories/drawer/DrawerPage.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useEffect, useState } from 'react';\nimport { useIsPageActive } from './DrawerPageContext';\n\nexport type DrawerPageProps<TPageID extends string = string> = {\n /** Unique identifier for this page. Must match a pagination page ID. */\n id: TPageID;\n /** Defer first mount until page becomes active. Once mounted, stays mounted. */\n lazy?: boolean;\n /** Page content. */\n children: ReactNode;\n};\n\nexport const DrawerPage = <TPageID extends string = string>({ lazy = false, children }: DrawerPageProps<TPageID>) => {\n const isActive = useIsPageActive();\n const [hasBeenActive, setHasBeenActive] = useState(isActive);\n\n useEffect(() => {\n if (isActive && !hasBeenActive) {\n setHasBeenActive(true);\n }\n }, [isActive, hasBeenActive]);\n\n if (lazy && !hasBeenActive) {\n return null;\n }\n\n return <>{children}</>;\n};\n\n/** Type guard to check if a React element is a DrawerPage */\nexport const isDrawerPageElement = (element: unknown): element is React.ReactElement<DrawerPageProps> =>\n element != null &&\n typeof element === 'object' &&\n 'type' in element &&\n (element as { type: unknown }).type === DrawerPage;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type DrawerPageContextValue = {
|
|
3
|
+
isActive: boolean;
|
|
4
|
+
pageID: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function useDrawerPageContext(): DrawerPageContextValue | null;
|
|
7
|
+
export declare function useIsPageActive(): boolean;
|
|
8
|
+
export declare function DrawerPageProvider({ isActive, pageID, children, }: {
|
|
9
|
+
isActive: boolean;
|
|
10
|
+
pageID: string;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useContext, createContext, useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
const DrawerPageContext = createContext(null);
|
|
6
|
+
function useIsPageActive() {
|
|
7
|
+
const context = useContext(DrawerPageContext);
|
|
8
|
+
if (!context) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
return context.isActive;
|
|
12
|
+
}
|
|
13
|
+
function DrawerPageProvider({
|
|
14
|
+
isActive,
|
|
15
|
+
pageID,
|
|
16
|
+
children
|
|
17
|
+
}) {
|
|
18
|
+
const value = useMemo(() => ({ isActive, pageID }), [isActive, pageID]);
|
|
19
|
+
return /* @__PURE__ */ jsx(DrawerPageContext.Provider, { value, children });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { DrawerPageProvider, useIsPageActive };
|
|
23
|
+
//# sourceMappingURL=DrawerPageContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerPageContext.js","sources":["../../../src/stories/drawer/DrawerPageContext.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\n\nexport type DrawerPageContextValue = {\n isActive: boolean;\n pageID: string;\n};\n\nconst DrawerPageContext = createContext<DrawerPageContextValue | null>(null);\n\nexport function useDrawerPageContext(): DrawerPageContextValue | null {\n return useContext(DrawerPageContext);\n}\n\nexport function useIsPageActive(): boolean {\n const context = useContext(DrawerPageContext);\n if (!context) {\n return true;\n }\n return context.isActive;\n}\n\nexport function DrawerPageProvider({\n isActive,\n pageID,\n children,\n}: {\n isActive: boolean;\n pageID: string;\n children: ReactNode;\n}) {\n const value = useMemo(() => ({ isActive, pageID }), [isActive, pageID]);\n return <DrawerPageContext.Provider value={value}>{children}</DrawerPageContext.Provider>;\n}\n"],"names":[],"mappings":";;;;AASA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAA6C,IAAI,CAAA;AAMpE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,eAAA,CAAA,CAAA,CAA2B;AACvC,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,iBAAiB,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS;AACV,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACX;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACnB;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,kBAAA,CAAmB;AAAA,CAAA,CAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAIG;AACC,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAI,CAAC,QAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AACtE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAlB,CAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,GAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA;AAC/D;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { PaginationState } from '../pagination';
|
|
3
|
+
type AnyPaginationState = PaginationState<string[] | readonly string[]>;
|
|
4
|
+
export declare function useDrawerPagination(): AnyPaginationState | null;
|
|
5
|
+
export declare function DrawerPaginationProvider({ pagination, children, }: {
|
|
6
|
+
pagination: AnyPaginationState | null;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useContext, createContext } from 'react';
|
|
4
|
+
|
|
5
|
+
const DrawerPaginationContext = createContext(null);
|
|
6
|
+
function useDrawerPagination() {
|
|
7
|
+
return useContext(DrawerPaginationContext);
|
|
8
|
+
}
|
|
9
|
+
function DrawerPaginationProvider({
|
|
10
|
+
pagination,
|
|
11
|
+
children
|
|
12
|
+
}) {
|
|
13
|
+
return /* @__PURE__ */ jsx(DrawerPaginationContext.Provider, { value: pagination, children });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { DrawerPaginationProvider, useDrawerPagination };
|
|
17
|
+
//# sourceMappingURL=DrawerPaginationContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerPaginationContext.js","sources":["../../../src/stories/drawer/DrawerPaginationContext.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, type ReactNode, useContext } from 'react';\nimport type { PaginationState } from '../pagination';\n\ntype AnyPaginationState = PaginationState<string[] | readonly string[]>;\n\nconst DrawerPaginationContext = createContext<AnyPaginationState | null>(null);\n\nexport function useDrawerPagination(): AnyPaginationState | null {\n return useContext(DrawerPaginationContext);\n}\n\nexport function DrawerPaginationProvider({\n pagination,\n children,\n}: {\n pagination: AnyPaginationState | null;\n children: ReactNode;\n}) {\n return <DrawerPaginationContext.Provider value={pagination}>{children}</DrawerPaginationContext.Provider>;\n}\n"],"names":[],"mappings":";;;;AAOA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyC,IAAI,CAAA;AAEtE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,mBAAA,CAAA,CAAA,CAAiD;AAC7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AAC7C;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,wBAAA,CAAyB;AAAA,CAAA,CACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAGG;AACC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAxB,CAAA,CAAiC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA;AAC1E;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type DrawerProgressBarStyleProps = {
|
|
2
|
+
/** Fill color. @default 'var(--pte-new-colors-contentPrimary)' */
|
|
3
|
+
fill?: string;
|
|
4
|
+
/** Track (unfilled) color. @default 'var(--pte-new-colors-borderMedium)' */
|
|
5
|
+
track?: string;
|
|
6
|
+
/** Bar height as a CSS value. @default '2px' */
|
|
7
|
+
height?: string | number;
|
|
8
|
+
};
|
|
9
|
+
export type DrawerProgressBarProps = DrawerProgressBarStyleProps & {
|
|
10
|
+
/** Page IDs in order. Determines fill percentage based on the current page. */
|
|
11
|
+
steps?: readonly string[];
|
|
12
|
+
/** Fill percentage (0–100). When provided, takes precedence over the auto-calculated value from `steps`. */
|
|
13
|
+
value?: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const DrawerProgressBar: ({ steps, value, fill, track, height }: DrawerProgressBarProps) => import('react').ReactPortal | null;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useLayoutEffect } from 'react';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import styles from './Drawer.module.scss.js';
|
|
6
|
+
import { useDrawerPagination } from './DrawerPaginationContext.js';
|
|
7
|
+
import { useDrawerSlotContext } from './DrawerSlotContext.js';
|
|
8
|
+
|
|
9
|
+
const DrawerProgressBar = ({ steps, value, fill, track, height }) => {
|
|
10
|
+
const pagination = useDrawerPagination();
|
|
11
|
+
const slotContext = useDrawerSlotContext();
|
|
12
|
+
const registerProgressBar = slotContext?.registerProgressBar;
|
|
13
|
+
useLayoutEffect(() => {
|
|
14
|
+
if (!registerProgressBar) return;
|
|
15
|
+
return registerProgressBar();
|
|
16
|
+
}, [registerProgressBar]);
|
|
17
|
+
let progress;
|
|
18
|
+
if (value != null) {
|
|
19
|
+
progress = Math.max(0, Math.min(100, value));
|
|
20
|
+
} else if (steps && steps.length > 0 && pagination) {
|
|
21
|
+
const activeIndex = steps.indexOf(pagination.currentPage);
|
|
22
|
+
progress = (activeIndex + 1) / steps.length * 100;
|
|
23
|
+
} else {
|
|
24
|
+
progress = 0;
|
|
25
|
+
}
|
|
26
|
+
if (!slotContext?.progressBarRef.current) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return createPortal(
|
|
30
|
+
/* @__PURE__ */ jsx(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: styles.progressBar,
|
|
34
|
+
role: "progressbar",
|
|
35
|
+
"aria-valuemin": 0,
|
|
36
|
+
"aria-valuenow": Math.round(progress),
|
|
37
|
+
"aria-valuemax": 100,
|
|
38
|
+
"aria-label": "Page progress",
|
|
39
|
+
style: {
|
|
40
|
+
...track && { background: track },
|
|
41
|
+
...height != null && { height: typeof height === "number" ? `${height}px` : height }
|
|
42
|
+
},
|
|
43
|
+
children: /* @__PURE__ */ jsx(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
className: styles.progressBarFill,
|
|
47
|
+
style: {
|
|
48
|
+
width: `${progress}%`,
|
|
49
|
+
...fill && { background: fill }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
),
|
|
55
|
+
slotContext.progressBarRef.current
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { DrawerProgressBar };
|
|
60
|
+
//# sourceMappingURL=DrawerProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerProgressBar.js","sources":["../../../src/stories/drawer/DrawerProgressBar.tsx"],"sourcesContent":["'use client';\n\nimport { useLayoutEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport styles from './Drawer.module.scss';\nimport { useDrawerPagination } from './DrawerPaginationContext';\nimport { useDrawerSlotContext } from './DrawerSlotContext';\n\nexport type DrawerProgressBarStyleProps = {\n /** Fill color. @default 'var(--pte-new-colors-contentPrimary)' */\n fill?: string;\n /** Track (unfilled) color. @default 'var(--pte-new-colors-borderMedium)' */\n track?: string;\n /** Bar height as a CSS value. @default '2px' */\n height?: string | number;\n};\n\nexport type DrawerProgressBarProps = DrawerProgressBarStyleProps & {\n /** Page IDs in order. Determines fill percentage based on the current page. */\n steps?: readonly string[];\n /** Fill percentage (0–100). When provided, takes precedence over the auto-calculated value from `steps`. */\n value?: number;\n};\n\nexport const DrawerProgressBar = ({ steps, value, fill, track, height }: DrawerProgressBarProps) => {\n const pagination = useDrawerPagination();\n const slotContext = useDrawerSlotContext();\n\n const registerProgressBar = slotContext?.registerProgressBar;\n useLayoutEffect(() => {\n if (!registerProgressBar) return;\n return registerProgressBar();\n }, [registerProgressBar]);\n\n let progress: number;\n if (value != null) {\n progress = Math.max(0, Math.min(100, value));\n } else if (steps && steps.length > 0 && pagination) {\n const activeIndex = steps.indexOf(pagination.currentPage);\n progress = ((activeIndex + 1) / steps.length) * 100;\n } else {\n progress = 0;\n }\n\n if (!slotContext?.progressBarRef.current) {\n return null;\n }\n\n return createPortal(\n <div\n className={styles.progressBar}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuenow={Math.round(progress)}\n aria-valuemax={100}\n aria-label=\"Page progress\"\n style={{\n ...(track && { background: track }),\n ...(height != null && { height: typeof height === 'number' ? `${height}px` : height }),\n }}\n >\n <div\n className={styles.progressBarFill}\n style={{\n width: `${progress}%`,\n ...(fill && { background: fill }),\n }}\n />\n </div>,\n slotContext.progressBarRef.current,\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
export type BottomPanelEntry = {
|
|
3
|
+
id: string;
|
|
4
|
+
mode: 'replace' | 'append';
|
|
5
|
+
priority: number;
|
|
6
|
+
};
|
|
7
|
+
export type DrawerSlotContextValue = {
|
|
8
|
+
titleRef: RefObject<HTMLDivElement | null>;
|
|
9
|
+
actionsRef: RefObject<HTMLDivElement | null>;
|
|
10
|
+
bottomPanelRef: RefObject<HTMLDivElement | null>;
|
|
11
|
+
/** Callback ref for the bottom panel portal target — triggers re-render when assigned */
|
|
12
|
+
bottomPanelCallbackRef: (node: HTMLDivElement | null) => void;
|
|
13
|
+
/** Whether the bottom panel portal target is mounted in the DOM */
|
|
14
|
+
isBottomPanelMounted: boolean;
|
|
15
|
+
/** Portal target for the progress bar, rendered at the very top of the bottom panel */
|
|
16
|
+
progressBarRef: RefObject<HTMLDivElement | null>;
|
|
17
|
+
hasTitleSlot: boolean;
|
|
18
|
+
hasActionsSlot: boolean;
|
|
19
|
+
hasProgressBar: boolean;
|
|
20
|
+
/** Whether a replace-mode bottom panel is registered */
|
|
21
|
+
hasBottomPanelReplace: boolean;
|
|
22
|
+
/** Whether any bottom panel slot (replace or append) is registered */
|
|
23
|
+
hasAnyBottomPanelSlot: boolean;
|
|
24
|
+
/** Sorted list of append-mode bottom panel entries */
|
|
25
|
+
bottomPanelAppendEntries: BottomPanelEntry[];
|
|
26
|
+
registerTitleSlot: () => () => void;
|
|
27
|
+
registerActionsSlot: () => () => void;
|
|
28
|
+
registerProgressBar: () => () => void;
|
|
29
|
+
registerBottomPanel: (entry: BottomPanelEntry) => () => void;
|
|
30
|
+
};
|
|
31
|
+
export declare function useDrawerSlotContext(): DrawerSlotContextValue | null;
|
|
32
|
+
export declare function DrawerSlotProvider({ children }: {
|
|
33
|
+
children: ReactNode;
|
|
34
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useRef, useState, useCallback, useMemo, useContext, createContext } from 'react';
|
|
4
|
+
|
|
5
|
+
const DrawerSlotContext = createContext(null);
|
|
6
|
+
function useDrawerSlotContext() {
|
|
7
|
+
return useContext(DrawerSlotContext);
|
|
8
|
+
}
|
|
9
|
+
function DrawerSlotProvider({ children }) {
|
|
10
|
+
const titleRef = useRef(null);
|
|
11
|
+
const actionsRef = useRef(null);
|
|
12
|
+
const progressBarRef = useRef(null);
|
|
13
|
+
const bottomPanelRef = useRef(null);
|
|
14
|
+
const [isBottomPanelMounted, setIsBottomPanelMounted] = useState(false);
|
|
15
|
+
const bottomPanelCallbackRef = useCallback((node) => {
|
|
16
|
+
bottomPanelRef.current = node;
|
|
17
|
+
setIsBottomPanelMounted(node !== null);
|
|
18
|
+
}, []);
|
|
19
|
+
const [titleSlotCount, setTitleSlotCount] = useState(0);
|
|
20
|
+
const [actionsSlotCount, setActionsSlotCount] = useState(0);
|
|
21
|
+
const [progressBarCount, setProgressBarCount] = useState(0);
|
|
22
|
+
const [bottomPanelEntries, setBottomPanelEntries] = useState([]);
|
|
23
|
+
const registerTitleSlot = useCallback(() => {
|
|
24
|
+
setTitleSlotCount((prev) => {
|
|
25
|
+
const next = prev + 1;
|
|
26
|
+
if (process.env.NODE_ENV === "development" && next > 1) {
|
|
27
|
+
console.warn(
|
|
28
|
+
"DrawerSlotContext: Multiple title slots registered simultaneously. Only one is expected."
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return next;
|
|
32
|
+
});
|
|
33
|
+
return () => {
|
|
34
|
+
setTitleSlotCount((prev) => Math.max(0, prev - 1));
|
|
35
|
+
};
|
|
36
|
+
}, []);
|
|
37
|
+
const registerActionsSlot = useCallback(() => {
|
|
38
|
+
setActionsSlotCount((prev) => {
|
|
39
|
+
const next = prev + 1;
|
|
40
|
+
if (process.env.NODE_ENV === "development" && next > 1) {
|
|
41
|
+
console.warn(
|
|
42
|
+
"DrawerSlotContext: Multiple actions slots registered simultaneously. Only one is expected."
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
return next;
|
|
46
|
+
});
|
|
47
|
+
return () => {
|
|
48
|
+
setActionsSlotCount((prev) => Math.max(0, prev - 1));
|
|
49
|
+
};
|
|
50
|
+
}, []);
|
|
51
|
+
const registerProgressBar = useCallback(() => {
|
|
52
|
+
setProgressBarCount((prev) => prev + 1);
|
|
53
|
+
return () => {
|
|
54
|
+
setProgressBarCount((prev) => Math.max(0, prev - 1));
|
|
55
|
+
};
|
|
56
|
+
}, []);
|
|
57
|
+
const registerBottomPanel = useCallback((entry) => {
|
|
58
|
+
setBottomPanelEntries((prev) => {
|
|
59
|
+
if (process.env.NODE_ENV === "development" && entry.mode === "replace") {
|
|
60
|
+
const existingReplace = prev.find((e) => e.mode === "replace");
|
|
61
|
+
if (existingReplace) {
|
|
62
|
+
console.warn(
|
|
63
|
+
`DrawerSlotContext: Multiple replace-mode bottom panels registered (existing: "${existingReplace.id}", new: "${entry.id}"). Only one replace-mode panel is expected.`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return [...prev, entry];
|
|
68
|
+
});
|
|
69
|
+
return () => {
|
|
70
|
+
setBottomPanelEntries((prev) => prev.filter((e) => e.id !== entry.id));
|
|
71
|
+
};
|
|
72
|
+
}, []);
|
|
73
|
+
const hasTitleSlot = titleSlotCount > 0;
|
|
74
|
+
const hasActionsSlot = actionsSlotCount > 0;
|
|
75
|
+
const hasProgressBar = progressBarCount > 0;
|
|
76
|
+
const hasBottomPanelReplace = bottomPanelEntries.some((e) => e.mode === "replace");
|
|
77
|
+
const hasAnyBottomPanelSlot = bottomPanelEntries.length > 0;
|
|
78
|
+
const bottomPanelAppendEntries = useMemo(
|
|
79
|
+
() => bottomPanelEntries.filter((e) => e.mode === "append").sort((a, b) => a.priority - b.priority),
|
|
80
|
+
[bottomPanelEntries]
|
|
81
|
+
);
|
|
82
|
+
const value = useMemo(
|
|
83
|
+
() => ({
|
|
84
|
+
titleRef,
|
|
85
|
+
actionsRef,
|
|
86
|
+
progressBarRef,
|
|
87
|
+
bottomPanelRef,
|
|
88
|
+
bottomPanelCallbackRef,
|
|
89
|
+
isBottomPanelMounted,
|
|
90
|
+
hasTitleSlot,
|
|
91
|
+
hasActionsSlot,
|
|
92
|
+
hasProgressBar,
|
|
93
|
+
hasBottomPanelReplace,
|
|
94
|
+
hasAnyBottomPanelSlot,
|
|
95
|
+
bottomPanelAppendEntries,
|
|
96
|
+
registerTitleSlot,
|
|
97
|
+
registerActionsSlot,
|
|
98
|
+
registerProgressBar,
|
|
99
|
+
registerBottomPanel
|
|
100
|
+
}),
|
|
101
|
+
[
|
|
102
|
+
bottomPanelCallbackRef,
|
|
103
|
+
isBottomPanelMounted,
|
|
104
|
+
hasTitleSlot,
|
|
105
|
+
hasActionsSlot,
|
|
106
|
+
hasProgressBar,
|
|
107
|
+
hasBottomPanelReplace,
|
|
108
|
+
hasAnyBottomPanelSlot,
|
|
109
|
+
bottomPanelAppendEntries,
|
|
110
|
+
registerTitleSlot,
|
|
111
|
+
registerActionsSlot,
|
|
112
|
+
registerProgressBar,
|
|
113
|
+
registerBottomPanel
|
|
114
|
+
]
|
|
115
|
+
);
|
|
116
|
+
return /* @__PURE__ */ jsx(DrawerSlotContext.Provider, { value, children });
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { DrawerSlotProvider, useDrawerSlotContext };
|
|
120
|
+
//# sourceMappingURL=DrawerSlotContext.js.map
|