@pnx-mixtape/mxds 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/decorators.ts +7 -0
- package/.storybook/main.ts +21 -0
- package/.storybook/manager.ts +6 -0
- package/.storybook/preview.ts +60 -0
- package/.storybook/public/demo-logo.svg +4 -0
- package/.storybook/public/design-system.svg +1 -0
- package/.storybook/public/favicon.svg +7 -0
- package/.storybook/public/mixtape-logo.png +0 -0
- package/.storybook/public/mixtape.webp +0 -0
- package/.storybook/public/pinto.png +0 -0
- package/.storybook/public/pinto.svg +1 -0
- package/.storybook/public/xb.png +0 -0
- package/.storybook/public/xb.svg +1 -0
- package/.storybook/src/global.d.ts +16 -0
- package/.storybook/src/theme.ts +8 -0
- package/.storybook/storybook.css +35 -0
- package/.storybook/test-runner.ts +77 -0
- package/.storybook/theme-demo.css +89 -0
- package/dist/build/accordion.entry.js +32 -43
- package/dist/build/accordion.entry.js.map +1 -1
- package/dist/build/base.css +17 -39
- package/dist/build/button.css +9 -10
- package/dist/build/chunks/{Accordion-O-huO4At.js → Accordion-D1HQ0FDq.js} +23 -21
- package/dist/build/chunks/{Accordion-O-huO4At.js.map → Accordion-D1HQ0FDq.js.map} +1 -1
- package/dist/build/chunks/disclosure-widget-CdjCdx7t.js +129 -0
- package/dist/build/chunks/disclosure-widget-CdjCdx7t.js.map +1 -0
- package/dist/build/chunks/drop-menu.entry-fzV-_VFl.js +70 -0
- package/dist/build/chunks/drop-menu.entry-fzV-_VFl.js.map +1 -0
- package/dist/build/chunks/{polyfills-C-B7iqDG.js → polyfills-DnrsypYs.js} +35 -26
- package/dist/build/chunks/polyfills-DnrsypYs.js.map +1 -0
- package/dist/build/chunks/popover.entry-BQvyR0d5.js +38 -0
- package/dist/build/chunks/popover.entry-BQvyR0d5.js.map +1 -0
- package/dist/build/chunks/{utilities-DXELy_An.js → utilities-Ci7wwNeg.js} +9 -106
- package/dist/build/chunks/utilities-Ci7wwNeg.js.map +1 -0
- package/dist/build/constants.css +10 -31
- package/dist/build/dialog.entry.js +23 -31
- package/dist/build/dialog.entry.js.map +1 -1
- package/dist/build/drop-menu.entry.js +1 -1
- package/dist/build/drupal.css +5 -9
- package/dist/build/filters.entry.js +54 -50
- package/dist/build/filters.entry.js.map +1 -1
- package/dist/build/form.css +12 -26
- package/dist/build/global-alert.entry.js +26 -19
- package/dist/build/global-alert.entry.js.map +1 -1
- package/dist/build/grid.css +3 -9
- package/dist/build/header.entry.js +93 -88
- package/dist/build/header.entry.js.map +1 -1
- package/dist/build/icon.css +3 -3
- package/dist/build/in-page-navigation.entry.js +16 -12
- package/dist/build/in-page-navigation.entry.js.map +1 -1
- package/dist/build/navigation.css +9 -23
- package/dist/build/navigation.entry.js +148 -50
- package/dist/build/navigation.entry.js.map +1 -1
- package/dist/build/page.css +1 -1
- package/dist/build/popover.css +119 -0
- package/dist/build/popover.entry.js +2 -0
- package/dist/build/popover.entry.js.map +1 -0
- package/dist/build/section.css +1 -1
- package/dist/build/sticky.entry.js +11 -12
- package/dist/build/sticky.entry.js.map +1 -1
- package/dist/build/tabs.entry.js +108 -91
- package/dist/build/tabs.entry.js.map +1 -1
- package/dist/build/utility-list.css +43 -0
- package/dist/build/utility-list.entry.js +80 -0
- package/dist/build/utility-list.entry.js.map +1 -0
- package/package.json +13 -12
- package/src/Atom/{Base.mdx → Atom.mdx} +19 -19
- package/src/Atom/Background/{Backgrounds.stories.ts → Background.stories.ts} +23 -5
- package/src/Atom/Background/__snapshots__/{Backgrounds.stories.ts.snap → Background.stories.ts.snap} +86 -26
- package/src/Atom/Background/_background.css +9 -12
- package/src/Atom/Background/backgrounds.twig +6 -4
- package/src/Atom/Blockquote/_blockquote.css +1 -2
- package/src/Atom/Button/Button.stories.ts +128 -20
- package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +75 -11
- package/src/Atom/Button/__snapshots__/Button.stories.tsx.snap +1 -1
- package/src/Atom/Button/_buttons-styles.css +18 -6
- package/src/Atom/Button/_buttons.css +4 -5
- package/src/Atom/DefinitionList/DefinitionList.stories.ts +20 -3
- package/src/Atom/DefinitionList/DefinitionList.stories.tsx +3 -9
- package/src/Atom/DefinitionList/DefinitionList.tsx +3 -4
- package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +1 -1
- package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.tsx.snap +1 -1
- package/src/Atom/Heading/Heading.stories.ts +49 -7
- package/src/Atom/Heading/Heading.tsx +1 -6
- package/src/Atom/Heading/__snapshots__/Heading.stories.ts.snap +9 -1
- package/src/Atom/Heading/__snapshots__/Heading.stories.tsx.snap +1 -1
- package/src/Atom/Heading/_headings.css +1 -2
- package/src/Atom/Icon/Icon.mdx +5 -1
- package/src/Atom/Icon/Icon.stories.ts +76 -6
- package/src/Atom/Icon/Icon.tsx +1 -8
- package/src/Atom/Icon/__snapshots__/Icon.stories.ts.snap +18 -4
- package/src/Atom/Icon/__snapshots__/Icon.stories.tsx.snap +1 -1
- package/src/Atom/Icon/_extended-set.css +0 -8
- package/src/Atom/Icon/_icon.css +9 -1
- package/src/Atom/Image/Image.stories.ts +4 -3
- package/src/Atom/Image/__snapshots__/Image.stories.ts.snap +1 -1
- package/src/Atom/Link/Link.stories.ts +74 -7
- package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +4 -4
- package/src/Atom/Link/__snapshots__/Link.stories.tsx.snap +1 -1
- package/src/Atom/Link/_links.css +1 -0
- package/src/Atom/Media/Media.stories.ts +34 -5
- package/src/Atom/Media/Media.tsx +1 -6
- package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +2 -2
- package/src/Atom/Media/__snapshots__/Media.stories.tsx.snap +1 -1
- package/src/Atom/Media/_media.css +2 -10
- package/src/Atom/Spacing/Spacing.stories.ts +45 -31
- package/src/Atom/Spacing/__snapshots__/Spacing.stories.ts.snap +5 -4
- package/src/Atom/Spacing/spacing.twig +5 -2
- package/src/Atom/Table/Table.stories.ts +0 -1
- package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +1 -1
- package/src/Atom/Table/__snapshots__/TableResponsive.stories.ts.snap +1 -1
- package/src/Atom/Table/_table.css +1 -2
- package/src/Atom/Text/Text.stories.ts +62 -0
- package/src/Atom/Text/__snapshots__/{TextSizes.stories.ts.snap → Text.stories.ts.snap} +14 -27
- package/src/Atom/Text/__snapshots__/Text.stories.tsx.snap +1 -1
- package/src/Atom/Text/_text-sizes.css +2 -4
- package/src/Atom/Text/text-style.twig +11 -1
- package/src/Atom/Text/text-styles-example.twig +2 -16
- package/src/Atom/Video/Video.stories.ts +6 -4
- package/src/Atom/Video/Video.tsx +1 -5
- package/src/Atom/Video/__snapshots__/Video.stories.ts.snap +1 -1
- package/src/Atom/_generic.css +2 -4
- package/src/Atom/_hr.css +1 -2
- package/src/Component/Accordion/Accordion.stories.ts +26 -8
- package/src/Component/Accordion/Accordion.stories.tsx +8 -10
- package/src/Component/Accordion/Accordion.tsx +2 -13
- package/src/Component/Accordion/AccordionItem.stories.ts +90 -0
- package/src/Component/Accordion/Components/AccordionContent.tsx +1 -5
- package/src/Component/Accordion/Components/AccordionTitle.tsx +1 -4
- package/src/Component/Accordion/Elements/Accordion.ts +1 -1
- package/src/Component/Accordion/Elements/AccordionDiv.ts +4 -11
- package/src/Component/Accordion/Elements/AccordionGroup.ts +10 -24
- package/src/Component/Accordion/Elements/AccordionMobile.ts +4 -4
- package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +17 -6
- package/src/Component/Accordion/__snapshots__/Accordion.stories.tsx.snap +1 -1
- package/src/Component/Accordion/__snapshots__/AccordionItem.stories.ts.snap +90 -0
- package/src/Component/Accordion/accordion.css +7 -5
- package/src/Component/Accordion/twig/accordion-div.twig +13 -11
- package/src/Component/Accordion/twig/accordion-mobile.twig +13 -11
- package/src/Component/Breadcrumb/Breadcrumb.stories.ts +14 -0
- package/src/Component/Breadcrumb/Breadcrumb.tsx +2 -12
- package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +1 -1
- package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.tsx.snap +1 -1
- package/src/Component/Breadcrumb/breadcrumb.css +1 -4
- package/src/Component/Callout/Callout.stories.ts +20 -0
- package/src/Component/Callout/__snapshots__/Callout.stories.ts.snap +1 -1
- package/src/Component/Callout/callout.css +1 -2
- package/src/Component/Card/Card.stories.ts +129 -14
- package/src/Component/Card/Card.stories.tsx +2 -2
- package/src/Component/Card/Components/CardContent.tsx +1 -5
- package/src/Component/Card/__snapshots__/Card.stories.ts.snap +16 -16
- package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +1 -1
- package/src/Component/Card/card.css +2 -6
- package/src/Component/Carousel/Carousel.stories.ts +61 -8
- package/src/Component/Carousel/Elements/Carousel.ts +10 -19
- package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +288 -2
- package/src/Component/Carousel/carousel.css +1 -2
- package/src/Component/ContentBlock/Components/ContentBlockContent.tsx +1 -5
- package/src/Component/ContentBlock/Components/ContentBlockMedia.tsx +1 -4
- package/src/Component/ContentBlock/ContentBlock.stories.ts +63 -13
- package/src/Component/ContentBlock/ContentBlock.stories.tsx +2 -2
- package/src/Component/ContentBlock/ContentBlock.tsx +1 -5
- package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +11 -11
- package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.tsx.snap +1 -1
- package/src/Component/Dialog/Dialog.stories.ts +78 -21
- package/src/Component/Dialog/Dialog.stories.tsx +2 -3
- package/src/Component/Dialog/Elements/Dialog.ts +7 -16
- package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +8 -11
- package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +1 -1
- package/src/Component/Dialog/dialog.css +1 -2
- package/src/Component/Dialog/dialog.twig +1 -1
- package/src/Component/DropMenu/Components/DropMenuContext.tsx +4 -12
- package/src/Component/DropMenu/DropMenu.stories.ts +60 -1
- package/src/Component/DropMenu/DropMenu.tsx +2 -7
- package/src/Component/DropMenu/Elements/DropMenu.ts +21 -91
- package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +53 -11
- package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +1 -1
- package/src/Component/DropMenu/drop-menu.css +13 -41
- package/src/Component/DropMenu/drop-menu.twig +8 -6
- package/src/Component/Filters/Elements/Filters.ts +7 -11
- package/src/Component/Filters/FilterItem.stories.ts +180 -0
- package/src/Component/Filters/Filters.stories.ts +83 -8
- package/src/Component/Filters/__snapshots__/FilterItem.stories.ts.snap +135 -0
- package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +43 -41
- package/src/Component/Filters/filter-item.twig +1 -1
- package/src/Component/Filters/filters.css +33 -17
- package/src/Component/GlobalAlert/Elements/ClosableAlert.ts +8 -7
- package/src/Component/GlobalAlert/GlobalAlert.stories.ts +60 -12
- package/src/Component/GlobalAlert/GlobalAlert.stories.tsx +1 -2
- package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.ts.snap +8 -6
- package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.tsx.snap +3 -3
- package/src/Component/HeroBanner/HeroBanner.stories.ts +84 -7
- package/src/Component/HeroBanner/HeroBanner.stories.tsx +4 -4
- package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +91 -99
- package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.tsx.snap +1 -1
- package/src/Component/HeroSearch/HeroSearch.stories.ts +23 -6
- package/src/Component/HeroSearch/HeroSearch.stories.tsx +4 -4
- package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.ts.snap +142 -148
- package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.tsx.snap +1 -1
- package/src/Component/InPageAlert/InPageAlert.stories.ts +76 -8
- package/src/Component/InPageAlert/InPageAlert.stories.tsx +1 -2
- package/src/Component/InPageAlert/InPageAlert.tsx +1 -4
- package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +80 -2
- package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.tsx.snap +1 -1
- package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +7 -9
- package/src/Component/InPageNavigation/Hooks/useInPageNavigation.ts +3 -5
- package/src/Component/InPageNavigation/InPageNavigation.stories.ts +44 -9
- package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +32 -40
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +152 -5
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +1 -1
- package/src/Component/LinkList/LinkList.stories.ts +23 -0
- package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +8 -8
- package/src/Component/LinkList/__snapshots__/LinkList.stories.tsx.snap +1 -1
- package/src/Component/LinkList/link-list.css +1 -2
- package/src/Component/ListItem/Components/ListItemContent.tsx +1 -5
- package/src/Component/ListItem/Components/ListItemMedia.tsx +1 -4
- package/src/Component/ListItem/ListItem.stories.ts +91 -11
- package/src/Component/ListItem/ListItem.stories.tsx +6 -7
- package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +1 -1
- package/src/Component/ListItem/__snapshots__/ListItem.stories.tsx.snap +1 -1
- package/src/Component/ListItem/list-item.css +1 -2
- package/src/Component/Navigation/Components/DropdownLevel.tsx +5 -13
- package/src/Component/Navigation/Elements/Navigation.ts +6 -13
- package/src/Component/Navigation/Navigation.stories.ts +48 -0
- package/src/Component/Navigation/__snapshots__/Dropdown.stories.tsx.snap +1 -1
- package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +1 -1
- package/src/Component/Navigation/__snapshots__/Navigation.stories.tsx.snap +1 -1
- package/src/Component/Navigation/_navigation-collapsible.css +2 -4
- package/src/Component/Navigation/_navigation-dropdown.css +2 -6
- package/src/Component/Navigation/_navigation-mega.css +1 -4
- package/src/Component/Navigation/_navigation.css +1 -4
- package/src/Component/Pagination/Components/PaginationContext.tsx +5 -19
- package/src/Component/Pagination/Components/PaginationItem.tsx +1 -5
- package/src/Component/Pagination/Pagination.stories.ts +28 -0
- package/src/Component/Pagination/Pagination.tsx +3 -11
- package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +3 -3
- package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +1 -1
- package/src/Component/Pagination/pagination.css +1 -4
- package/src/Component/Popover/Elements/Popover.ts +55 -0
- package/src/Component/Popover/Popover.stories.ts +304 -0
- package/src/Component/Popover/__snapshots__/Popover.stories.ts.snap +534 -0
- package/src/Component/{DropMenu → Popover}/polyfills.js +6 -4
- package/src/Component/Popover/popover.css +113 -0
- package/src/Component/Popover/popover.entry.js +1 -0
- package/src/Component/Popover/popover.twig +27 -0
- package/src/Component/ResultsBar/Components/ResultsBarInfo.tsx +2 -7
- package/src/Component/ResultsBar/Components/ResultsBarSort.tsx +1 -6
- package/src/Component/ResultsBar/ResultsBar.stories.ts +34 -4
- package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.ts.snap +3 -3
- package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.tsx.snap +1 -1
- package/src/Component/SideNavigation/SideNavigation.stories.ts +40 -0
- package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +1 -1
- package/src/Component/SideNavigation/side-navigation.css +3 -6
- package/src/Component/SocialLinks/SocialLinks.stories.ts +20 -0
- package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +5 -5
- package/src/Component/SocialShare/SocialShare.stories.ts +37 -0
- package/src/Component/SocialShare/SocialShare.tsx +2 -4
- package/src/Component/SocialShare/__snapshots__/SocialShare.stories.ts.snap +40 -0
- package/src/Component/SocialShare/__snapshots__/SocialShare.stories.tsx.snap +1 -1
- package/src/Component/SocialShare/social-share.twig +34 -0
- package/src/Component/Steps/StepItem.stories.ts +48 -0
- package/src/Component/Steps/Steps.stories.ts +82 -13
- package/src/Component/Steps/__snapshots__/StepItem.stories.ts.snap +31 -0
- package/src/Component/Steps/__snapshots__/Steps.stories.ts.snap +97 -16
- package/src/Component/Steps/steps.css +8 -14
- package/src/Component/Sticky/Elements/Sticky.ts +3 -8
- package/src/Component/Sticky/Sticky.stories.ts +35 -3
- package/src/Component/Sticky/__snapshots__/Sticky.stories.ts.snap +1 -1
- package/src/Component/Sticky/__snapshots__/Sticky.stories.tsx.snap +1 -1
- package/src/Component/Sticky/sticky.twig +1 -1
- package/src/Component/Tabs/Components/Tab.tsx +2 -8
- package/src/Component/Tabs/Components/TabPanel.tsx +1 -5
- package/src/Component/Tabs/Elements/Tabs.ts +21 -31
- package/src/Component/Tabs/TabItem.stories.ts +52 -0
- package/src/Component/Tabs/Tabs.stories.ts +51 -8
- package/src/Component/Tabs/Tabs.tsx +6 -22
- package/src/Component/Tabs/__snapshots__/TabItem.stories.ts.snap +12 -0
- package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +127 -11
- package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +1 -1
- package/src/Component/Tabs/tab-item.twig +1 -2
- package/src/Component/Tabs/tabs.css +56 -59
- package/src/Component/Tag/Tag.stories.ts +30 -0
- package/src/Component/Tag/Tag.tsx +1 -5
- package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +1 -1
- package/src/Component/Tag/__snapshots__/Tag.stories.tsx.snap +1 -1
- package/src/Component/Tag/tag.css +1 -4
- package/src/Component/UtilityList/Elements/UtilityList.ts +110 -0
- package/src/Component/UtilityList/UtilityList.stories.ts +72 -0
- package/src/Component/UtilityList/__snapshots__/UtilityList.stories.ts.snap +274 -0
- package/src/Component/UtilityList/utility-list.css +40 -0
- package/src/Component/UtilityList/utility-list.entry.js +1 -0
- package/src/Component/UtilityList/utility-list.twig +66 -0
- package/src/Form/Checkbox/FormCheckbox.stories.tsx +1 -3
- package/src/Form/Checkbox/FormCheckbox.tsx +4 -25
- package/src/Form/Checkbox/__snapshots__/Checkbox.stories.ts.snap +3 -3
- package/src/Form/Description/Description.stories.ts +1 -2
- package/src/Form/Description/FormStatus.stories.ts +1 -4
- package/src/Form/Description/__snapshots__/Description.stories.ts.snap +1 -1
- package/src/Form/Description/__snapshots__/FormDescription.stories.tsx.snap +1 -1
- package/src/Form/Description/__snapshots__/FormStatus.stories.ts.snap +3 -3
- package/src/Form/Form/Form.tsx +1 -3
- package/src/Form/Form/__snapshots__/Form.stories.tsx.snap +1 -1
- package/src/Form/Form/__snapshots__/FormTitle.stories.tsx.snap +1 -1
- package/src/Form/FormItem/FormItem.stories.ts +3 -9
- package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +18 -18
- package/src/Form/FormItem/__snapshots__/FormItem.stories.tsx.snap +1 -1
- package/src/Form/Label/FormLabel.tsx +1 -5
- package/src/Form/Label/__snapshots__/FormLabel.stories.tsx.snap +1 -1
- package/src/Form/Label/__snapshots__/Label.stories.ts.snap +3 -3
- package/src/Form/Radio/FormRadio.stories.tsx +1 -3
- package/src/Form/Radio/FormRadio.tsx +4 -25
- package/src/Form/Radio/__snapshots__/Radio.stories.ts.snap +9 -9
- package/src/Form/Search/__snapshots__/Search.stories.ts.snap +1 -1
- package/src/Form/Select/FormSelect.tsx +3 -9
- package/src/Form/Select/__snapshots__/FormSelect.stories.tsx.snap +1 -1
- package/src/Form/Select/__snapshots__/Select.stories.ts.snap +2 -2
- package/src/Form/TextInput/FormText.tsx +3 -9
- package/src/Form/TextInput/InputDivider.stories.ts +0 -1
- package/src/Form/TextInput/TextInput.stories.ts +1 -4
- package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +1 -1
- package/src/Form/TextInput/__snapshots__/InputDivider.stories.ts.snap +2 -2
- package/src/Form/TextInput/__snapshots__/TextInput.stories.ts.snap +3 -3
- package/src/Form/Textarea/FormTextarea.tsx +3 -9
- package/src/Form/Textarea/__snapshots__/FormTextarea.stories.tsx.snap +1 -1
- package/src/Form/Textarea/__snapshots__/Textarea.stories.ts.snap +2 -2
- package/src/Form/form.css +6 -14
- package/src/Introduction.mdx +1 -2
- package/src/Layout/Footer/Footer.stories.ts +1 -5
- package/src/Layout/Footer/Footer.stories.tsx +2 -3
- package/src/Layout/Footer/Footer.tsx +3 -12
- package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +4 -4
- package/src/Layout/Footer/__snapshots__/Footer.stories.tsx.snap +1 -1
- package/src/Layout/Grid/Grid.stories.ts +40 -8
- package/src/Layout/Grid/Grid.tsx +1 -2
- package/src/Layout/Grid/GridItem.stories.ts +63 -0
- package/src/Layout/Grid/__snapshots__/Grid.stories.ts.snap +29 -4
- package/src/Layout/Grid/__snapshots__/Grid.stories.tsx.snap +1 -1
- package/src/Layout/Grid/__snapshots__/GridItem.stories.ts.snap +19 -0
- package/src/Layout/Grid/grid-item.twig +3 -9
- package/src/Layout/Grid/grid.css +1 -4
- package/src/Layout/Header/Elements/GlobalToggle.ts +9 -29
- package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +5 -5
- package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +3 -3
- package/src/Layout/Masthead/Masthead.stories.ts +1 -4
- package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +3 -3
- package/src/Layout/Page/Page.stories.tsx +2 -2
- package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +3 -3
- package/src/Layout/Page/page.css +2 -10
- package/src/Layout/Section/Background.stories.ts +14 -39
- package/src/Layout/Section/Breakouts.stories.ts +3 -0
- package/src/Layout/Section/Flow.stories.ts +3 -0
- package/src/Layout/Section/Section.stories.ts +93 -11
- package/src/Layout/Section/Section.tsx +3 -13
- package/src/Layout/Section/SectionGrid.tsx +2 -9
- package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +4 -4
- package/src/Layout/Section/__snapshots__/Breakouts.stories.ts.snap +1 -1
- package/src/Layout/Section/__snapshots__/Flow.stories.ts.snap +1 -1
- package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +93 -3
- package/src/Layout/Section/__snapshots__/Section.stories.tsx.snap +1 -1
- package/src/Layout/Section/__snapshots__/SectionGrid.stories.tsx.snap +1 -1
- package/src/Layout/Section/section.css +2 -5
- package/src/Layout/Section/section.twig +1 -3
- package/src/Layout/Sidebar/Sidebar.stories.ts +46 -4
- package/src/Layout/Sidebar/Sidebar.tsx +1 -3
- package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +4 -4
- package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.tsx.snap +1 -1
- package/src/Utility/Context/ImageComponent.tsx +4 -8
- package/src/Utility/Context/LinkComponent.tsx +1 -5
- package/src/Utility/Drupal/drupal.css +2 -4
- package/src/Utility/Elements/breakpoint-loader.ts +4 -10
- package/src/Utility/Elements/cookie-compliance.ts +2 -8
- package/src/Utility/Elements/disclosure-widget.ts +11 -18
- package/src/Utility/Elements/io-loader.ts +4 -6
- package/src/Utility/Elements/keyboard.ts +4 -14
- package/src/Utility/Hooks/useLocalStorage.ts +5 -18
- package/src/Utility/Hooks/useMediaQuery.ts +1 -4
- package/src/Utility/Hooks/useToggle.ts +1 -3
- package/src/Utility/global.d.ts +1 -5
- package/src/Utility/utilities.ts +20 -45
- package/src/constants.css +115 -135
- package/src/enums.ts +4 -1
- package/src/react.ts +5 -21
- package/src/tokens.js +27 -20
- package/dist/build/chunks/disclosure-widget-DVpnRsTI.js +0 -126
- package/dist/build/chunks/disclosure-widget-DVpnRsTI.js.map +0 -1
- package/dist/build/chunks/drop-menu.entry-B4TtnC50.js +0 -132
- package/dist/build/chunks/drop-menu.entry-B4TtnC50.js.map +0 -1
- package/dist/build/chunks/keyboard-rvZ4dfGF.js +0 -104
- package/dist/build/chunks/keyboard-rvZ4dfGF.js.map +0 -1
- package/dist/build/chunks/polyfills-C-B7iqDG.js.map +0 -1
- package/dist/build/chunks/utilities-DXELy_An.js.map +0 -1
- package/src/Atom/Text/TextSizes.stories.ts +0 -25
- package/src/Atom/Text/text-alignment.twig +0 -5
- package/src/Component/Accordion/twig/accordion-example.twig +0 -36
- package/src/Component/Tile/README.md +0 -3
- package/src/Component/Tile/Tile.stories.ts +0 -49
- package/src/Component/Tile/Tile.stories.tsx +0 -35
- package/src/Component/Tile/__snapshots__/Tile.stories.ts.snap +0 -57
- package/src/Component/Tile/__snapshots__/Tile.stories.tsx.snap +0 -23
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
& :is(td, th) {
|
|
13
13
|
padding: var(--spacing-xxs);
|
|
14
|
-
border-block-end: var(--line-width, 1px) solid
|
|
15
|
-
var(--line-colour, var(--colour-border));
|
|
14
|
+
border-block-end: var(--line-width, 1px) solid var(--line-colour, var(--colour-border));
|
|
16
15
|
vertical-align: top;
|
|
17
16
|
}
|
|
18
17
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/html-vite"
|
|
2
|
+
import Component from "./text-style.twig"
|
|
3
|
+
import ExampleComponent from "./text-styles-example.twig"
|
|
4
|
+
import "../_base.css"
|
|
5
|
+
import { TextStyles } from "../../enums"
|
|
6
|
+
|
|
7
|
+
enum TextAlign {
|
|
8
|
+
LEFT = "mx-text--left",
|
|
9
|
+
RIGHT = "mx-text--right",
|
|
10
|
+
CENTER = "mx-text--center",
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type TextProps = {
|
|
14
|
+
modifier?: TextStyles
|
|
15
|
+
alignment?: TextAlign
|
|
16
|
+
content: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Demonstration of the text helper classes that are available to control typographic sizes.
|
|
21
|
+
*/
|
|
22
|
+
const meta: Meta<TextProps> = {
|
|
23
|
+
tags: ["autodocs"],
|
|
24
|
+
component: Component,
|
|
25
|
+
args: {
|
|
26
|
+
content:
|
|
27
|
+
"In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content (also called greeking). Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
|
|
28
|
+
},
|
|
29
|
+
argTypes: {
|
|
30
|
+
modifier: {
|
|
31
|
+
description: "Set the size of the text",
|
|
32
|
+
options: Object.values(TextStyles),
|
|
33
|
+
control: "select",
|
|
34
|
+
table: {
|
|
35
|
+
type: { summary: "enum" },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
alignment: {
|
|
39
|
+
description: "Set the alignment of the text",
|
|
40
|
+
options: Object.values(TextAlign),
|
|
41
|
+
control: "select",
|
|
42
|
+
table: {
|
|
43
|
+
type: { summary: "enum" },
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export default meta
|
|
50
|
+
type Story = StoryObj<TextProps>
|
|
51
|
+
|
|
52
|
+
export const Text: Story = {}
|
|
53
|
+
|
|
54
|
+
export const Center: Story = {
|
|
55
|
+
args: {
|
|
56
|
+
alignment: TextAlign.CENTER,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const Example: Story = {
|
|
61
|
+
render: args => `<div class="mx-rich-text mx-vertical-flow">${ExampleComponent(args)}</div>`,
|
|
62
|
+
}
|
|
@@ -1,35 +1,22 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://
|
|
1
|
+
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
|
2
2
|
|
|
3
|
-
exports[`Atom/
|
|
3
|
+
exports[`Atom/Text Center smoke-test 1`] = `
|
|
4
4
|
<div class="mx-page default">
|
|
5
|
-
<div class="vertical-flow">
|
|
5
|
+
<div class="mx-rich-text mx-vertical-flow mx-section--narrow mx-text--center">
|
|
6
|
+
In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content (also called greeking). Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
`;
|
|
10
|
+
|
|
11
|
+
exports[`Atom/Text Example smoke-test 1`] = `
|
|
12
|
+
<div class="mx-page default">
|
|
13
|
+
<div class="mx-rich-text mx-vertical-flow">
|
|
6
14
|
<p class="mx-text--embellished-headline">
|
|
7
15
|
Embelished headline: Lorem ipsum dolor sit amet consectetur
|
|
8
16
|
</p>
|
|
9
17
|
<p class="mx-text--section-headline">
|
|
10
18
|
Section headline: Lorem ipsum dolor sit amet consectetur
|
|
11
19
|
</p>
|
|
12
|
-
<h2 class="mx-headline">
|
|
13
|
-
Headline: Lorem ipsum dolor sit amet consectetur
|
|
14
|
-
</h2>
|
|
15
|
-
<p class="mx-heading--xxl">
|
|
16
|
-
Heading xxl: Lorem ipsum dolor sit amet consectetur
|
|
17
|
-
</p>
|
|
18
|
-
<p class="mx-heading--xl">
|
|
19
|
-
Heading xl: Lorem ipsum dolor sit amet consectetur
|
|
20
|
-
</p>
|
|
21
|
-
<p class="mx-heading--l">
|
|
22
|
-
Heading l: Lorem ipsum dolor sit amet consectetur
|
|
23
|
-
</p>
|
|
24
|
-
<p class="mx-heading--m">
|
|
25
|
-
Heading m: Lorem ipsum dolor sit amet consectetur
|
|
26
|
-
</p>
|
|
27
|
-
<p class="mx-heading--s">
|
|
28
|
-
Heading s: Lorem ipsum dolor sit amet consectetur
|
|
29
|
-
</p>
|
|
30
|
-
<p class="mx-heading--xs">
|
|
31
|
-
Heading xs: Lorem ipsum dolor sit amet consectetur
|
|
32
|
-
</p>
|
|
33
20
|
<p class="mx-text--xxxl">
|
|
34
21
|
Text xxxl: Lorem ipsum dolor sit amet consectetur
|
|
35
22
|
</p>
|
|
@@ -58,10 +45,10 @@ exports[`Atom/Typography/Text Sizes Example smoke-test 1`] = `
|
|
|
58
45
|
</div>
|
|
59
46
|
`;
|
|
60
47
|
|
|
61
|
-
exports[`Atom/
|
|
48
|
+
exports[`Atom/Text Text smoke-test 1`] = `
|
|
62
49
|
<div class="mx-page default">
|
|
63
|
-
<
|
|
50
|
+
<div class="mx-rich-text mx-vertical-flow mx-section--narrow">
|
|
64
51
|
In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content (also called greeking). Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
65
|
-
</
|
|
52
|
+
</div>
|
|
66
53
|
</div>
|
|
67
54
|
`;
|
|
@@ -26,9 +26,7 @@
|
|
|
26
26
|
.mx-text--xxxl,
|
|
27
27
|
.mx-text--fluid
|
|
28
28
|
) {
|
|
29
|
-
--font-min: calc(
|
|
30
|
-
var(--font-size) - var(--font-size) * var(--font-size-diff, 0.3)
|
|
31
|
-
);
|
|
29
|
+
--font-min: calc(var(--font-size) - var(--font-size) * var(--font-size-diff, 0.3));
|
|
32
30
|
|
|
33
31
|
font-size: clamp(
|
|
34
32
|
max(var(--base-font-size), var(--font-min)),
|
|
@@ -71,7 +69,7 @@
|
|
|
71
69
|
inline-size: var(--spacing-xxxl);
|
|
72
70
|
block-size: 3px;
|
|
73
71
|
background-color: var(--colour-primary);
|
|
74
|
-
inset-block-
|
|
72
|
+
inset-block-end: -8px;
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
{% set classes = [
|
|
2
|
+
"mx-rich-text",
|
|
3
|
+
"mx-vertical-flow",
|
|
4
|
+
"mx-section--narrow",
|
|
5
|
+
modifier,
|
|
6
|
+
alignment
|
|
7
|
+
] %}
|
|
8
|
+
{% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
|
|
9
|
+
<div{{ attributes }}>
|
|
10
|
+
{{ content }}
|
|
11
|
+
</div>
|
|
@@ -1,22 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
<p class="mx-text--embellished-headline">Embelished headline: Lorem ipsum dolor sit amet consectetur</p>
|
|
3
3
|
|
|
4
4
|
<p class="mx-text--section-headline">Section headline: Lorem ipsum dolor sit amet consectetur</p>
|
|
5
5
|
|
|
6
|
-
<h2 class="mx-headline">Headline: Lorem ipsum dolor sit amet consectetur</h2>
|
|
7
|
-
|
|
8
|
-
<p class="mx-heading--xxl">Heading xxl: Lorem ipsum dolor sit amet consectetur</p>
|
|
9
|
-
|
|
10
|
-
<p class="mx-heading--xl">Heading xl: Lorem ipsum dolor sit amet consectetur</p>
|
|
11
|
-
|
|
12
|
-
<p class="mx-heading--l">Heading l: Lorem ipsum dolor sit amet consectetur</p>
|
|
13
|
-
|
|
14
|
-
<p class="mx-heading--m">Heading m: Lorem ipsum dolor sit amet consectetur</p>
|
|
15
|
-
|
|
16
|
-
<p class="mx-heading--s">Heading s: Lorem ipsum dolor sit amet consectetur</p>
|
|
17
|
-
|
|
18
|
-
<p class="mx-heading--xs">Heading xs: Lorem ipsum dolor sit amet consectetur</p>
|
|
19
|
-
|
|
20
6
|
<p class="mx-text--xxxl">Text xxxl: Lorem ipsum dolor sit amet consectetur</p>
|
|
21
7
|
|
|
22
8
|
<p class="mx-text--xxl">Text xxl: Lorem ipsum dolor sit amet consectetur</p>
|
|
@@ -32,4 +18,4 @@
|
|
|
32
18
|
<p class="mx-text--s">Text s: Lorem ipsum dolor sit amet consectetur</p>
|
|
33
19
|
|
|
34
20
|
<p class="mx-text--xs">Text xs: Lorem ipsum dolor sit amet consectetur</p>
|
|
35
|
-
|
|
21
|
+
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Meta, StoryObj } from "@storybook/html-vite"
|
|
2
2
|
import Component from "./video.twig"
|
|
3
|
-
import "
|
|
3
|
+
import { Video as VideoType } from "@pnx-mixtape/ids-shape"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* A simple video embed atom.
|
|
7
|
+
*/
|
|
8
|
+
const meta: Meta<VideoType> = {
|
|
7
9
|
tags: ["autodocs"],
|
|
8
10
|
component: Component,
|
|
9
11
|
args: {
|
|
@@ -13,6 +15,6 @@ const meta: Meta<typeof Component> = {
|
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export default meta
|
|
16
|
-
type Story = StoryObj<
|
|
18
|
+
type Story = StoryObj<VideoType>
|
|
17
19
|
|
|
18
20
|
export const Video: Story = {}
|
package/src/Atom/Video/Video.tsx
CHANGED
|
@@ -4,11 +4,7 @@ import classNames from "classnames"
|
|
|
4
4
|
|
|
5
5
|
type VideoProps = ComponentPropsWithoutRef<"iframe">
|
|
6
6
|
|
|
7
|
-
const Video = ({
|
|
8
|
-
title,
|
|
9
|
-
className = null,
|
|
10
|
-
...props
|
|
11
|
-
}: VideoProps): JSX.Element => (
|
|
7
|
+
const Video = ({ title, className = null, ...props }: VideoProps): JSX.Element => (
|
|
12
8
|
<figure className={classNames("mx-video", className)}>
|
|
13
9
|
<iframe title={title} {...props} />
|
|
14
10
|
</figure>
|
package/src/Atom/_generic.css
CHANGED
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
margin: 0;
|
|
12
12
|
opacity: 1;
|
|
13
13
|
transition-property:
|
|
14
|
-
opacity, color, background-color, border-color, transform, rotate,
|
|
15
|
-
display, overlay;
|
|
14
|
+
opacity, color, background-color, border-color, transform, rotate, display, overlay;
|
|
16
15
|
transition-duration: 0.5s;
|
|
17
16
|
transition-timing-function: var(--ease);
|
|
18
17
|
transition-behavior: allow-discrete;
|
|
@@ -27,8 +26,7 @@
|
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
:focus-visible {
|
|
30
|
-
outline: var(--outline-size, 2px) var(--outline-style, solid)
|
|
31
|
-
var(--outline-color, currentcolor);
|
|
29
|
+
outline: var(--outline-size, 2px) var(--outline-style, solid) var(--outline-color, currentcolor);
|
|
32
30
|
outline-offset: var(--outline-offset, var(--outline-size, 2px));
|
|
33
31
|
}
|
|
34
32
|
|
package/src/Atom/_hr.css
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
display: block;
|
|
4
4
|
block-size: 0;
|
|
5
5
|
border: 0;
|
|
6
|
-
border-block-start: var(--line-width, 1px) solid
|
|
7
|
-
var(--line-colour, var(--colour-border));
|
|
6
|
+
border-block-start: var(--line-width, 1px) solid var(--line-colour, var(--colour-border));
|
|
8
7
|
margin-block: var(--line-gap, var(--spacing-m));
|
|
9
8
|
}
|
|
10
9
|
}
|
|
@@ -2,12 +2,11 @@ import { Meta, StoryObj } from "@storybook/html-vite"
|
|
|
2
2
|
import Component from "./accordion.twig"
|
|
3
3
|
import AccordionItem from "./accordion-item.twig"
|
|
4
4
|
import Heading from "../../Atom/Heading/heading.twig"
|
|
5
|
+
import "./Elements/Accordion"
|
|
5
6
|
import "./Elements/AccordionGroup"
|
|
7
|
+
import "./Elements/AccordionMobile"
|
|
6
8
|
import "./accordion.css"
|
|
7
|
-
import {
|
|
8
|
-
Accordion as AccordionType,
|
|
9
|
-
HeadingTypes,
|
|
10
|
-
} from "@pnx-mixtape/ids-shape"
|
|
9
|
+
import { Accordion as AccordionType, HeadingTypes } from "@pnx-mixtape/ids-shape"
|
|
11
10
|
|
|
12
11
|
const meta: Meta<AccordionType> = {
|
|
13
12
|
tags: ["autodocs", "ids-mvp"],
|
|
@@ -31,10 +30,29 @@ const meta: Meta<AccordionType> = {
|
|
|
31
30
|
],
|
|
32
31
|
},
|
|
33
32
|
argTypes: {
|
|
34
|
-
toggleAll: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
toggleAll: {
|
|
34
|
+
control: "boolean",
|
|
35
|
+
description: "Include the **Expand all / Collapse all** behaviour.",
|
|
36
|
+
table: { defaultValue: { summary: "false" } },
|
|
37
|
+
type: "boolean",
|
|
38
|
+
},
|
|
39
|
+
title: {
|
|
40
|
+
description:
|
|
41
|
+
"Optional [Heading](/?path=/docs/atom-heading--docs) component, displayed above the accordions.",
|
|
42
|
+
control: "text",
|
|
43
|
+
},
|
|
44
|
+
items: {
|
|
45
|
+
description:
|
|
46
|
+
"A list of [AccordionItem](/?path=/docs/component-accordion-accordionitem--docs) objects.",
|
|
47
|
+
type: {
|
|
48
|
+
name: "other",
|
|
49
|
+
required: true,
|
|
50
|
+
value: "array",
|
|
51
|
+
},
|
|
52
|
+
table: {
|
|
53
|
+
type: { summary: "AccordionItem[]" },
|
|
54
|
+
},
|
|
55
|
+
},
|
|
38
56
|
},
|
|
39
57
|
}
|
|
40
58
|
|
|
@@ -17,11 +17,10 @@ const meta: Meta<typeof Component> = {
|
|
|
17
17
|
<AccordionTitleIcon />
|
|
18
18
|
</AccordionTitle>
|
|
19
19
|
<AccordionContent>
|
|
20
|
-
I'm baby air plant hashtag letterpress blue bottle. Cloud bread
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
health goth.
|
|
20
|
+
I'm baby air plant hashtag letterpress blue bottle. Cloud bread dreamcatcher everyday
|
|
21
|
+
carry lumbersexual, iceland cardigan swag chicharrones lo-fi fanny pack affogato freegan
|
|
22
|
+
XOXO shaman. Shoreditch cloud bread waistcoat tbh XOXO. Chillwave pour-over umami pug
|
|
23
|
+
glossier health goth.
|
|
25
24
|
</AccordionContent>
|
|
26
25
|
</>
|
|
27
26
|
),
|
|
@@ -39,11 +38,10 @@ export const HeadingLevel: StoryObj<typeof meta> = {
|
|
|
39
38
|
<AccordionTitleIcon />
|
|
40
39
|
</AccordionTitle>
|
|
41
40
|
<AccordionContent>
|
|
42
|
-
I'm baby air plant hashtag letterpress blue bottle. Cloud bread
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
health goth.
|
|
41
|
+
I'm baby air plant hashtag letterpress blue bottle. Cloud bread dreamcatcher everyday
|
|
42
|
+
carry lumbersexual, iceland cardigan swag chicharrones lo-fi fanny pack affogato freegan
|
|
43
|
+
XOXO shaman. Shoreditch cloud bread waistcoat tbh XOXO. Chillwave pour-over umami pug
|
|
44
|
+
glossier health goth.
|
|
47
45
|
</AccordionContent>
|
|
48
46
|
</>
|
|
49
47
|
),
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
JSX,
|
|
3
|
-
PropsWithChildren,
|
|
4
|
-
useEffect,
|
|
5
|
-
useId,
|
|
6
|
-
createContext,
|
|
7
|
-
use,
|
|
8
|
-
useMemo,
|
|
9
|
-
} from "react"
|
|
1
|
+
import { JSX, PropsWithChildren, useEffect, useId, createContext, use, useMemo } from "react"
|
|
10
2
|
import classNames from "classnames"
|
|
11
3
|
import useToggle from "../../Utility/Hooks/useToggle"
|
|
12
4
|
|
|
@@ -40,10 +32,7 @@ const Accordion = ({
|
|
|
40
32
|
}
|
|
41
33
|
}, [accordionId])
|
|
42
34
|
|
|
43
|
-
const values = useMemo(
|
|
44
|
-
() => ({ on, toggle, id: accordionId }),
|
|
45
|
-
[on, toggle, accordionId],
|
|
46
|
-
)
|
|
35
|
+
const values = useMemo(() => ({ on, toggle, id: accordionId }), [on, toggle, accordionId])
|
|
47
36
|
|
|
48
37
|
return (
|
|
49
38
|
<AccordionContext value={values}>
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/html-vite"
|
|
2
|
+
import Component from "./accordion-item.twig"
|
|
3
|
+
import AccordionMobile from "./twig/accordion-mobile.twig"
|
|
4
|
+
import AccordionDiv from "./twig/accordion-div.twig"
|
|
5
|
+
|
|
6
|
+
import "./Elements/Accordion"
|
|
7
|
+
import "./Elements/AccordionMobile"
|
|
8
|
+
import "./Elements/AccordionDiv"
|
|
9
|
+
import "./accordion.css"
|
|
10
|
+
import { AccordionItem as AccordionItemType } from "@pnx-mixtape/ids-shape"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* An HTML Details based accordion.
|
|
14
|
+
* For extra features like anchor opening, include the `Accordion` custom element javascript.
|
|
15
|
+
*/
|
|
16
|
+
const meta: Meta<AccordionItemType> = {
|
|
17
|
+
tags: ["autodocs", "ids-mvp"],
|
|
18
|
+
component: Component,
|
|
19
|
+
args: {
|
|
20
|
+
title: "Music",
|
|
21
|
+
content:
|
|
22
|
+
"I'm baby air plant hashtag letterpress blue bottle. Cloud bread dreamcatcher everyday carry lumbersexual, iceland cardigan swag chicharrones lo-fi fanny pack affogato freegan XOXO shaman. Shoreditch cloud bread waistcoat tbh XOXO. Chillwave pour-over umami pug glossier health goth.",
|
|
23
|
+
id: "music-accordion",
|
|
24
|
+
open: false,
|
|
25
|
+
},
|
|
26
|
+
argTypes: {
|
|
27
|
+
title: {
|
|
28
|
+
description: "The accordion title, shown as the toggle",
|
|
29
|
+
control: "text",
|
|
30
|
+
type: {
|
|
31
|
+
name: "string",
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
content: {
|
|
36
|
+
description: "Content.",
|
|
37
|
+
control: "text",
|
|
38
|
+
type: {
|
|
39
|
+
name: "string",
|
|
40
|
+
required: true,
|
|
41
|
+
},
|
|
42
|
+
table: { type: { summary: "WysiwygText" } },
|
|
43
|
+
},
|
|
44
|
+
id: {
|
|
45
|
+
description: "The AccordionItem id",
|
|
46
|
+
type: {
|
|
47
|
+
name: "string",
|
|
48
|
+
required: true,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
open: {
|
|
52
|
+
description: "Option to set the accordion as open by default.",
|
|
53
|
+
type: "boolean",
|
|
54
|
+
table: {
|
|
55
|
+
defaultValue: { summary: "false" },
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default meta
|
|
62
|
+
type Story = StoryObj<AccordionItemType>
|
|
63
|
+
|
|
64
|
+
export const AccordionItem: Story = {}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Open by default accordion.
|
|
68
|
+
*/
|
|
69
|
+
export const Open: Story = {
|
|
70
|
+
args: {
|
|
71
|
+
open: true,
|
|
72
|
+
id: "open-accordion-item",
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* A special version that is only collapsed on mobile viewports (used in the [Filters](/?path=/docs/component-filters--docs)).
|
|
78
|
+
* It requires the `AccordionMobile` custom element javascript, to toggle the `[open]` attributes based on viewport/resize.
|
|
79
|
+
*/
|
|
80
|
+
export const MobileOnly: Story = {
|
|
81
|
+
render: args => AccordionMobile({ ...args }),
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* A variant which used a Div rather than the HTML Details elements (should be avoided).
|
|
86
|
+
* It requires the `AccordionDiv` custom element javascript.
|
|
87
|
+
*/
|
|
88
|
+
export const Div: Story = {
|
|
89
|
+
render: args => AccordionDiv({ ...args }),
|
|
90
|
+
}
|
|
@@ -8,11 +8,7 @@ const AccordionContent = ({ children }: PropsWithChildren): JSX.Element => {
|
|
|
8
8
|
<div
|
|
9
9
|
role="region"
|
|
10
10
|
aria-labelledby={id}
|
|
11
|
-
className={classNames(
|
|
12
|
-
"mx-accordion__content",
|
|
13
|
-
"mx-rich-text",
|
|
14
|
-
"mx-vertical-flow",
|
|
15
|
-
)}
|
|
11
|
+
className={classNames("mx-accordion__content", "mx-rich-text", "mx-vertical-flow")}
|
|
16
12
|
// @ts-expect-error inert is allowed.
|
|
17
13
|
inert={!on ? "" : null}
|
|
18
14
|
>
|
|
@@ -6,10 +6,7 @@ type AccordionTitleProps = PropsWithChildren & {
|
|
|
6
6
|
headingLevel?: HeadingTypes
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
const AccordionTitle = ({
|
|
10
|
-
children,
|
|
11
|
-
headingLevel = null,
|
|
12
|
-
}: AccordionTitleProps): JSX.Element => {
|
|
9
|
+
const AccordionTitle = ({ children, headingLevel = null }: AccordionTitleProps): JSX.Element => {
|
|
13
10
|
const { id, on, toggle } = useAccordion()
|
|
14
11
|
const Heading = headingLevel ? headingLevel : Fragment
|
|
15
12
|
|
|
@@ -73,7 +73,7 @@ export default class Accordion extends HTMLElement {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
customElements.define("mx-accordion", Accordion)
|
|
76
|
+
if (!customElements.get("mx-accordion")) customElements.define("mx-accordion", Accordion)
|
|
77
77
|
|
|
78
78
|
declare global {
|
|
79
79
|
interface HTMLElementTagNameMap {
|
|
@@ -37,11 +37,7 @@ export default class AccordionDiv extends HTMLElement {
|
|
|
37
37
|
this.controller.abort()
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
attributeChangedCallback(
|
|
41
|
-
name: string,
|
|
42
|
-
oldValue: string,
|
|
43
|
-
newValue: string,
|
|
44
|
-
): void {
|
|
40
|
+
attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
|
|
45
41
|
const isClosed = newValue === null
|
|
46
42
|
this.content?.toggleAttribute("inert", isClosed)
|
|
47
43
|
}
|
|
@@ -54,8 +50,7 @@ export default class AccordionDiv extends HTMLElement {
|
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
get trigger(): HTMLButtonElement {
|
|
57
|
-
const trigger: HTMLButtonElement | null =
|
|
58
|
-
this.querySelector(":scope > button")
|
|
53
|
+
const trigger: HTMLButtonElement | null = this.querySelector(":scope > button")
|
|
59
54
|
if (!trigger) {
|
|
60
55
|
throw new Error(`${this.localName} must contain a <button> element.`)
|
|
61
56
|
}
|
|
@@ -66,15 +61,13 @@ export default class AccordionDiv extends HTMLElement {
|
|
|
66
61
|
const content: HTMLDivElement | null | undefined = this.trigger
|
|
67
62
|
?.nextElementSibling as HTMLDivElement
|
|
68
63
|
if (!content) {
|
|
69
|
-
throw new Error(
|
|
70
|
-
`${this.localName} must contain a <div> element after the <button>.`,
|
|
71
|
-
)
|
|
64
|
+
throw new Error(`${this.localName} must contain a <div> element after the <button>.`)
|
|
72
65
|
}
|
|
73
66
|
return content
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
|
|
77
|
-
customElements.define("mx-accordiondiv", AccordionDiv)
|
|
70
|
+
if (!customElements.get("mx-accordiondiv")) customElements.define("mx-accordiondiv", AccordionDiv)
|
|
78
71
|
|
|
79
72
|
declare global {
|
|
80
73
|
interface HTMLElementTagNameMap {
|
|
@@ -53,51 +53,37 @@ export default class AccordionGroup extends HTMLElement {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
handleToggle = () => {
|
|
56
|
-
this.expandTrigger.disabled = [...this.accordions].every(
|
|
57
|
-
|
|
58
|
-
)
|
|
59
|
-
this.collapseTrigger.disabled = [...this.accordions].every(
|
|
60
|
-
details => details.open !== true,
|
|
61
|
-
)
|
|
56
|
+
this.expandTrigger.disabled = [...this.accordions].every(details => details.open === true)
|
|
57
|
+
this.collapseTrigger.disabled = [...this.accordions].every(details => details.open !== true)
|
|
62
58
|
}
|
|
63
59
|
|
|
64
60
|
get accordions(): NodeListOf<HTMLDetailsElement> | null {
|
|
65
|
-
const accordions: NodeListOf<HTMLDetailsElement> | null =
|
|
66
|
-
this.querySelectorAll("details")
|
|
61
|
+
const accordions: NodeListOf<HTMLDetailsElement> | null = this.querySelectorAll("details")
|
|
67
62
|
if (!accordions.length) {
|
|
68
|
-
throw new Error(
|
|
69
|
-
`${this.localName} must contain at least one <details> element.`,
|
|
70
|
-
)
|
|
63
|
+
throw new Error(`${this.localName} must contain at least one <details> element.`)
|
|
71
64
|
}
|
|
72
65
|
return accordions
|
|
73
66
|
}
|
|
74
67
|
|
|
75
68
|
get expandTrigger(): HTMLButtonElement | null {
|
|
76
|
-
const trigger: HTMLButtonElement | null = this.querySelector(
|
|
77
|
-
"button[data-expand]",
|
|
78
|
-
)
|
|
69
|
+
const trigger: HTMLButtonElement | null = this.querySelector("button[data-expand]")
|
|
79
70
|
if (!trigger) {
|
|
80
|
-
throw new Error(
|
|
81
|
-
`${this.localName} must contain a <button data-expand> element.`,
|
|
82
|
-
)
|
|
71
|
+
throw new Error(`${this.localName} must contain a <button data-expand> element.`)
|
|
83
72
|
}
|
|
84
73
|
return trigger
|
|
85
74
|
}
|
|
86
75
|
|
|
87
76
|
get collapseTrigger(): HTMLButtonElement | null {
|
|
88
|
-
const trigger: HTMLButtonElement | null = this.querySelector(
|
|
89
|
-
"button[data-collapse]",
|
|
90
|
-
)
|
|
77
|
+
const trigger: HTMLButtonElement | null = this.querySelector("button[data-collapse]")
|
|
91
78
|
if (!trigger) {
|
|
92
|
-
throw new Error(
|
|
93
|
-
`${this.localName} must contain a <button data-collapse> element.`,
|
|
94
|
-
)
|
|
79
|
+
throw new Error(`${this.localName} must contain a <button data-collapse> element.`)
|
|
95
80
|
}
|
|
96
81
|
return trigger
|
|
97
82
|
}
|
|
98
83
|
}
|
|
99
84
|
|
|
100
|
-
customElements.
|
|
85
|
+
if (!customElements.get("mx-accordion-group"))
|
|
86
|
+
customElements.define("mx-accordion-group", AccordionGroup)
|
|
101
87
|
|
|
102
88
|
declare global {
|
|
103
89
|
interface HTMLElementTagNameMap {
|
|
@@ -15,6 +15,7 @@ export default class AccordionMobile extends Accordion {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
connectedCallback(): void {
|
|
18
|
+
super.connectedCallback()
|
|
18
19
|
this.handleBreakpoint(this.breakpoint)
|
|
19
20
|
const { signal }: AbortController = this.controller
|
|
20
21
|
this.breakpoint.addEventListener("change", this.handleBreakpoint, {
|
|
@@ -26,9 +27,7 @@ export default class AccordionMobile extends Accordion {
|
|
|
26
27
|
this.controller.abort()
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
handleBreakpoint = ({
|
|
30
|
-
matches,
|
|
31
|
-
}: MediaQueryList | MediaQueryListEvent): void => {
|
|
30
|
+
handleBreakpoint = ({ matches }: MediaQueryList | MediaQueryListEvent): void => {
|
|
32
31
|
if (!this.details) return
|
|
33
32
|
this.details.toggleAttribute("open", !matches)
|
|
34
33
|
}
|
|
@@ -38,7 +37,8 @@ export default class AccordionMobile extends Accordion {
|
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
customElements.
|
|
40
|
+
if (!customElements.get("mx-accordionmobile"))
|
|
41
|
+
customElements.define("mx-accordionmobile", AccordionMobile)
|
|
42
42
|
|
|
43
43
|
declare global {
|
|
44
44
|
interface HTMLElementTagNameMap {
|