@pnx-mixtape/mxds 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +274 -0
- package/dist/build/Accordion.js +61 -0
- package/dist/build/Accordion.js.map +1 -0
- package/dist/build/AccordionDiv.js +62 -0
- package/dist/build/AccordionDiv.js.map +1 -0
- package/dist/build/AccordionGroup.js +85 -0
- package/dist/build/AccordionGroup.js.map +1 -0
- package/dist/build/AccordionMobile.js +31 -0
- package/dist/build/AccordionMobile.js.map +1 -0
- package/dist/build/Dialog.js +116 -0
- package/dist/build/Dialog.js.map +1 -0
- package/dist/build/DropMenu.js +132 -0
- package/dist/build/DropMenu.js.map +1 -0
- package/dist/build/GlobalToggle.js +103 -0
- package/dist/build/GlobalToggle.js.map +1 -0
- package/dist/build/InPageAlert.js +61 -0
- package/dist/build/InPageAlert.js.map +1 -0
- package/dist/build/InPageNavigation.js +92 -0
- package/dist/build/InPageNavigation.js.map +1 -0
- package/dist/build/Navigation.js +126 -0
- package/dist/build/Navigation.js.map +1 -0
- package/dist/build/Sticky.js +63 -0
- package/dist/build/Sticky.js.map +1 -0
- package/dist/build/Tabs.js +164 -0
- package/dist/build/Tabs.js.map +1 -0
- package/dist/build/accordion.css +108 -0
- package/dist/build/base.css +1000 -0
- package/dist/build/breadcrumb.css +47 -0
- package/dist/build/breakpoint-loader.js +52 -0
- package/dist/build/breakpoint-loader.js.map +1 -0
- package/dist/build/button.css +126 -0
- package/dist/build/callout.css +11 -0
- package/dist/build/card.css +135 -0
- package/dist/build/chunks/js.cookie-CiMiGxWx.js +101 -0
- package/dist/build/chunks/js.cookie-CiMiGxWx.js.map +1 -0
- package/dist/build/chunks/polyfills-CJ5uTmUJ.js +749 -0
- package/dist/build/chunks/polyfills-CJ5uTmUJ.js.map +1 -0
- package/dist/build/chunks/popover-wbPSyFRj.js +654 -0
- package/dist/build/chunks/popover-wbPSyFRj.js.map +1 -0
- package/dist/build/chunks/utilities-BIk0P2KX.js +61 -0
- package/dist/build/chunks/utilities-BIk0P2KX.js.map +1 -0
- package/dist/build/constants.css +120 -0
- package/dist/build/container-grid.css +207 -0
- package/dist/build/content-block.css +23 -0
- package/dist/build/cookie-compliance.js +122 -0
- package/dist/build/cookie-compliance.js.map +1 -0
- package/dist/build/dialog.css +98 -0
- package/dist/build/disclosure-widget.js +124 -0
- package/dist/build/disclosure-widget.js.map +1 -0
- package/dist/build/drop-menu.css +78 -0
- package/dist/build/drupal.css +74 -0
- package/dist/build/footer-menu.css +32 -0
- package/dist/build/footer.css +61 -0
- package/dist/build/form.css +589 -0
- package/dist/build/grid.css +200 -0
- package/dist/build/header.css +131 -0
- package/dist/build/hero-banner.css +62 -0
- package/dist/build/icon.css +399 -0
- package/dist/build/in-page-alert.css +94 -0
- package/dist/build/in-page-navigation.css +17 -0
- package/dist/build/index.css +4980 -0
- package/dist/build/io-loader.js +44 -0
- package/dist/build/io-loader.js.map +1 -0
- package/dist/build/keyboard.js +101 -0
- package/dist/build/keyboard.js.map +1 -0
- package/dist/build/link-list.css +72 -0
- package/dist/build/masthead.css +39 -0
- package/dist/build/nav-list.css +29 -0
- package/dist/build/navigation.css +371 -0
- package/dist/build/page.css +184 -0
- package/dist/build/pagination.css +123 -0
- package/dist/build/section.css +160 -0
- package/dist/build/sidebar.css +105 -0
- package/dist/build/sticky.css +47 -0
- package/dist/build/tabs.css +106 -0
- package/dist/build/tag.css +67 -0
- package/dist/build/tiles.css +61 -0
- package/dist/build/utilities.css +175 -0
- package/package.json +130 -0
- package/src/Atom/Background/Backgrounds.stories.ts +36 -0
- package/src/Atom/Background/__snapshots__/Backgrounds.stories.ts.snap +100 -0
- package/src/Atom/Background/_background.css +80 -0
- package/src/Atom/Background/backgrounds.twig +10 -0
- package/src/Atom/Base.mdx +76 -0
- package/src/Atom/Blockquote/_blockquote.css +7 -0
- package/src/Atom/Button/Button.stories.ts +71 -0
- package/src/Atom/Button/Button.stories.tsx +31 -0
- package/src/Atom/Button/Button.tsx +70 -0
- package/src/Atom/Button/README.md +30 -0
- package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +41 -0
- package/src/Atom/Button/__snapshots__/Button.stories.tsx.snap +17 -0
- package/src/Atom/Button/_buttons-styles.css +48 -0
- package/src/Atom/Button/_buttons.css +71 -0
- package/src/Atom/Button/button.css +2 -0
- package/src/Atom/Button/button.twig +23 -0
- package/src/Atom/DefinitionList/DefinitionList.stories.tsx +25 -0
- package/src/Atom/DefinitionList/DefinitionList.tsx +27 -0
- package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.tsx.snap +30 -0
- package/src/Atom/Heading/Heading.stories.ts +25 -0
- package/src/Atom/Heading/Heading.stories.tsx +19 -0
- package/src/Atom/Heading/Heading.tsx +44 -0
- package/src/Atom/Heading/__snapshots__/Heading.stories.ts.snap +7 -0
- package/src/Atom/Heading/__snapshots__/Heading.stories.tsx.snap +9 -0
- package/src/Atom/Heading/_headings.css +84 -0
- package/src/Atom/Heading/heading.twig +8 -0
- package/src/Atom/Icon/Icon.mdx +32 -0
- package/src/Atom/Icon/Icon.stories.ts +50 -0
- package/src/Atom/Icon/Icon.stories.tsx +44 -0
- package/src/Atom/Icon/Icon.tsx +30 -0
- package/src/Atom/Icon/README.md +7 -0
- package/src/Atom/Icon/__snapshots__/Icon.stories.ts.snap +18 -0
- package/src/Atom/Icon/__snapshots__/Icon.stories.tsx.snap +18 -0
- package/src/Atom/Icon/_extended-set.css +45 -0
- package/src/Atom/Icon/_icon.css +151 -0
- package/src/Atom/Icon/_mixin-icon.css +5 -0
- package/src/Atom/Icon/icon.css +2 -0
- package/src/Atom/Icon/icon.twig +12 -0
- package/src/Atom/Icon/images/arrow-down.svg +1 -0
- package/src/Atom/Icon/images/arrow-left.svg +1 -0
- package/src/Atom/Icon/images/arrow-right.svg +1 -0
- package/src/Atom/Icon/images/arrow-up.svg +1 -0
- package/src/Atom/Icon/images/attachment.svg +1 -0
- package/src/Atom/Icon/images/blockquote.svg +1 -0
- package/src/Atom/Icon/images/bluesky.svg +1 -0
- package/src/Atom/Icon/images/bookmark.svg +1 -0
- package/src/Atom/Icon/images/building.svg +1 -0
- package/src/Atom/Icon/images/calendar.svg +1 -0
- package/src/Atom/Icon/images/chevron-down.svg +1 -0
- package/src/Atom/Icon/images/chevron-left.svg +1 -0
- package/src/Atom/Icon/images/chevron-right.svg +1 -0
- package/src/Atom/Icon/images/chevron-up.svg +1 -0
- package/src/Atom/Icon/images/clock.svg +1 -0
- package/src/Atom/Icon/images/close.svg +1 -0
- package/src/Atom/Icon/images/collapse.svg +1 -0
- package/src/Atom/Icon/images/controls.svg +1 -0
- package/src/Atom/Icon/images/download.svg +1 -0
- package/src/Atom/Icon/images/drupal.svg +3 -0
- package/src/Atom/Icon/images/email.svg +1 -0
- package/src/Atom/Icon/images/error.svg +1 -0
- package/src/Atom/Icon/images/expand.svg +1 -0
- package/src/Atom/Icon/images/external-link.svg +1 -0
- package/src/Atom/Icon/images/facebook.svg +1 -0
- package/src/Atom/Icon/images/file.svg +1 -0
- package/src/Atom/Icon/images/globe.svg +1 -0
- package/src/Atom/Icon/images/google.svg +1 -0
- package/src/Atom/Icon/images/heart-selected.svg +1 -0
- package/src/Atom/Icon/images/heart-unselected.svg +1 -0
- package/src/Atom/Icon/images/home.svg +1 -0
- package/src/Atom/Icon/images/image.svg +1 -0
- package/src/Atom/Icon/images/info.svg +1 -0
- package/src/Atom/Icon/images/instagram.svg +1 -0
- package/src/Atom/Icon/images/link.svg +1 -0
- package/src/Atom/Icon/images/linkedin.svg +1 -0
- package/src/Atom/Icon/images/list.svg +1 -0
- package/src/Atom/Icon/images/lock.svg +1 -0
- package/src/Atom/Icon/images/login.svg +1 -0
- package/src/Atom/Icon/images/mastodon.svg +3 -0
- package/src/Atom/Icon/images/media-next.svg +1 -0
- package/src/Atom/Icon/images/media-pause.svg +1 -0
- package/src/Atom/Icon/images/media-play.svg +1 -0
- package/src/Atom/Icon/images/media-previous.svg +1 -0
- package/src/Atom/Icon/images/media-rewind.svg +1 -0
- package/src/Atom/Icon/images/media-skip.svg +1 -0
- package/src/Atom/Icon/images/media-stop.svg +1 -0
- package/src/Atom/Icon/images/menu.svg +1 -0
- package/src/Atom/Icon/images/more.svg +1 -0
- package/src/Atom/Icon/images/notification.svg +1 -0
- package/src/Atom/Icon/images/pencil.svg +1 -0
- package/src/Atom/Icon/images/phone.svg +1 -0
- package/src/Atom/Icon/images/pin.svg +1 -0
- package/src/Atom/Icon/images/print.svg +1 -0
- package/src/Atom/Icon/images/question.svg +1 -0
- package/src/Atom/Icon/images/restart.svg +1 -0
- package/src/Atom/Icon/images/search.svg +1 -0
- package/src/Atom/Icon/images/settings.svg +1 -0
- package/src/Atom/Icon/images/share.svg +1 -0
- package/src/Atom/Icon/images/star-selected.svg +1 -0
- package/src/Atom/Icon/images/star-unselected.svg +1 -0
- package/src/Atom/Icon/images/success.svg +1 -0
- package/src/Atom/Icon/images/tick.svg +1 -0
- package/src/Atom/Icon/images/trash.svg +1 -0
- package/src/Atom/Icon/images/twitter.svg +1 -0
- package/src/Atom/Icon/images/user.svg +1 -0
- package/src/Atom/Icon/images/video.svg +1 -0
- package/src/Atom/Icon/images/warning.svg +1 -0
- package/src/Atom/Icon/images/youtube.svg +1 -0
- package/src/Atom/Image/Image.stories.ts +20 -0
- package/src/Atom/Image/__snapshots__/Image.stories.ts.snap +9 -0
- package/src/Atom/Image/_image.css +29 -0
- package/src/Atom/Image/image.twig +13 -0
- package/src/Atom/Link/Link.stories.ts +37 -0
- package/src/Atom/Link/Link.stories.tsx +30 -0
- package/src/Atom/Link/Link.tsx +38 -0
- package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +17 -0
- package/src/Atom/Link/__snapshots__/Link.stories.tsx.snap +25 -0
- package/src/Atom/Link/_links.css +39 -0
- package/src/Atom/Link/link.twig +12 -0
- package/src/Atom/Media/Media.stories.ts +26 -0
- package/src/Atom/Media/Media.stories.tsx +25 -0
- package/src/Atom/Media/Media.tsx +42 -0
- package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +14 -0
- package/src/Atom/Media/__snapshots__/Media.stories.tsx.snap +18 -0
- package/src/Atom/Media/_media.css +40 -0
- package/src/Atom/Media/media.twig +18 -0
- package/src/Atom/NavList/NavList.stories.ts +15 -0
- package/src/Atom/NavList/__snapshots__/NavList.stories.ts.snap +43 -0
- package/src/Atom/NavList/nav-list.css +29 -0
- package/src/Atom/NavList/nav-list.twig +25 -0
- package/src/Atom/README.md +5 -0
- package/src/Atom/Spacing/Spacing.stories.ts +48 -0
- package/src/Atom/Spacing/__snapshots__/Spacing.stories.ts.snap +8 -0
- package/src/Atom/Spacing/_spacing.css +36 -0
- package/src/Atom/Spacing/spacing.twig +3 -0
- package/src/Atom/Table/Table.stories.ts +39 -0
- package/src/Atom/Table/TableResponsive.stories.ts +16 -0
- package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +261 -0
- package/src/Atom/Table/__snapshots__/TableResponsive.stories.ts.snap +68 -0
- package/src/Atom/Table/_table.css +72 -0
- package/src/Atom/Table/table-responsive.twig +32 -0
- package/src/Atom/Table/table.twig +30 -0
- package/src/Atom/Text/Text.stories.tsx +20 -0
- package/src/Atom/Text/Text.tsx +26 -0
- package/src/Atom/Text/TextSizes.stories.ts +25 -0
- package/src/Atom/Text/__snapshots__/Text.stories.tsx.snap +7 -0
- package/src/Atom/Text/__snapshots__/TextSizes.stories.ts.snap +63 -0
- package/src/Atom/Text/_text-align.css +13 -0
- package/src/Atom/Text/_text-sizes.css +117 -0
- package/src/Atom/Text/text-alignment.twig +5 -0
- package/src/Atom/Text/text-style.twig +1 -0
- package/src/Atom/Text/text-styles-example.twig +35 -0
- package/src/Atom/Video/Video.stories.ts +16 -0
- package/src/Atom/Video/Video.tsx +17 -0
- package/src/Atom/Video/__snapshots__/Video.stories.ts.snap +21 -0
- package/src/Atom/Video/_video.css +10 -0
- package/src/Atom/Video/video.twig +5 -0
- package/src/Atom/_animated.css +65 -0
- package/src/Atom/_base.css +62 -0
- package/src/Atom/_flow-legacy.css +48 -0
- package/src/Atom/_flow.css +53 -0
- package/src/Atom/_generic.css +93 -0
- package/src/Atom/_hr.css +10 -0
- package/src/Atom/_mixins.css +22 -0
- package/src/Atom/_print.css +20 -0
- package/src/Atom/base.css +5 -0
- package/src/Atom/images/external-link.svg +1 -0
- package/src/Component/Accordion/Accordion.stories.ts +51 -0
- package/src/Component/Accordion/Accordion.stories.tsx +22 -0
- package/src/Component/Accordion/Accordion.tsx +83 -0
- package/src/Component/Accordion/Elements/Accordion.ts +82 -0
- package/src/Component/Accordion/Elements/AccordionDiv.ts +83 -0
- package/src/Component/Accordion/Elements/AccordionGroup.ts +106 -0
- package/src/Component/Accordion/Elements/AccordionMobile.ts +47 -0
- package/src/Component/Accordion/README.md +45 -0
- package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +94 -0
- package/src/Component/Accordion/__snapshots__/Accordion.stories.tsx.snap +26 -0
- package/src/Component/Accordion/accordion-item.twig +18 -0
- package/src/Component/Accordion/accordion.css +107 -0
- package/src/Component/Accordion/accordion.twig +19 -0
- package/src/Component/Accordion/images/collapse.svg +1 -0
- package/src/Component/Accordion/images/expand.svg +1 -0
- package/src/Component/Accordion/twig/accordion-div.twig +13 -0
- package/src/Component/Accordion/twig/accordion-example.twig +36 -0
- package/src/Component/Accordion/twig/accordion-mobile.twig +15 -0
- package/src/Component/Accordion/twig/accordion-story.twig +13 -0
- package/src/Component/Author/Author.stories.tsx +18 -0
- package/src/Component/Author/Author.tsx +30 -0
- package/src/Component/Author/__snapshots__/Author.stories.tsx.snap +21 -0
- package/src/Component/Breadcrumb/Breadcrumb.stories.ts +15 -0
- package/src/Component/Breadcrumb/Breadcrumb.stories.tsx +38 -0
- package/src/Component/Breadcrumb/Breadcrumb.tsx +34 -0
- package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +26 -0
- package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.tsx.snap +60 -0
- package/src/Component/Breadcrumb/breadcrumb.css +46 -0
- package/src/Component/Breadcrumb/breadcrumb.twig +12 -0
- package/src/Component/Callout/Callout.stories.ts +29 -0
- package/src/Component/Callout/callout.css +7 -0
- package/src/Component/Callout/callout.twig +10 -0
- package/src/Component/Callout/twig/callout-story.twig +11 -0
- package/src/Component/Card/CHANGELOG.md +187 -0
- package/src/Component/Card/Card.stories.ts +106 -0
- package/src/Component/Card/Card.stories.tsx +50 -0
- package/src/Component/Card/Card.tsx +56 -0
- package/src/Component/Card/README.md +21 -0
- package/src/Component/Card/__snapshots__/Card.stories.ts.snap +186 -0
- package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +88 -0
- package/src/Component/Card/__snapshots__/CardGrid.stories.ts.snap +89 -0
- package/src/Component/Card/card-grid.twig +10 -0
- package/src/Component/Card/card.css +128 -0
- package/src/Component/Card/card.twig +45 -0
- package/src/Component/Card/twig/old-card.twig +17 -0
- package/src/Component/Card/twig/story-card.twig +29 -0
- package/src/Component/ContentBlock/ContentBlock.stories.ts +15 -0
- package/src/Component/ContentBlock/ContentBlock.stories.tsx +30 -0
- package/src/Component/ContentBlock/ContentBlock.tsx +37 -0
- package/src/Component/ContentBlock/README.md +21 -0
- package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +26 -0
- package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.tsx.snap +21 -0
- package/src/Component/ContentBlock/content-block.css +21 -0
- package/src/Component/ContentBlock/content-block.twig +12 -0
- package/src/Component/ContentBlock/twig/content-block-example.twig +7 -0
- package/src/Component/Dialog/Dialog.stories.ts +28 -0
- package/src/Component/Dialog/Dialog.stories.tsx +45 -0
- package/src/Component/Dialog/Dialog.tsx +79 -0
- package/src/Component/Dialog/Elements/Dialog.ts +145 -0
- package/src/Component/Dialog/README.md +63 -0
- package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +85 -0
- package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +39 -0
- package/src/Component/Dialog/dialog.css +85 -0
- package/src/Component/Dialog/dialog.twig +19 -0
- package/src/Component/DropMenu/Components/DropMenuContext.tsx +192 -0
- package/src/Component/DropMenu/Components/DropMenuItem.tsx +35 -0
- package/src/Component/DropMenu/DropMenu.stories.ts +36 -0
- package/src/Component/DropMenu/DropMenu.stories.tsx +24 -0
- package/src/Component/DropMenu/DropMenu.tsx +81 -0
- package/src/Component/DropMenu/Elements/DropMenu.ts +172 -0
- package/src/Component/DropMenu/README.md +11 -0
- package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +32 -0
- package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +47 -0
- package/src/Component/DropMenu/drop-menu.css +68 -0
- package/src/Component/DropMenu/drop-menu.twig +27 -0
- package/src/Component/DropMenu/polyfills.js +28 -0
- package/src/Component/HeroBanner/HeroBanner.stories.ts +75 -0
- package/src/Component/HeroBanner/HeroBanner.stories.tsx +30 -0
- package/src/Component/HeroBanner/HeroBanner.tsx +50 -0
- package/src/Component/HeroBanner/__snapshots__/PageTitle.stories.ts.snap +31 -0
- package/src/Component/HeroBanner/__snapshots__/PageTitle.stories.tsx.snap +36 -0
- package/src/Component/HeroBanner/hero-banner.css +51 -0
- package/src/Component/HeroBanner/hero-banner.twig +41 -0
- package/src/Component/HeroBanner/twig/hero-banner-story.twig +19 -0
- package/src/Component/InPageAlert/Elements/InPageAlert.ts +87 -0
- package/src/Component/InPageAlert/InPageAlert.stories.ts +35 -0
- package/src/Component/InPageAlert/InPageAlert.stories.tsx +43 -0
- package/src/Component/InPageAlert/InPageAlert.tsx +50 -0
- package/src/Component/InPageAlert/README.md +27 -0
- package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +43 -0
- package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.tsx.snap +69 -0
- package/src/Component/InPageAlert/in-page-alert.css +89 -0
- package/src/Component/InPageAlert/in-page-alert.twig +18 -0
- package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +125 -0
- package/src/Component/InPageNavigation/Hooks/useInPageNavigation.ts +45 -0
- package/src/Component/InPageNavigation/InPageNavigation.stories.ts +16 -0
- package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +86 -0
- package/src/Component/InPageNavigation/InPageNavigation.tsx +38 -0
- package/src/Component/InPageNavigation/README.md +30 -0
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +73 -0
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +149 -0
- package/src/Component/InPageNavigation/in-page-navigation.css +17 -0
- package/src/Component/InPageNavigation/in-page-navigation.twig +17 -0
- package/src/Component/InPageNavigation/twig/in-page-navigation-content-example.twig +16 -0
- package/src/Component/InPageNavigation/twig/in-page-navigation-menu-example.twig +6 -0
- package/src/Component/LinkList/LinkList.stories.ts +29 -0
- package/src/Component/LinkList/LinkList.stories.tsx +29 -0
- package/src/Component/LinkList/LinkList.tsx +43 -0
- package/src/Component/LinkList/README.md +19 -0
- package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +58 -0
- package/src/Component/LinkList/__snapshots__/LinkList.stories.tsx.snap +53 -0
- package/src/Component/LinkList/link-list.css +68 -0
- package/src/Component/LinkList/link-list.twig +12 -0
- package/src/Component/ListItem/Teaser.stories.tsx +34 -0
- package/src/Component/ListItem/Teaser.tsx +54 -0
- package/src/Component/ListItem/__snapshots__/Teaser.stories.tsx.snap +32 -0
- package/src/Component/Navigation/Collapsible.stories.ts +16 -0
- package/src/Component/Navigation/Components/DropdownLevel.tsx +107 -0
- package/src/Component/Navigation/Dropdown.stories.ts +16 -0
- package/src/Component/Navigation/Dropdown.stories.tsx +46 -0
- package/src/Component/Navigation/Dropdown.tsx +39 -0
- package/src/Component/Navigation/Elements/Navigation.ts +174 -0
- package/src/Component/Navigation/MegaNav.stories.ts +16 -0
- package/src/Component/Navigation/Navigation.stories.ts +15 -0
- package/src/Component/Navigation/Navigation.stories.tsx +40 -0
- package/src/Component/Navigation/Navigation.tsx +51 -0
- package/src/Component/Navigation/README.md +17 -0
- package/src/Component/Navigation/__snapshots__/Collapsible.stories.ts.snap +123 -0
- package/src/Component/Navigation/__snapshots__/Dropdown.stories.ts.snap +125 -0
- package/src/Component/Navigation/__snapshots__/Dropdown.stories.tsx.snap +39 -0
- package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +25 -0
- package/src/Component/Navigation/__snapshots__/Navigation.stories.tsx.snap +61 -0
- package/src/Component/Navigation/_navigation-collapsible.css +72 -0
- package/src/Component/Navigation/_navigation-dropdown.css +152 -0
- package/src/Component/Navigation/_navigation-mega.css +51 -0
- package/src/Component/Navigation/_navigation.css +55 -0
- package/src/Component/Navigation/navigation-collapsible.twig +7 -0
- package/src/Component/Navigation/navigation-dropdown.twig +7 -0
- package/src/Component/Navigation/navigation-mega-nav.twig +7 -0
- package/src/Component/Navigation/navigation.css +4 -0
- package/src/Component/Navigation/navigation.twig +9 -0
- package/src/Component/Navigation/twig/navigation-subnav-list.twig +108 -0
- package/src/Component/Pagination/Components/PaginationContext.tsx +188 -0
- package/src/Component/Pagination/Components/PaginationItem.tsx +48 -0
- package/src/Component/Pagination/Pagination.stories.ts +15 -0
- package/src/Component/Pagination/Pagination.stories.tsx +25 -0
- package/src/Component/Pagination/Pagination.tsx +75 -0
- package/src/Component/Pagination/README.md +19 -0
- package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +58 -0
- package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +57 -0
- package/src/Component/Pagination/pagination.css +112 -0
- package/src/Component/Pagination/pagination.twig +44 -0
- package/src/Component/SocialShare/SocialShare.stories.tsx +26 -0
- package/src/Component/SocialShare/SocialShare.tsx +53 -0
- package/src/Component/SocialShare/__snapshots__/SocialShare.stories.tsx.snap +25 -0
- package/src/Component/Sticky/Elements/Sticky.ts +93 -0
- package/src/Component/Sticky/README.md +23 -0
- package/src/Component/Sticky/Sticky.stories.ts +16 -0
- package/src/Component/Sticky/Sticky.stories.tsx +14 -0
- package/src/Component/Sticky/Sticky.tsx +34 -0
- package/src/Component/Sticky/__snapshots__/Sticky.stories.ts.snap +86 -0
- package/src/Component/Sticky/__snapshots__/Sticky.stories.tsx.snap +11 -0
- package/src/Component/Sticky/sticky.css +39 -0
- package/src/Component/Sticky/sticky.twig +21 -0
- package/src/Component/Sticky/twig/sticky-example.twig +4 -0
- package/src/Component/Tabs/Components/Tab.tsx +45 -0
- package/src/Component/Tabs/Components/TabDropMenu.tsx +14 -0
- package/src/Component/Tabs/Components/TabList.tsx +9 -0
- package/src/Component/Tabs/Components/TabPanel.tsx +32 -0
- package/src/Component/Tabs/Elements/Tabs.ts +213 -0
- package/src/Component/Tabs/README.md +23 -0
- package/src/Component/Tabs/Tabs.stories.ts +22 -0
- package/src/Component/Tabs/Tabs.stories.tsx +51 -0
- package/src/Component/Tabs/Tabs.tsx +100 -0
- package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +144 -0
- package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +120 -0
- package/src/Component/Tabs/tabs.css +103 -0
- package/src/Component/Tabs/tabs.twig +49 -0
- package/src/Component/Tabs/twig/panel.twig +5 -0
- package/src/Component/Tabs/twig/tab-list.twig +26 -0
- package/src/Component/Tag/README.md +19 -0
- package/src/Component/Tag/Tag.stories.ts +54 -0
- package/src/Component/Tag/Tag.stories.tsx +13 -0
- package/src/Component/Tag/Tag.tsx +19 -0
- package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +64 -0
- package/src/Component/Tag/__snapshots__/Tag.stories.tsx.snap +7 -0
- package/src/Component/Tag/tag.css +57 -0
- package/src/Component/Tag/tags.twig +23 -0
- package/src/Component/Tile/README.md +3 -0
- package/src/Component/Tile/Tile.stories.ts +23 -0
- package/src/Component/Tile/Tile.stories.tsx +30 -0
- package/src/Component/Tile/Tile.tsx +40 -0
- package/src/Component/Tile/__snapshots__/Tile.stories.ts.snap +83 -0
- package/src/Component/Tile/__snapshots__/Tile.stories.tsx.snap +38 -0
- package/src/Component/Tile/tile.twig +10 -0
- package/src/Component/Tile/tiles.css +58 -0
- package/src/Component/Tile/twig/tiles.twig +18 -0
- package/src/Form/Checkbox/Checkboxes.stories.ts +47 -0
- package/src/Form/Checkbox/FormCheckbox.stories.tsx +32 -0
- package/src/Form/Checkbox/FormCheckbox.tsx +124 -0
- package/src/Form/Checkbox/__snapshots__/Checkboxes.stories.ts.snap +115 -0
- package/src/Form/Checkbox/input-checkbox-single.twig +6 -0
- package/src/Form/Checkbox/input-checkbox.twig +24 -0
- package/src/Form/Description/Description.stories.ts +16 -0
- package/src/Form/Description/ErrorMessage.stories.ts +16 -0
- package/src/Form/Description/FormDescription.stories.tsx +14 -0
- package/src/Form/Description/FormDescription.tsx +28 -0
- package/src/Form/Description/__snapshots__/Description.stories.ts.snap +17 -0
- package/src/Form/Description/__snapshots__/ErrorMessage.stories.ts.snap +20 -0
- package/src/Form/Description/__snapshots__/FormDescription.stories.tsx.snap +10 -0
- package/src/Form/Description/form-description.twig +3 -0
- package/src/Form/Description/form-error.twig +5 -0
- package/src/Form/Fieldset/Fieldset.stories.ts +34 -0
- package/src/Form/Fieldset/__snapshots__/Fieldset.stories.ts.snap +23 -0
- package/src/Form/Fieldset/fieldset.twig +4 -0
- package/src/Form/Form/Form.stories.tsx +10 -0
- package/src/Form/Form/Form.tsx +9 -0
- package/src/Form/Form/FormTitle.stories.tsx +14 -0
- package/src/Form/Form/FormTitle.tsx +12 -0
- package/src/Form/Form/__snapshots__/Form.stories.tsx.snap +6 -0
- package/src/Form/Form/__snapshots__/FormTitle.stories.tsx.snap +9 -0
- package/src/Form/Form/twig/form-example.twig +13 -0
- package/src/Form/Item/FormItem.stories.tsx +58 -0
- package/src/Form/Item/FormItem.tsx +26 -0
- package/src/Form/Item/__snapshots__/FormItem.stories.tsx.snap +102 -0
- package/src/Form/Label/FormLabel.stories.tsx +20 -0
- package/src/Form/Label/FormLabel.tsx +19 -0
- package/src/Form/Label/Label.stories.ts +34 -0
- package/src/Form/Label/__snapshots__/FormLabel.stories.tsx.snap +16 -0
- package/src/Form/Label/__snapshots__/Label.stories.ts.snap +23 -0
- package/src/Form/Label/label.twig +2 -0
- package/src/Form/README.md +11 -0
- package/src/Form/Radio/FormRadio.stories.tsx +37 -0
- package/src/Form/Radio/FormRadio.tsx +80 -0
- package/src/Form/Radio/Radios.stories.ts +47 -0
- package/src/Form/Radio/__snapshots__/Radios.stories.ts.snap +125 -0
- package/src/Form/Radio/input-radio.twig +24 -0
- package/src/Form/Search/TextInputWithInlineButton.stories.ts +16 -0
- package/src/Form/Search/__snapshots__/TextInputWithInlineButton.stories.ts.snap +26 -0
- package/src/Form/Search/input-text-inline-submit.twig +8 -0
- package/src/Form/Select/FormSelect.stories.tsx +34 -0
- package/src/Form/Select/FormSelect.tsx +67 -0
- package/src/Form/Select/Select.stories.ts +40 -0
- package/src/Form/Select/__snapshots__/FormSelect.stories.tsx.snap +23 -0
- package/src/Form/Select/__snapshots__/Select.stories.ts.snap +148 -0
- package/src/Form/Select/select.twig +16 -0
- package/src/Form/TextInput/FormText.stories.tsx +15 -0
- package/src/Form/TextInput/FormText.tsx +55 -0
- package/src/Form/TextInput/InputDivider.stories.ts +16 -0
- package/src/Form/TextInput/TextInput.stories.ts +57 -0
- package/src/Form/TextInput/TextInputWithIcon.stories.ts +40 -0
- package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +13 -0
- package/src/Form/TextInput/__snapshots__/InputDivider.stories.ts.snap +32 -0
- package/src/Form/TextInput/__snapshots__/TextInput.stories.ts.snap +101 -0
- package/src/Form/TextInput/__snapshots__/TextInputWithIcon.stories.ts.snap +67 -0
- package/src/Form/TextInput/input-divider.twig +11 -0
- package/src/Form/TextInput/input-text-icon.twig +7 -0
- package/src/Form/TextInput/input-text.twig +5 -0
- package/src/Form/Textarea/FormTextarea.stories.tsx +14 -0
- package/src/Form/Textarea/FormTextarea.tsx +53 -0
- package/src/Form/Textarea/Textarea.stories.ts +16 -0
- package/src/Form/Textarea/__snapshots__/FormTextarea.stories.tsx.snap +12 -0
- package/src/Form/Textarea/__snapshots__/Textarea.stories.ts.snap +19 -0
- package/src/Form/Textarea/textarea.twig +5 -0
- package/src/Form/form.css +479 -0
- package/src/Form/images/checkmark.svg +1 -0
- package/src/Form/images/form-chevron-down.svg +1 -0
- package/src/Form/images/form-error.svg +1 -0
- package/src/Form/images/form-success.svg +1 -0
- package/src/Layout/Footer/Footer.stories.ts +15 -0
- package/src/Layout/Footer/Footer.stories.tsx +42 -0
- package/src/Layout/Footer/Footer.tsx +55 -0
- package/src/Layout/Footer/FooterMenu/FooterMenu.stories.ts +15 -0
- package/src/Layout/Footer/FooterMenu/__snapshots__/FooterMenu.stories.ts.snap +101 -0
- package/src/Layout/Footer/FooterMenu/footer-menu.css +29 -0
- package/src/Layout/Footer/FooterMenu/footer-menu.twig +5 -0
- package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +139 -0
- package/src/Layout/Footer/__snapshots__/Footer.stories.tsx.snap +70 -0
- package/src/Layout/Footer/footer.css +54 -0
- package/src/Layout/Footer/footer.twig +25 -0
- package/src/Layout/Grid/Grid.stories.ts +68 -0
- package/src/Layout/Grid/Grid.stories.tsx +125 -0
- package/src/Layout/Grid/Grid.tsx +51 -0
- package/src/Layout/Grid/__snapshots__/Grid.stories.ts.snap +103 -0
- package/src/Layout/Grid/__snapshots__/Grid.stories.tsx.snap +67 -0
- package/src/Layout/Grid/container-grid.css +190 -0
- package/src/Layout/Grid/grid-item.twig +16 -0
- package/src/Layout/Grid/grid.css +190 -0
- package/src/Layout/Grid/grid.twig +10 -0
- package/src/Layout/Grid/twig/container-grid-dynamic.twig +47 -0
- package/src/Layout/Grid/twig/container-grid.twig +46 -0
- package/src/Layout/Grid/twig/grid-story.twig +6 -0
- package/src/Layout/Grid/twig/old-grid.twig +46 -0
- package/src/Layout/Header/Components/GlobalToggle.tsx +35 -0
- package/src/Layout/Header/Components/Logo.tsx +17 -0
- package/src/Layout/Header/Elements/GlobalToggle.ts +137 -0
- package/src/Layout/Header/Header.stories.ts +18 -0
- package/src/Layout/Header/Header.stories.tsx +17 -0
- package/src/Layout/Header/Header.tsx +73 -0
- package/src/Layout/Header/Stacked/Stacked.stories.ts +16 -0
- package/src/Layout/Header/Stacked/__snapshots__/Stacked.stories.ts.snap +353 -0
- package/src/Layout/Header/Stacked/header-stacked.twig +33 -0
- package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +157 -0
- package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +55 -0
- package/src/Layout/Header/_header.css +89 -0
- package/src/Layout/Header/_toggles.css +31 -0
- package/src/Layout/Header/header.css +2 -0
- package/src/Layout/Header/header.twig +24 -0
- package/src/Layout/Header/twig/global-header.twig +4 -0
- package/src/Layout/Header/twig/logo.twig +3 -0
- package/src/Layout/Masthead/Masthead.stories.ts +16 -0
- package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +32 -0
- package/src/Layout/Masthead/masthead.css +36 -0
- package/src/Layout/Masthead/masthead.twig +10 -0
- package/src/Layout/Page/Page.stories.tsx +22 -0
- package/src/Layout/Page/Page.tsx +16 -0
- package/src/Layout/Page/README.md +19 -0
- package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +80 -0
- package/src/Layout/Page/page.css +150 -0
- package/src/Layout/Page/page.twig +3 -0
- package/src/Layout/README.md +19 -0
- package/src/Layout/Section/Background.stories.ts +25 -0
- package/src/Layout/Section/Breakouts.stories.ts +16 -0
- package/src/Layout/Section/Flow.stories.ts +16 -0
- package/src/Layout/Section/Section.stories.ts +63 -0
- package/src/Layout/Section/Section.stories.tsx +56 -0
- package/src/Layout/Section/Section.tsx +83 -0
- package/src/Layout/Section/SectionGrid.stories.tsx +53 -0
- package/src/Layout/Section/SectionGrid.tsx +71 -0
- package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +19 -0
- package/src/Layout/Section/__snapshots__/Section.stories.tsx.snap +37 -0
- package/src/Layout/Section/__snapshots__/SectionBackground.stories.ts.snap +55 -0
- package/src/Layout/Section/__snapshots__/SectionGrid.stories.tsx.snap +37 -0
- package/src/Layout/Section/__snapshots__/SectionsBreakouts.stories.ts.snap +78 -0
- package/src/Layout/Section/__snapshots__/SectionsFlowsGroups.stories.ts.snap +89 -0
- package/src/Layout/Section/section.css +156 -0
- package/src/Layout/Section/section.twig +25 -0
- package/src/Layout/Section/twig/section-background.twig +12 -0
- package/src/Layout/Section/twig/section-story.twig +14 -0
- package/src/Layout/Section/twig/sections-breakout.twig +38 -0
- package/src/Layout/Section/twig/sections-flow.twig +51 -0
- package/src/Layout/Section/twig/sections-stacked.twig +28 -0
- package/src/Layout/Sidebar/Sidebar.stories.ts +35 -0
- package/src/Layout/Sidebar/Sidebar.stories.tsx +33 -0
- package/src/Layout/Sidebar/Sidebar.tsx +34 -0
- package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +40 -0
- package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.tsx.snap +47 -0
- package/src/Layout/Sidebar/sidebar.css +69 -0
- package/src/Layout/Sidebar/sidebar.twig +17 -0
- package/src/Layout/images/mixtape-logo.png +0 -0
- package/src/Utility/Context/ImageComponent.tsx +49 -0
- package/src/Utility/Context/LinkComponent.tsx +57 -0
- package/src/Utility/Drupal/README.md +9 -0
- package/src/Utility/Drupal/drupal.css +66 -0
- package/src/Utility/Drupal/twig/local-tasks.twig +17 -0
- package/src/Utility/Drupal/twig/login-form.twig +22 -0
- package/src/Utility/Elements/breakpoint-loader.ts +79 -0
- package/src/Utility/Elements/cookie-compliance.ts +174 -0
- package/src/Utility/Elements/disclosure-widget.ts +173 -0
- package/src/Utility/Elements/io-loader.ts +57 -0
- package/src/Utility/Elements/keyboard.ts +150 -0
- package/src/Utility/Hooks/useLocalStorage.ts +78 -0
- package/src/Utility/Hooks/useMediaQuery.ts +31 -0
- package/src/Utility/Hooks/useToggle.ts +17 -0
- package/src/Utility/Hooks/useUrlParams.ts +24 -0
- package/src/Utility/README.md +15 -0
- package/src/Utility/_layout-utils.css +78 -0
- package/src/Utility/global.d.ts +25 -0
- package/src/Utility/utilities.css +88 -0
- package/src/Utility/utilities.ts +163 -0
- package/src/_custom-media.css +33 -0
- package/src/constants.css +118 -0
- package/src/elements.ts +13 -0
- package/src/enums.ts +260 -0
- package/src/index.css +27 -0
- package/src/react.ts +68 -0
- package/src/tokens.js +119 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DialogBase
|
|
3
|
+
* @file Support opening/closing, and adding a scroll lock to the body.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { makeAnchor, createElement } from "../../../Utility/utilities"
|
|
7
|
+
|
|
8
|
+
export default class InPageNavigation extends HTMLElement {
|
|
9
|
+
internals_: ElementInternals
|
|
10
|
+
controller: AbortController
|
|
11
|
+
headingLevels: string
|
|
12
|
+
items: { link: HTMLAnchorElement; heading: HTMLHeadingElement }[]
|
|
13
|
+
active: { link: HTMLAnchorElement; heading: HTMLHeadingElement } | undefined
|
|
14
|
+
|
|
15
|
+
constructor() {
|
|
16
|
+
super()
|
|
17
|
+
this.internals_ = this.attachInternals()
|
|
18
|
+
this.controller = new AbortController()
|
|
19
|
+
this.headingLevels = this.dataset?.headings || "h2"
|
|
20
|
+
this.items = []
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
connectedCallback(): void {
|
|
24
|
+
if (!this.menu || !this.headings) return
|
|
25
|
+
|
|
26
|
+
this.headings.forEach((heading: HTMLHeadingElement) => {
|
|
27
|
+
const listItem: HTMLLIElement = this.generateListItem(heading)
|
|
28
|
+
const link: HTMLAnchorElement = this.generateAnchor(heading)
|
|
29
|
+
this.items.push({ link, heading })
|
|
30
|
+
listItem.appendChild(link)
|
|
31
|
+
this.menu?.appendChild(listItem)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const { signal }: AbortController = this.controller
|
|
35
|
+
|
|
36
|
+
// Open on toggle click.
|
|
37
|
+
this.menu.addEventListener(
|
|
38
|
+
"click",
|
|
39
|
+
(e: MouseEvent): void => {
|
|
40
|
+
const { target } = e
|
|
41
|
+
if (!(target instanceof HTMLAnchorElement)) return
|
|
42
|
+
this.handleClick(target)
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
signal,
|
|
46
|
+
},
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
disconnectedCallback(): void {
|
|
51
|
+
if (!this.menu || !this.headings) return
|
|
52
|
+
this.menu.textContent = ""
|
|
53
|
+
this.items = []
|
|
54
|
+
this.controller.abort()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
handleClick = (target: EventTarget | null): void => {
|
|
58
|
+
this.active = this.items.find(item => item.link === target)
|
|
59
|
+
if (!this.links || !this.active) return
|
|
60
|
+
this.links.forEach(link => link.classList.remove("is-active"))
|
|
61
|
+
this.active.link.classList.add("is-active")
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
get menu(): HTMLUListElement | HTMLOListElement | null {
|
|
65
|
+
const menu: HTMLUListElement | HTMLOListElement | null =
|
|
66
|
+
this.querySelector("ul, ol")
|
|
67
|
+
if (!menu) {
|
|
68
|
+
throw new Error(`${this.localName} must contain a <ul> or <ol> element.`)
|
|
69
|
+
}
|
|
70
|
+
return menu
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
get container(): HTMLElement | null {
|
|
74
|
+
const selector: string | null = this.getAttribute("data-content")
|
|
75
|
+
if (!selector) {
|
|
76
|
+
throw new Error(
|
|
77
|
+
`${this.localName} must have a [data-content] attribute that contains the content selector.`,
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
return this.closest(selector) || this.parentElement.querySelector(selector)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
get headings(): NodeListOf<HTMLHeadingElement> | undefined {
|
|
84
|
+
return this.container?.querySelectorAll(this.headingLevels)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
get links(): NodeListOf<HTMLAnchorElement> | undefined {
|
|
88
|
+
return this.menu?.querySelectorAll("a")
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
generatedId(heading: HTMLHeadingElement): string {
|
|
92
|
+
const string: string | undefined = heading?.textContent?.trim()
|
|
93
|
+
return !string ? "" : makeAnchor(string)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
generateAnchor(heading: HTMLHeadingElement): HTMLAnchorElement {
|
|
97
|
+
const { textContent, id } = heading
|
|
98
|
+
const linkText: string | null =
|
|
99
|
+
heading.getAttribute("data-in-page-navigation-title") || textContent
|
|
100
|
+
const targetID: string = id || this.generatedId(heading)
|
|
101
|
+
if (!id) heading.id = targetID
|
|
102
|
+
const item: Element = createElement(
|
|
103
|
+
`<a href="#${targetID}" class="icon icon--chevron-right">${linkText}</a>`,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
return item as HTMLAnchorElement
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
generateListItem(heading: HTMLHeadingElement): HTMLLIElement {
|
|
110
|
+
const { tagName } = heading
|
|
111
|
+
const item: Element = createElement(
|
|
112
|
+
`<li class="in-page-navigation__level--${tagName.toLowerCase()}"></li>`,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
return item as HTMLLIElement
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
customElements.define("mx-in-page-navigation", InPageNavigation)
|
|
120
|
+
|
|
121
|
+
declare global {
|
|
122
|
+
interface HTMLElementTagNameMap {
|
|
123
|
+
"mx-in-page-navigation": InPageNavigation
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { RefObject, useState, useEffect } from "react"
|
|
2
|
+
import { makeAnchor } from "../../../Utility/utilities"
|
|
3
|
+
|
|
4
|
+
type HeadingType = {
|
|
5
|
+
text: string
|
|
6
|
+
id: string
|
|
7
|
+
level: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type UseInPageNavigationProps = {
|
|
11
|
+
ref?: RefObject<HTMLElement>
|
|
12
|
+
levels?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const useInPageNavigation = ({
|
|
16
|
+
ref = null,
|
|
17
|
+
levels = "h2, h3",
|
|
18
|
+
}: UseInPageNavigationProps): { headings: HeadingType[] } => {
|
|
19
|
+
const [headings, setHeadings] = useState<HeadingType[]>([])
|
|
20
|
+
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (typeof window === "undefined") return
|
|
23
|
+
const context = ref?.current || document.querySelector("section")
|
|
24
|
+
const headingElements: Element[] = [...context.querySelectorAll(levels)]
|
|
25
|
+
|
|
26
|
+
const values: HeadingType[] = headingElements.map(
|
|
27
|
+
({ textContent: text, id, localName }: Element) =>
|
|
28
|
+
({
|
|
29
|
+
id: id || makeAnchor(text),
|
|
30
|
+
text: text,
|
|
31
|
+
level: localName,
|
|
32
|
+
}) as HeadingType,
|
|
33
|
+
)
|
|
34
|
+
setHeadings([...new Set(values)])
|
|
35
|
+
headingElements.forEach(
|
|
36
|
+
(heading: HTMLHeadingElement, index: number): void => {
|
|
37
|
+
if (!heading.id) heading.id = values[index].id
|
|
38
|
+
},
|
|
39
|
+
)
|
|
40
|
+
}, [ref, levels])
|
|
41
|
+
|
|
42
|
+
return { headings }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default useInPageNavigation
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/html"
|
|
2
|
+
import Component from "./in-page-navigation.twig"
|
|
3
|
+
import "./in-page-navigation.css"
|
|
4
|
+
import "./Elements/InPageNavigation"
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof Component> = {
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
component: Component,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default meta
|
|
12
|
+
type Story = StoryObj<typeof meta>
|
|
13
|
+
|
|
14
|
+
export const InPageNavigation: Story = {
|
|
15
|
+
args: {},
|
|
16
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import Heading from "../../Atom/Heading/Heading"
|
|
3
|
+
import Text from "../../Atom/Text/Text"
|
|
4
|
+
import Component from "./InPageNavigation"
|
|
5
|
+
import Sidebar from "../../Layout/Sidebar/Sidebar"
|
|
6
|
+
import "./in-page-navigation.css"
|
|
7
|
+
import { HeadingLevels } from "../../enums"
|
|
8
|
+
|
|
9
|
+
const meta: Meta<typeof Component> = {
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
component: Component,
|
|
12
|
+
render: () => (
|
|
13
|
+
<Sidebar before sidebar={<Component />}>
|
|
14
|
+
<div className="vertical-flow">
|
|
15
|
+
<Heading level={HeadingLevels.TWO}>Section 1</Heading>
|
|
16
|
+
<Text>
|
|
17
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
18
|
+
commonly used to demonstrate the visual form of a document without
|
|
19
|
+
relying on meaningful content. Replacing the actual content with
|
|
20
|
+
placeholder text allows designers to design the form of the content
|
|
21
|
+
before the content itself has been produced.
|
|
22
|
+
</Text>
|
|
23
|
+
<Heading level={HeadingLevels.TWO} id="anchor-test">
|
|
24
|
+
Section 2
|
|
25
|
+
</Heading>
|
|
26
|
+
<Text>
|
|
27
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
28
|
+
commonly used to demonstrate the visual form of a document without
|
|
29
|
+
relying on meaningful content. Replacing the actual content with
|
|
30
|
+
placeholder text allows designers to design the form of the content
|
|
31
|
+
before the content itself has been produced.
|
|
32
|
+
</Text>
|
|
33
|
+
<Heading level={HeadingLevels.THREE}>Test level 3</Heading>
|
|
34
|
+
<Text>
|
|
35
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
36
|
+
commonly used to demonstrate the visual form of a document without
|
|
37
|
+
relying on meaningful content. Replacing the actual content with
|
|
38
|
+
placeholder text allows designers to design the form of the content
|
|
39
|
+
before the content itself has been produced.
|
|
40
|
+
</Text>
|
|
41
|
+
<Heading level={HeadingLevels.TWO}>Section 3</Heading>
|
|
42
|
+
<Text>
|
|
43
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
44
|
+
commonly used to demonstrate the visual form of a document without
|
|
45
|
+
relying on meaningful content. Replacing the actual content with
|
|
46
|
+
placeholder text allows designers to design the form of the content
|
|
47
|
+
before the content itself has been produced.
|
|
48
|
+
</Text>
|
|
49
|
+
<Heading level={HeadingLevels.TWO}>Section 4</Heading>
|
|
50
|
+
<Text>
|
|
51
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
52
|
+
commonly used to demonstrate the visual form of a document without
|
|
53
|
+
relying on meaningful content. Replacing the actual content with
|
|
54
|
+
placeholder text allows designers to design the form of the content
|
|
55
|
+
before the content itself has been produced.
|
|
56
|
+
</Text>
|
|
57
|
+
<Heading level={HeadingLevels.TWO}>Section 5</Heading>
|
|
58
|
+
<Text>
|
|
59
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
60
|
+
commonly used to demonstrate the visual form of a document without
|
|
61
|
+
relying on meaningful content. Replacing the actual content with
|
|
62
|
+
placeholder text allows designers to design the form of the content
|
|
63
|
+
before the content itself has been produced.
|
|
64
|
+
</Text>
|
|
65
|
+
<Heading level={HeadingLevels.THREE}>Test level 6</Heading>
|
|
66
|
+
<Text>
|
|
67
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
68
|
+
commonly used to demonstrate the visual form of a document without
|
|
69
|
+
relying on meaningful content. Replacing the actual content with
|
|
70
|
+
placeholder text allows designers to design the form of the content
|
|
71
|
+
before the content itself has been produced.
|
|
72
|
+
</Text>
|
|
73
|
+
<Heading level={HeadingLevels.TWO}>Section 7</Heading>
|
|
74
|
+
<Text>
|
|
75
|
+
In publishing and graphic design, lorem ipsum is a placeholder text
|
|
76
|
+
commonly used to demonstrate the visual form of a document without
|
|
77
|
+
relying on meaningful content. Replacing the actual content with
|
|
78
|
+
placeholder text allows designers to design the form of the content
|
|
79
|
+
before the content itself has been produced.
|
|
80
|
+
</Text>
|
|
81
|
+
</div>
|
|
82
|
+
</Sidebar>
|
|
83
|
+
),
|
|
84
|
+
}
|
|
85
|
+
export default meta
|
|
86
|
+
export const InPageNavigation: StoryObj<typeof Component> = {}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { JSX, RefObject } from "react"
|
|
2
|
+
import Link from "../../Atom/Link/Link"
|
|
3
|
+
import Heading from "../../Atom/Heading/Heading"
|
|
4
|
+
import useInPageNavigation from "./Hooks/useInPageNavigation"
|
|
5
|
+
import { HeadingStyles } from "../../enums"
|
|
6
|
+
import { HeadingTypes } from "@pnx-mixtape/ids-shape"
|
|
7
|
+
|
|
8
|
+
type InPageNavigationProps = {
|
|
9
|
+
title?: string
|
|
10
|
+
containerRef?: RefObject<HTMLElement>
|
|
11
|
+
levels?: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const InPageNavigation = ({
|
|
15
|
+
title = "Jump to content",
|
|
16
|
+
containerRef,
|
|
17
|
+
levels,
|
|
18
|
+
}: InPageNavigationProps): JSX.Element => {
|
|
19
|
+
const { headings } = useInPageNavigation({ ref: containerRef, levels })
|
|
20
|
+
return (
|
|
21
|
+
<nav className={"in-page-navigation nav nav--list"}>
|
|
22
|
+
<Heading as={HeadingTypes.TWO} modifier={HeadingStyles.EMBELLISHED}>
|
|
23
|
+
{title}
|
|
24
|
+
</Heading>
|
|
25
|
+
<ul>
|
|
26
|
+
{headings.map(({ level, id, text }) => (
|
|
27
|
+
<li className={`in-page-navigation__level--${level}`} key={id}>
|
|
28
|
+
<Link to={`#${id}`} className="icon icon--chevron-right">
|
|
29
|
+
{text}
|
|
30
|
+
</Link>
|
|
31
|
+
</li>
|
|
32
|
+
))}
|
|
33
|
+
</ul>
|
|
34
|
+
</nav>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default InPageNavigation
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# In Page Navigation
|
|
2
|
+
|
|
3
|
+
### How to use
|
|
4
|
+
|
|
5
|
+
**CSS**
|
|
6
|
+
|
|
7
|
+
`@import '@pnx-mixtape/mxds/in-page-navigation.css';`
|
|
8
|
+
|
|
9
|
+
**Web Components**
|
|
10
|
+
|
|
11
|
+
Web Components are self defined, simply import the desired feature. These do not use the Shadow DOM. External CSS applies.
|
|
12
|
+
|
|
13
|
+
- InPageNavigationBase import: `import '@pnx-mixtape/mxds/Components/InPageNavigation/Element';` and be sure to include `<mx-in-page-navigation>` around the `<nav />` tag.
|
|
14
|
+
- Use the `[data-content]` attribute to specify where to look for headings (required).
|
|
15
|
+
- Use the `[data-headings]` attribute to customise the heading levels. Default is h2.
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<mx-in-page-navigation data-content=".page__sections" data-headings="h2, h3">
|
|
19
|
+
<nav class="in-page-navigation nav nav--jump">
|
|
20
|
+
<h4>Jump to Section</h4>
|
|
21
|
+
<ul></ul>
|
|
22
|
+
</nav>
|
|
23
|
+
</mx-in-page-navigation>
|
|
24
|
+
|
|
25
|
+
<div class="page__sections">
|
|
26
|
+
<h2 id="section">Section title</h2>
|
|
27
|
+
</div>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
See twig files for all HTML examples.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Navigation/InPageNavigation InPageNavigation smoke-test 1`] = `
|
|
4
|
+
<section class="section section--l">
|
|
5
|
+
<div class="page">
|
|
6
|
+
<div class="grid--sidebar">
|
|
7
|
+
<aside>
|
|
8
|
+
<mx-in-page-navigation data-content=".js-content"
|
|
9
|
+
data-headings="h2, h3"
|
|
10
|
+
>
|
|
11
|
+
<nav class="in-page-navigation nav nav--list">
|
|
12
|
+
<h4 class="text--embellished-headline">
|
|
13
|
+
Jump To Section
|
|
14
|
+
</h4>
|
|
15
|
+
<ul>
|
|
16
|
+
</ul>
|
|
17
|
+
</nav>
|
|
18
|
+
</mx-in-page-navigation>
|
|
19
|
+
</aside>
|
|
20
|
+
<section class="js-content rich-text vertical-flow">
|
|
21
|
+
<h2>
|
|
22
|
+
Section 1
|
|
23
|
+
</h2>
|
|
24
|
+
<p>
|
|
25
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
26
|
+
</p>
|
|
27
|
+
<h2 id="anchor-test">
|
|
28
|
+
Section 2
|
|
29
|
+
</h2>
|
|
30
|
+
<p>
|
|
31
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
32
|
+
</p>
|
|
33
|
+
<h3>
|
|
34
|
+
Test level 3
|
|
35
|
+
</h3>
|
|
36
|
+
<p>
|
|
37
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
38
|
+
</p>
|
|
39
|
+
<h2>
|
|
40
|
+
Section 3
|
|
41
|
+
</h2>
|
|
42
|
+
<p>
|
|
43
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
44
|
+
</p>
|
|
45
|
+
<h2>
|
|
46
|
+
Section 4
|
|
47
|
+
</h2>
|
|
48
|
+
<p>
|
|
49
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
50
|
+
</p>
|
|
51
|
+
<h2>
|
|
52
|
+
Section 5
|
|
53
|
+
</h2>
|
|
54
|
+
<p>
|
|
55
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
56
|
+
</p>
|
|
57
|
+
<h3>
|
|
58
|
+
Test level 6
|
|
59
|
+
</h3>
|
|
60
|
+
<p>
|
|
61
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
62
|
+
</p>
|
|
63
|
+
<h2>
|
|
64
|
+
Section 7
|
|
65
|
+
</h2>
|
|
66
|
+
<p>
|
|
67
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
68
|
+
</p>
|
|
69
|
+
</section>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</section>
|
|
73
|
+
`;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Navigation/InPageNavigation InPageNavigation smoke-test 1`] = `
|
|
4
|
+
<div class="grid--sidebar">
|
|
5
|
+
<aside>
|
|
6
|
+
<nav class="in-page-navigation nav nav--list">
|
|
7
|
+
<h2 class="text--embellished-headline"
|
|
8
|
+
id="jump-to-content"
|
|
9
|
+
>
|
|
10
|
+
Jump to content
|
|
11
|
+
</h2>
|
|
12
|
+
<ul>
|
|
13
|
+
<li class="in-page-navigation__level--h2">
|
|
14
|
+
<a href="#section-1"
|
|
15
|
+
class="icon icon--chevron-right"
|
|
16
|
+
>
|
|
17
|
+
Section 1
|
|
18
|
+
</a>
|
|
19
|
+
</li>
|
|
20
|
+
<li class="in-page-navigation__level--h2">
|
|
21
|
+
<a href="#anchor-test"
|
|
22
|
+
class="icon icon--chevron-right"
|
|
23
|
+
>
|
|
24
|
+
Section 2
|
|
25
|
+
</a>
|
|
26
|
+
</li>
|
|
27
|
+
<li class="in-page-navigation__level--h2">
|
|
28
|
+
<a href="#test-level-3"
|
|
29
|
+
class="icon icon--chevron-right"
|
|
30
|
+
>
|
|
31
|
+
Test level 3
|
|
32
|
+
</a>
|
|
33
|
+
</li>
|
|
34
|
+
<li class="in-page-navigation__level--h2">
|
|
35
|
+
<a href="#section-3"
|
|
36
|
+
class="icon icon--chevron-right"
|
|
37
|
+
>
|
|
38
|
+
Section 3
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li class="in-page-navigation__level--h2">
|
|
42
|
+
<a href="#section-4"
|
|
43
|
+
class="icon icon--chevron-right"
|
|
44
|
+
>
|
|
45
|
+
Section 4
|
|
46
|
+
</a>
|
|
47
|
+
</li>
|
|
48
|
+
<li class="in-page-navigation__level--h2">
|
|
49
|
+
<a href="#section-5"
|
|
50
|
+
class="icon icon--chevron-right"
|
|
51
|
+
>
|
|
52
|
+
Section 5
|
|
53
|
+
</a>
|
|
54
|
+
</li>
|
|
55
|
+
<li class="in-page-navigation__level--h2">
|
|
56
|
+
<a href="#test-level-6"
|
|
57
|
+
class="icon icon--chevron-right"
|
|
58
|
+
>
|
|
59
|
+
Test level 6
|
|
60
|
+
</a>
|
|
61
|
+
</li>
|
|
62
|
+
<li class="in-page-navigation__level--h2">
|
|
63
|
+
<a href="#section-7"
|
|
64
|
+
class="icon icon--chevron-right"
|
|
65
|
+
>
|
|
66
|
+
Section 7
|
|
67
|
+
</a>
|
|
68
|
+
</li>
|
|
69
|
+
</ul>
|
|
70
|
+
</nav>
|
|
71
|
+
</aside>
|
|
72
|
+
<section>
|
|
73
|
+
<div class="vertical-flow">
|
|
74
|
+
<h2 class
|
|
75
|
+
level="h2"
|
|
76
|
+
id="section-1"
|
|
77
|
+
>
|
|
78
|
+
Section 1
|
|
79
|
+
</h2>
|
|
80
|
+
<p class>
|
|
81
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
82
|
+
</p>
|
|
83
|
+
<h2 class
|
|
84
|
+
id="anchor-test"
|
|
85
|
+
level="h2"
|
|
86
|
+
>
|
|
87
|
+
Section 2
|
|
88
|
+
</h2>
|
|
89
|
+
<p class>
|
|
90
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
91
|
+
</p>
|
|
92
|
+
<h2 class
|
|
93
|
+
level="h3"
|
|
94
|
+
id="test-level-3"
|
|
95
|
+
>
|
|
96
|
+
Test level 3
|
|
97
|
+
</h2>
|
|
98
|
+
<p class>
|
|
99
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
100
|
+
</p>
|
|
101
|
+
<h2 class
|
|
102
|
+
level="h2"
|
|
103
|
+
id="section-3"
|
|
104
|
+
>
|
|
105
|
+
Section 3
|
|
106
|
+
</h2>
|
|
107
|
+
<p class>
|
|
108
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
109
|
+
</p>
|
|
110
|
+
<h2 class
|
|
111
|
+
level="h2"
|
|
112
|
+
id="section-4"
|
|
113
|
+
>
|
|
114
|
+
Section 4
|
|
115
|
+
</h2>
|
|
116
|
+
<p class>
|
|
117
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
118
|
+
</p>
|
|
119
|
+
<h2 class
|
|
120
|
+
level="h2"
|
|
121
|
+
id="section-5"
|
|
122
|
+
>
|
|
123
|
+
Section 5
|
|
124
|
+
</h2>
|
|
125
|
+
<p class>
|
|
126
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
127
|
+
</p>
|
|
128
|
+
<h2 class
|
|
129
|
+
level="h3"
|
|
130
|
+
id="test-level-6"
|
|
131
|
+
>
|
|
132
|
+
Test level 6
|
|
133
|
+
</h2>
|
|
134
|
+
<p class>
|
|
135
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
136
|
+
</p>
|
|
137
|
+
<h2 class
|
|
138
|
+
level="h2"
|
|
139
|
+
id="section-7"
|
|
140
|
+
>
|
|
141
|
+
Section 7
|
|
142
|
+
</h2>
|
|
143
|
+
<p class>
|
|
144
|
+
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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.
|
|
145
|
+
</p>
|
|
146
|
+
</div>
|
|
147
|
+
</section>
|
|
148
|
+
</div>
|
|
149
|
+
`;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InPageNavigation
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
@layer defaults {
|
|
6
|
+
mx-in-page-navigation {
|
|
7
|
+
display: block;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@layer components {
|
|
12
|
+
.in-page-navigation {
|
|
13
|
+
& .in-page-navigation__level--h3 {
|
|
14
|
+
padding-inline-start: var(--spacing-s);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{% embed '@mixtape/Layout/Section/section.twig' with {
|
|
2
|
+
modifier_class: 'section--l'
|
|
3
|
+
} %}
|
|
4
|
+
{% block content %}
|
|
5
|
+
{% embed '@mixtape/Layout/Sidebar/sidebar.twig' with {
|
|
6
|
+
content_class: 'js-content rich-text vertical-flow',
|
|
7
|
+
reverse_markup: TRUE
|
|
8
|
+
}%}
|
|
9
|
+
{% block content %}
|
|
10
|
+
{% include '@mixtape/Component/InPageNavigation/twig/in-page-navigation-content-example.twig' %}
|
|
11
|
+
{% endblock %}
|
|
12
|
+
{% block sidebar %}
|
|
13
|
+
{% include '@mixtape/Component/InPageNavigation/twig/in-page-navigation-menu-example.twig' %}
|
|
14
|
+
{% endblock %}
|
|
15
|
+
{% endembed %}
|
|
16
|
+
{% endblock %}
|
|
17
|
+
{% endembed %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<h2>Section 1</h2>
|
|
2
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
3
|
+
<h2 id="anchor-test">Section 2</h2>
|
|
4
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
5
|
+
<h3>Test level 3</h3>
|
|
6
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
7
|
+
<h2>Section 3</h2>
|
|
8
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
9
|
+
<h2>Section 4</h2>
|
|
10
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
11
|
+
<h2>Section 5</h2>
|
|
12
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
13
|
+
<h3>Test level 6</h3>
|
|
14
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
15
|
+
<h2>Section 7</h2>
|
|
16
|
+
<p>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. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/html"
|
|
2
|
+
import Component from "./link-list.twig"
|
|
3
|
+
import "./link-list.css"
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof Component> = {
|
|
6
|
+
tags: ["autodocs", "ids-mvp"],
|
|
7
|
+
component: Component,
|
|
8
|
+
args: {
|
|
9
|
+
items: [
|
|
10
|
+
{
|
|
11
|
+
title: "Music",
|
|
12
|
+
href: "#",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: "Performances",
|
|
16
|
+
href: "#",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
title: "Get involved",
|
|
20
|
+
href: "#",
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default meta
|
|
27
|
+
type Story = StoryObj<typeof meta>
|
|
28
|
+
|
|
29
|
+
export const LinkList: Story = {}
|