paris 0.23.0 → 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 +22 -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 -542
- 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,375 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { clsx } from 'clsx';
|
|
4
|
-
import type { CSSProperties, FC, MouseEvent as ReactMouseEvent, ReactNode, TouchEvent as ReactTouchEvent } from 'react';
|
|
5
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
|
-
import styles from './Tilt.module.scss';
|
|
7
|
-
|
|
8
|
-
type GlarePosition = 'top' | 'right' | 'bottom' | 'left' | 'all';
|
|
9
|
-
|
|
10
|
-
export type OnMoveParams = {
|
|
11
|
-
tiltAngleX: number;
|
|
12
|
-
tiltAngleY: number;
|
|
13
|
-
tiltAngleXPercentage: number;
|
|
14
|
-
tiltAngleYPercentage: number;
|
|
15
|
-
glareAngle: number;
|
|
16
|
-
glareOpacity: number;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export type TiltProps = {
|
|
20
|
-
/** Disables the tilt effect. @default false */
|
|
21
|
-
disableTilt?: boolean;
|
|
22
|
-
children?: ReactNode | ReactNode[];
|
|
23
|
-
className?: string;
|
|
24
|
-
style?: CSSProperties;
|
|
25
|
-
/** Scale on hover (1.05 = 105%). @default 1.05 */
|
|
26
|
-
scale?: number;
|
|
27
|
-
/** Max tilt on X axis in degrees. @default 12.5 */
|
|
28
|
-
tiltMaxAngleX?: number;
|
|
29
|
-
/** Max tilt on Y axis in degrees. @default 12.5 */
|
|
30
|
-
tiltMaxAngleY?: number;
|
|
31
|
-
/** Manual tilt on X axis in degrees. Overrides mouse input when non-null. */
|
|
32
|
-
tiltAngleXManual?: number | null;
|
|
33
|
-
/** Manual tilt on Y axis in degrees. Overrides mouse input when non-null. */
|
|
34
|
-
tiltAngleYManual?: number | null;
|
|
35
|
-
/** CSS perspective distance in px. @default 1000 */
|
|
36
|
-
perspective?: number;
|
|
37
|
-
/** Transition speed in ms for enter/leave. @default 400 */
|
|
38
|
-
transitionSpeed?: number;
|
|
39
|
-
/** Transition easing function. @default 'cubic-bezier(.03,.98,.52,.99)' */
|
|
40
|
-
transitionEasing?: string;
|
|
41
|
-
/** Reset tilt on mouse leave. @default true */
|
|
42
|
-
reset?: boolean;
|
|
43
|
-
/** Enable glare overlay. @default true */
|
|
44
|
-
glareEnable?: boolean;
|
|
45
|
-
/** Max glare opacity (0-1). @default 0.5 */
|
|
46
|
-
glareMaxOpacity?: number;
|
|
47
|
-
/** Glare gradient color. @default '#ffffff' */
|
|
48
|
-
glareColor?: string;
|
|
49
|
-
/** Glare gradient origin position. @default 'bottom' */
|
|
50
|
-
glarePosition?: GlarePosition;
|
|
51
|
-
/** Reverse glare direction. @default false */
|
|
52
|
-
glareReverse?: boolean;
|
|
53
|
-
/** CSS border-radius for glare wrapper. Derived from style.borderRadius by default. */
|
|
54
|
-
glareBorderRadius?: string;
|
|
55
|
-
onEnter?: (params: { event: ReactMouseEvent | ReactTouchEvent }) => void;
|
|
56
|
-
onLeave?: (params: { event: ReactMouseEvent | ReactTouchEvent }) => void;
|
|
57
|
-
onMove?: (params: OnMoveParams) => void;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
type TiltState = {
|
|
61
|
-
tiltAngleX: number;
|
|
62
|
-
tiltAngleY: number;
|
|
63
|
-
currentScale: number;
|
|
64
|
-
glareAngle: number;
|
|
65
|
-
glareOpacity: number;
|
|
66
|
-
transitioning: boolean;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
const INITIAL_STATE: TiltState = {
|
|
70
|
-
tiltAngleX: 0,
|
|
71
|
-
tiltAngleY: 0,
|
|
72
|
-
currentScale: 1,
|
|
73
|
-
glareAngle: 0,
|
|
74
|
-
glareOpacity: 0,
|
|
75
|
-
transitioning: false,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);
|
|
79
|
-
|
|
80
|
-
function computeGlareOpacity(
|
|
81
|
-
xPct: number,
|
|
82
|
-
yPct: number,
|
|
83
|
-
position: GlarePosition,
|
|
84
|
-
reverse: boolean,
|
|
85
|
-
maxOpacity: number,
|
|
86
|
-
): number {
|
|
87
|
-
const g = reverse ? -1 : 1;
|
|
88
|
-
let raw = 0;
|
|
89
|
-
switch (position) {
|
|
90
|
-
case 'top':
|
|
91
|
-
raw = -xPct * g;
|
|
92
|
-
break;
|
|
93
|
-
case 'right':
|
|
94
|
-
raw = yPct * g;
|
|
95
|
-
break;
|
|
96
|
-
case 'left':
|
|
97
|
-
raw = -yPct * g;
|
|
98
|
-
break;
|
|
99
|
-
case 'all':
|
|
100
|
-
raw = Math.hypot(xPct, yPct);
|
|
101
|
-
break;
|
|
102
|
-
default:
|
|
103
|
-
raw = xPct * g;
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
return (clamp(raw, 0, 100) * maxOpacity) / 100;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Tilt components allow you to add a parallax tilt effect to any component.
|
|
111
|
-
*
|
|
112
|
-
* > Card components include a Tilt component by default, by setting the `tilt` prop to `true`. You can override any of the underlying Tilt props by passing them to the Card component's `overrides.tilt` prop.
|
|
113
|
-
*
|
|
114
|
-
* <hr />
|
|
115
|
-
*
|
|
116
|
-
* To use this component, import it as follows:
|
|
117
|
-
*
|
|
118
|
-
* ```js
|
|
119
|
-
* import { Tilt } from 'paris/tilt';
|
|
120
|
-
* ```
|
|
121
|
-
* @constructor
|
|
122
|
-
*/
|
|
123
|
-
export const Tilt: FC<TiltProps> = ({
|
|
124
|
-
disableTilt = false,
|
|
125
|
-
scale = 1.05,
|
|
126
|
-
tiltMaxAngleX = 12.5,
|
|
127
|
-
tiltMaxAngleY = 12.5,
|
|
128
|
-
tiltAngleXManual = null,
|
|
129
|
-
tiltAngleYManual = null,
|
|
130
|
-
perspective = 1000,
|
|
131
|
-
transitionSpeed = 400,
|
|
132
|
-
transitionEasing = 'cubic-bezier(.03,.98,.52,.99)',
|
|
133
|
-
reset = true,
|
|
134
|
-
glareEnable = true,
|
|
135
|
-
glareMaxOpacity = 0.5,
|
|
136
|
-
glareColor = '#ffffff',
|
|
137
|
-
glarePosition = 'bottom',
|
|
138
|
-
glareReverse = false,
|
|
139
|
-
glareBorderRadius,
|
|
140
|
-
style = {},
|
|
141
|
-
className,
|
|
142
|
-
children,
|
|
143
|
-
onEnter,
|
|
144
|
-
onLeave,
|
|
145
|
-
onMove,
|
|
146
|
-
}) => {
|
|
147
|
-
const containerRef = useRef<HTMLDivElement>(null);
|
|
148
|
-
const rafID = useRef<number | null>(null);
|
|
149
|
-
const rectRef = useRef<DOMRect | null>(null);
|
|
150
|
-
const pendingRef = useRef<TiltState | null>(null);
|
|
151
|
-
|
|
152
|
-
const [tilt, setTilt] = useState<TiltState>(INITIAL_STATE);
|
|
153
|
-
|
|
154
|
-
const effectiveScale = disableTilt ? 1 : scale;
|
|
155
|
-
const effectiveMaxX = disableTilt ? 0 : tiltMaxAngleX;
|
|
156
|
-
const effectiveMaxY = disableTilt ? 0 : tiltMaxAngleY;
|
|
157
|
-
const effectiveGlare = !disableTilt && glareEnable;
|
|
158
|
-
const effectiveGlareMax = disableTilt ? 0 : glareMaxOpacity;
|
|
159
|
-
const effectiveManualX = disableTilt ? 0 : tiltAngleXManual;
|
|
160
|
-
const effectiveManualY = disableTilt ? 0 : tiltAngleYManual;
|
|
161
|
-
|
|
162
|
-
const computedGlareBorderRadius = glareBorderRadius ?? `calc(${style?.borderRadius || '1px'} - 1px)`;
|
|
163
|
-
const isManual = effectiveManualX !== null || effectiveManualY !== null;
|
|
164
|
-
|
|
165
|
-
// Cancel any pending rAF on unmount
|
|
166
|
-
useEffect(
|
|
167
|
-
() => () => {
|
|
168
|
-
if (rafID.current !== null) cancelAnimationFrame(rafID.current);
|
|
169
|
-
},
|
|
170
|
-
[],
|
|
171
|
-
);
|
|
172
|
-
|
|
173
|
-
const flushToState = useCallback(() => {
|
|
174
|
-
if (!pendingRef.current) return;
|
|
175
|
-
const next = pendingRef.current;
|
|
176
|
-
pendingRef.current = null;
|
|
177
|
-
setTilt(next);
|
|
178
|
-
}, []);
|
|
179
|
-
|
|
180
|
-
const scheduleUpdate = useCallback(
|
|
181
|
-
(next: TiltState) => {
|
|
182
|
-
pendingRef.current = next;
|
|
183
|
-
if (rafID.current !== null) cancelAnimationFrame(rafID.current);
|
|
184
|
-
rafID.current = requestAnimationFrame(flushToState);
|
|
185
|
-
},
|
|
186
|
-
[flushToState],
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
const computeTilt = useCallback(
|
|
190
|
-
(pageX: number, pageY: number): TiltState => {
|
|
191
|
-
const rect = rectRef.current;
|
|
192
|
-
if (!rect) return { ...INITIAL_STATE, currentScale: effectiveScale };
|
|
193
|
-
|
|
194
|
-
const xPct = clamp(((pageX - rect.left) / rect.width) * 200 - 100, -100, 100);
|
|
195
|
-
const yPct = clamp(((pageY - rect.top) / rect.height) * 200 - 100, -100, 100);
|
|
196
|
-
|
|
197
|
-
const angleX = effectiveManualX !== null ? effectiveManualX : (yPct * effectiveMaxX) / 100;
|
|
198
|
-
const angleY = effectiveManualY !== null ? effectiveManualY : ((xPct * effectiveMaxY) / 100) * -1;
|
|
199
|
-
|
|
200
|
-
const glareAngle = xPct ? Math.atan2(yPct, -xPct) * (180 / Math.PI) : 0;
|
|
201
|
-
const glareOpacity = effectiveGlare
|
|
202
|
-
? computeGlareOpacity(xPct, yPct, glarePosition, glareReverse, effectiveGlareMax)
|
|
203
|
-
: 0;
|
|
204
|
-
|
|
205
|
-
return {
|
|
206
|
-
tiltAngleX: clamp(angleX, -90, 90),
|
|
207
|
-
tiltAngleY: clamp(angleY, -90, 90),
|
|
208
|
-
currentScale: effectiveScale,
|
|
209
|
-
glareAngle,
|
|
210
|
-
glareOpacity,
|
|
211
|
-
transitioning: false,
|
|
212
|
-
};
|
|
213
|
-
},
|
|
214
|
-
[
|
|
215
|
-
effectiveScale,
|
|
216
|
-
effectiveMaxX,
|
|
217
|
-
effectiveMaxY,
|
|
218
|
-
effectiveManualX,
|
|
219
|
-
effectiveManualY,
|
|
220
|
-
effectiveGlare,
|
|
221
|
-
effectiveGlareMax,
|
|
222
|
-
glarePosition,
|
|
223
|
-
glareReverse,
|
|
224
|
-
],
|
|
225
|
-
);
|
|
226
|
-
|
|
227
|
-
const handleMouseEnter = useCallback(
|
|
228
|
-
(e: ReactMouseEvent<HTMLDivElement>) => {
|
|
229
|
-
if (!containerRef.current) return;
|
|
230
|
-
rectRef.current = containerRef.current.getBoundingClientRect();
|
|
231
|
-
|
|
232
|
-
const next = computeTilt(e.pageX, e.pageY);
|
|
233
|
-
setTilt({ ...next, transitioning: true });
|
|
234
|
-
onEnter?.({ event: e });
|
|
235
|
-
},
|
|
236
|
-
[computeTilt, onEnter],
|
|
237
|
-
);
|
|
238
|
-
|
|
239
|
-
const handleMouseMove = useCallback(
|
|
240
|
-
(e: ReactMouseEvent<HTMLDivElement>) => {
|
|
241
|
-
if (!containerRef.current || !rectRef.current) return;
|
|
242
|
-
if (effectiveManualX !== null || effectiveManualY !== null) return;
|
|
243
|
-
|
|
244
|
-
const next = computeTilt(e.pageX, e.pageY);
|
|
245
|
-
scheduleUpdate(next);
|
|
246
|
-
|
|
247
|
-
if (onMove) {
|
|
248
|
-
onMove({
|
|
249
|
-
tiltAngleX: next.tiltAngleX,
|
|
250
|
-
tiltAngleY: next.tiltAngleY,
|
|
251
|
-
tiltAngleXPercentage: effectiveMaxX ? (next.tiltAngleX / effectiveMaxX) * 100 : 0,
|
|
252
|
-
tiltAngleYPercentage: effectiveMaxY ? (next.tiltAngleY / effectiveMaxY) * 100 : 0,
|
|
253
|
-
glareAngle: next.glareAngle,
|
|
254
|
-
glareOpacity: next.glareOpacity,
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
[computeTilt, scheduleUpdate, onMove, effectiveManualX, effectiveManualY, effectiveMaxX, effectiveMaxY],
|
|
259
|
-
);
|
|
260
|
-
|
|
261
|
-
const handleMouseLeave = useCallback(
|
|
262
|
-
(e: ReactMouseEvent<HTMLDivElement>) => {
|
|
263
|
-
if (!containerRef.current) return;
|
|
264
|
-
rectRef.current = null;
|
|
265
|
-
|
|
266
|
-
if (reset) {
|
|
267
|
-
setTilt({ ...INITIAL_STATE, transitioning: true });
|
|
268
|
-
}
|
|
269
|
-
onLeave?.({ event: e });
|
|
270
|
-
},
|
|
271
|
-
[reset, onLeave],
|
|
272
|
-
);
|
|
273
|
-
|
|
274
|
-
const handleTouchStart = useCallback(
|
|
275
|
-
(e: ReactTouchEvent<HTMLDivElement>) => {
|
|
276
|
-
if (!containerRef.current || !e.touches[0]) return;
|
|
277
|
-
rectRef.current = containerRef.current.getBoundingClientRect();
|
|
278
|
-
|
|
279
|
-
const touch = e.touches[0];
|
|
280
|
-
const next = computeTilt(touch.pageX, touch.pageY);
|
|
281
|
-
setTilt({ ...next, transitioning: true });
|
|
282
|
-
onEnter?.({ event: e });
|
|
283
|
-
},
|
|
284
|
-
[computeTilt, onEnter],
|
|
285
|
-
);
|
|
286
|
-
|
|
287
|
-
const handleTouchMove = useCallback(
|
|
288
|
-
(e: ReactTouchEvent<HTMLDivElement>) => {
|
|
289
|
-
if (!containerRef.current || !rectRef.current || !e.touches[0]) return;
|
|
290
|
-
if (effectiveManualX !== null || effectiveManualY !== null) return;
|
|
291
|
-
|
|
292
|
-
const touch = e.touches[0];
|
|
293
|
-
const next = computeTilt(touch.pageX, touch.pageY);
|
|
294
|
-
scheduleUpdate(next);
|
|
295
|
-
},
|
|
296
|
-
[computeTilt, scheduleUpdate, effectiveManualX, effectiveManualY],
|
|
297
|
-
);
|
|
298
|
-
|
|
299
|
-
const handleTouchEnd = useCallback(
|
|
300
|
-
(e: ReactTouchEvent<HTMLDivElement>) => {
|
|
301
|
-
if (!containerRef.current) return;
|
|
302
|
-
rectRef.current = null;
|
|
303
|
-
|
|
304
|
-
if (reset) {
|
|
305
|
-
setTilt({ ...INITIAL_STATE, transitioning: true });
|
|
306
|
-
}
|
|
307
|
-
onLeave?.({ event: e });
|
|
308
|
-
},
|
|
309
|
-
[reset, onLeave],
|
|
310
|
-
);
|
|
311
|
-
|
|
312
|
-
// Compute glare element size (diagonal of container)
|
|
313
|
-
const [glareSize, setGlareSize] = useState(0);
|
|
314
|
-
useEffect(() => {
|
|
315
|
-
if (!effectiveGlare || !containerRef.current) {
|
|
316
|
-
return undefined;
|
|
317
|
-
}
|
|
318
|
-
const el = containerRef.current;
|
|
319
|
-
const observer = new ResizeObserver(([entry]) => {
|
|
320
|
-
if (!entry) return;
|
|
321
|
-
const { width, height } = entry.contentRect;
|
|
322
|
-
setGlareSize(Math.sqrt(width ** 2 + height ** 2));
|
|
323
|
-
});
|
|
324
|
-
observer.observe(el);
|
|
325
|
-
return () => observer.disconnect();
|
|
326
|
-
}, [effectiveGlare]);
|
|
327
|
-
|
|
328
|
-
// Apply manual angle overrides at render time
|
|
329
|
-
const finalAngleX = isManual ? (effectiveManualX ?? 0) : tilt.tiltAngleX;
|
|
330
|
-
const finalAngleY = isManual ? (effectiveManualY ?? 0) : tilt.tiltAngleY;
|
|
331
|
-
const finalScale = tilt.currentScale;
|
|
332
|
-
|
|
333
|
-
const transform = `perspective(${perspective}px) rotateX(${finalAngleX}deg) rotateY(${finalAngleY}deg) scale3d(${finalScale},${finalScale},${finalScale})`;
|
|
334
|
-
|
|
335
|
-
const transition =
|
|
336
|
-
tilt.transitioning || isManual ? `transform ${transitionSpeed}ms ${transitionEasing}` : undefined;
|
|
337
|
-
|
|
338
|
-
return (
|
|
339
|
-
<div
|
|
340
|
-
ref={containerRef}
|
|
341
|
-
onMouseEnter={handleMouseEnter}
|
|
342
|
-
onMouseMove={handleMouseMove}
|
|
343
|
-
onMouseLeave={handleMouseLeave}
|
|
344
|
-
onTouchStart={handleTouchStart}
|
|
345
|
-
onTouchMove={handleTouchMove}
|
|
346
|
-
onTouchEnd={handleTouchEnd}
|
|
347
|
-
className={clsx(styles.container, className)}
|
|
348
|
-
style={{
|
|
349
|
-
...style,
|
|
350
|
-
transform,
|
|
351
|
-
transition,
|
|
352
|
-
willChange:
|
|
353
|
-
tilt.transitioning || finalScale !== 1 || finalAngleX !== 0 || finalAngleY !== 0
|
|
354
|
-
? 'transform'
|
|
355
|
-
: undefined,
|
|
356
|
-
}}
|
|
357
|
-
>
|
|
358
|
-
{children}
|
|
359
|
-
{effectiveGlare && (
|
|
360
|
-
<div className={styles.glareWrapper} style={{ borderRadius: computedGlareBorderRadius }}>
|
|
361
|
-
<div
|
|
362
|
-
className={styles.glare}
|
|
363
|
-
style={{
|
|
364
|
-
width: glareSize,
|
|
365
|
-
height: glareSize,
|
|
366
|
-
transform: `rotate(${tilt.glareAngle}deg) translate(-50%, -50%)`,
|
|
367
|
-
opacity: tilt.glareOpacity,
|
|
368
|
-
background: `linear-gradient(0deg, rgba(255,255,255,0) 0%, ${glareColor} 100%)`,
|
|
369
|
-
}}
|
|
370
|
-
/>
|
|
371
|
-
</div>
|
|
372
|
-
)}
|
|
373
|
-
</div>
|
|
374
|
-
);
|
|
375
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
.toast {
|
|
2
|
-
color: var(--pte-new-colors-contentInversePrimary) !important;
|
|
3
|
-
background-color: var(--pte-new-colors-buttonFill) !important;
|
|
4
|
-
//border: 1px solid var(--pte-colors-border) !important;
|
|
5
|
-
border-radius: var(--pte-borders-radius-rounded) !important;
|
|
6
|
-
backdrop-filter: blur(4px) !important;
|
|
7
|
-
box-shadow: var(--pte-new-lighting-subtlePopup) !important;
|
|
8
|
-
font-weight: 500 !important;
|
|
9
|
-
padding: 4px 8px !important;
|
|
10
|
-
|
|
11
|
-
svg {
|
|
12
|
-
width: 10px;
|
|
13
|
-
margin-left: 8px;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
& > div {
|
|
17
|
-
margin-left: 8px;
|
|
18
|
-
margin-right: 8px;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/nextjs-vite';
|
|
2
|
-
import { Button } from '../button';
|
|
3
|
-
import { ChevronRight, Icon } from '../icon';
|
|
4
|
-
import { Toast, toast } from './Toast';
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof Toast> = {
|
|
7
|
-
title: 'Surfaces/Toast',
|
|
8
|
-
component: Toast,
|
|
9
|
-
tags: ['autodocs'],
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export default meta;
|
|
13
|
-
type Story = StoryObj<typeof Toast>;
|
|
14
|
-
|
|
15
|
-
export const Default: Story = {
|
|
16
|
-
args: {},
|
|
17
|
-
render: (args) => (
|
|
18
|
-
<>
|
|
19
|
-
<Button
|
|
20
|
-
onClick={() => {
|
|
21
|
-
toast('Like we were in Paris', {
|
|
22
|
-
icon: <Icon size={12} icon={ChevronRight} />,
|
|
23
|
-
});
|
|
24
|
-
}}
|
|
25
|
-
>
|
|
26
|
-
Show toast
|
|
27
|
-
</Button>
|
|
28
|
-
<Toast {...args} />
|
|
29
|
-
</>
|
|
30
|
-
),
|
|
31
|
-
};
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { act, render, screen, waitFor } from '../../test/render';
|
|
2
|
-
import { Toast, toast } from './Toast';
|
|
3
|
-
|
|
4
|
-
describe('Toast', () => {
|
|
5
|
-
it('renders the Toaster container without crashing', () => {
|
|
6
|
-
const { container } = render(<Toast />);
|
|
7
|
-
expect(container).toBeInTheDocument();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('displays a toast message when toast() is called', async () => {
|
|
11
|
-
render(<Toast />);
|
|
12
|
-
|
|
13
|
-
act(() => {
|
|
14
|
-
toast('Hello from Paris');
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
await waitFor(() => {
|
|
18
|
-
expect(screen.getByText('Hello from Paris')).toBeInTheDocument();
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('displays a success toast', async () => {
|
|
23
|
-
render(<Toast />);
|
|
24
|
-
|
|
25
|
-
act(() => {
|
|
26
|
-
toast.success('Operation succeeded');
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
await waitFor(() => {
|
|
30
|
-
expect(screen.getByText('Operation succeeded')).toBeInTheDocument();
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('displays an error toast', async () => {
|
|
35
|
-
render(<Toast />);
|
|
36
|
-
|
|
37
|
-
act(() => {
|
|
38
|
-
toast.error('Something went wrong');
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
await waitFor(() => {
|
|
42
|
-
expect(screen.getByText('Something went wrong')).toBeInTheDocument();
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('displays a loading toast', async () => {
|
|
47
|
-
render(<Toast />);
|
|
48
|
-
|
|
49
|
-
act(() => {
|
|
50
|
-
toast.loading('Please wait...');
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
await waitFor(() => {
|
|
54
|
-
expect(screen.getByText('Please wait...')).toBeInTheDocument();
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('displays a custom JSX toast', async () => {
|
|
59
|
-
render(<Toast />);
|
|
60
|
-
|
|
61
|
-
act(() => {
|
|
62
|
-
toast(<span data-testid="custom-toast">Custom content</span>);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
await waitFor(() => {
|
|
66
|
-
expect(screen.getByTestId('custom-toast')).toBeInTheDocument();
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('applies toast styling className', async () => {
|
|
71
|
-
render(<Toast />);
|
|
72
|
-
|
|
73
|
-
act(() => {
|
|
74
|
-
toast('Styled toast');
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
await waitFor(() => {
|
|
78
|
-
const toastEl = screen.getByText('Styled toast').closest('[class*="toast"]');
|
|
79
|
-
expect(toastEl).toBeInTheDocument();
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('passes additional Toaster props through', () => {
|
|
84
|
-
render(<Toast position="bottom-left" />);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
.transitionContainer {
|
|
2
|
-
position: relative;
|
|
3
|
-
z-index: var(--pte-new-layers-dropdown);
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.transition {
|
|
7
|
-
transition: var(--pte-animations-interaction);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.enterFrom {
|
|
11
|
-
opacity: 0;
|
|
12
|
-
transform: translateY(-8px);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.enterTo {
|
|
16
|
-
opacity: 1;
|
|
17
|
-
transform: translateY(0);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.leaveFrom {
|
|
21
|
-
opacity: 1;
|
|
22
|
-
transform: translateY(0);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.leaveTo {
|
|
26
|
-
opacity: 0;
|
|
27
|
-
transform: translateY(-8px);
|
|
28
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { PropsWithChildren } from 'react';
|
|
2
|
-
import { memo } from 'react';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* A memoized component that conditionally removes its children from the DOM if the `when` prop is `true`.
|
|
6
|
-
*/
|
|
7
|
-
export const RemoveFromDOM = memo<
|
|
8
|
-
PropsWithChildren<{
|
|
9
|
-
/**
|
|
10
|
-
* An optional condition that determines whether the children should be removed from the DOM. If `true`, the children will be removed.
|
|
11
|
-
* @default true
|
|
12
|
-
*/
|
|
13
|
-
when: boolean;
|
|
14
|
-
}>
|
|
15
|
-
>(({ when, children }) => (when ? <></> : children));
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { PropsWithChildren } from 'react';
|
|
2
|
-
import { memo } from 'react';
|
|
3
|
-
import type { TextElement, TextProps } from '../text';
|
|
4
|
-
import { Text } from '../text';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* A memoized component that renders its children as a {@link Text} component if `children` is just a string.
|
|
8
|
-
*/
|
|
9
|
-
export const TextWhenString = memo<PropsWithChildren<TextProps<TextElement>>>(({ children, ...props }) => {
|
|
10
|
-
if (typeof children === 'string' || typeof children === 'number') {
|
|
11
|
-
return <Text {...props}>{children}</Text>;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
return <>{children}</>;
|
|
15
|
-
});
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { render, screen } from '../../test/render';
|
|
2
|
-
import { RemoveFromDOM } from './RemoveFromDOM';
|
|
3
|
-
import { TextWhenString } from './TextWhenString';
|
|
4
|
-
import { VisuallyHidden } from './VisuallyHidden';
|
|
5
|
-
|
|
6
|
-
describe('RemoveFromDOM', () => {
|
|
7
|
-
it('renders children when `when` is false', () => {
|
|
8
|
-
render(
|
|
9
|
-
<RemoveFromDOM when={false}>
|
|
10
|
-
<span>visible child</span>
|
|
11
|
-
</RemoveFromDOM>,
|
|
12
|
-
);
|
|
13
|
-
expect(screen.getByText('visible child')).toBeInTheDocument();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('removes children from the DOM when `when` is true', () => {
|
|
17
|
-
render(
|
|
18
|
-
<RemoveFromDOM when={true}>
|
|
19
|
-
<span>hidden child</span>
|
|
20
|
-
</RemoveFromDOM>,
|
|
21
|
-
);
|
|
22
|
-
expect(screen.queryByText('hidden child')).not.toBeInTheDocument();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('toggles visibility when `when` prop changes', () => {
|
|
26
|
-
const { rerender } = render(
|
|
27
|
-
<RemoveFromDOM when={false}>
|
|
28
|
-
<span>toggle me</span>
|
|
29
|
-
</RemoveFromDOM>,
|
|
30
|
-
);
|
|
31
|
-
expect(screen.getByText('toggle me')).toBeInTheDocument();
|
|
32
|
-
|
|
33
|
-
rerender(
|
|
34
|
-
<RemoveFromDOM when={true}>
|
|
35
|
-
<span>toggle me</span>
|
|
36
|
-
</RemoveFromDOM>,
|
|
37
|
-
);
|
|
38
|
-
expect(screen.queryByText('toggle me')).not.toBeInTheDocument();
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe('TextWhenString', () => {
|
|
43
|
-
it('wraps string children in a Text component', () => {
|
|
44
|
-
render(<TextWhenString as="span">hello world</TextWhenString>);
|
|
45
|
-
const el = screen.getByText('hello world');
|
|
46
|
-
expect(el).toBeInTheDocument();
|
|
47
|
-
expect(el.tagName).toBe('SPAN');
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('wraps numeric children in a Text component', () => {
|
|
51
|
-
render(<TextWhenString as="span">{42}</TextWhenString>);
|
|
52
|
-
expect(screen.getByText('42')).toBeInTheDocument();
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('passes ReactNode children through without wrapping', () => {
|
|
56
|
-
render(
|
|
57
|
-
<TextWhenString as="span">
|
|
58
|
-
<div data-testid="passthrough">node child</div>
|
|
59
|
-
</TextWhenString>,
|
|
60
|
-
);
|
|
61
|
-
const el = screen.getByTestId('passthrough');
|
|
62
|
-
expect(el).toBeInTheDocument();
|
|
63
|
-
expect(el.tagName).toBe('DIV');
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
describe('VisuallyHidden', () => {
|
|
68
|
-
it('visually hides children when `when` is true (default)', () => {
|
|
69
|
-
render(
|
|
70
|
-
<VisuallyHidden>
|
|
71
|
-
<span>hidden text</span>
|
|
72
|
-
</VisuallyHidden>,
|
|
73
|
-
);
|
|
74
|
-
expect(screen.getByText('hidden text')).toBeInTheDocument();
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it('renders children normally when `when` is false', () => {
|
|
78
|
-
render(
|
|
79
|
-
<VisuallyHidden when={false}>
|
|
80
|
-
<span data-testid="normal">visible text</span>
|
|
81
|
-
</VisuallyHidden>,
|
|
82
|
-
);
|
|
83
|
-
const el = screen.getByTestId('normal');
|
|
84
|
-
expect(el).toBeInTheDocument();
|
|
85
|
-
expect(el.tagName).toBe('SPAN');
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it('visually hides children when `when` is explicitly true', () => {
|
|
89
|
-
render(
|
|
90
|
-
<VisuallyHidden when={true}>
|
|
91
|
-
<span>explicitly hidden</span>
|
|
92
|
-
</VisuallyHidden>,
|
|
93
|
-
);
|
|
94
|
-
expect(screen.getByText('explicitly hidden')).toBeInTheDocument();
|
|
95
|
-
});
|
|
96
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { VisuallyHidden as AriaVisuallyHidden } from '@ariakit/react';
|
|
2
|
-
import type { PropsWithChildren } from 'react';
|
|
3
|
-
import { memo } from 'react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* A memoized component that visually hides its children, but keeps them accessible to screen readers.
|
|
7
|
-
*
|
|
8
|
-
* Specify the `when` prop to conditionally render the children normally.
|
|
9
|
-
*/
|
|
10
|
-
export const VisuallyHidden = memo<
|
|
11
|
-
PropsWithChildren<{
|
|
12
|
-
/**
|
|
13
|
-
* An optional condition that determines whether the children should be hidden. If `false`, the children will be rendered normally.
|
|
14
|
-
* @default true
|
|
15
|
-
*/
|
|
16
|
-
when?: boolean;
|
|
17
|
-
}>
|
|
18
|
-
>(({ when = true, children }) => (when ? <AriaVisuallyHidden>{children}</AriaVisuallyHidden> : children));
|