@pnx-mixtape/mxds 0.0.19 → 0.0.21
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 +18 -6
- package/dist/build/accordion.entry.js +2 -2
- package/dist/build/accordion.entry.js.map +1 -1
- package/dist/build/base.css +2 -1
- package/dist/build/button.css +4 -4
- package/dist/build/card.css +6 -5
- package/dist/build/chunks/{Accordion-deu4CCT-.js → Accordion-O-huO4At.js} +2 -2
- package/dist/build/chunks/{Accordion-deu4CCT-.js.map → Accordion-O-huO4At.js.map} +1 -1
- package/dist/build/chunks/{disclosure-widget-WwE5XplD.js → disclosure-widget-DVpnRsTI.js} +2 -2
- package/dist/build/chunks/{disclosure-widget-WwE5XplD.js.map → disclosure-widget-DVpnRsTI.js.map} +1 -1
- package/dist/build/chunks/{drop-menu.entry-e1iZ4ERw.js → drop-menu.entry-B4TtnC50.js} +2 -2
- package/dist/build/chunks/{drop-menu.entry-e1iZ4ERw.js.map → drop-menu.entry-B4TtnC50.js.map} +1 -1
- package/dist/build/chunks/{utilities-BeWkujCZ.js → utilities-DXELy_An.js} +91 -1
- package/dist/build/chunks/utilities-DXELy_An.js.map +1 -0
- package/dist/build/constants.css +6 -4
- package/dist/build/dialog.css +1 -9
- package/dist/build/dialog.entry.js +1 -1
- package/dist/build/drop-menu.entry.js +1 -1
- package/dist/build/filters.entry.js +1 -1
- package/dist/build/global-alert.entry.js +1 -1
- package/dist/build/header.css +49 -63
- package/dist/build/header.entry.js +1107 -21
- package/dist/build/header.entry.js.map +1 -1
- package/dist/build/hero-banner.css +12 -6
- package/dist/build/in-page-navigation.entry.js +1 -1
- package/dist/build/navigation.entry.js +2 -2
- package/dist/build/page.css +2 -2
- package/dist/build/pagination.css +15 -21
- package/dist/build/steps.css +11 -11
- package/dist/build/sticky.entry.js +1 -1
- package/dist/build/tabs.entry.js +2 -2
- package/dist/build/utilities.css +9 -1
- package/package.json +18 -29
- package/src/Atom/Button/_buttons-styles.css +3 -3
- package/src/Atom/Heading/Heading.tsx +1 -1
- package/src/Atom/Icon/Icon.tsx +1 -1
- package/src/Atom/Link/Link.stories.tsx +2 -6
- package/src/Atom/Link/Link.tsx +9 -4
- package/src/Atom/Link/_links.css +1 -0
- package/src/Component/Accordion/Accordion.stories.tsx +39 -9
- package/src/Component/Accordion/Accordion.tsx +28 -50
- package/src/Component/Accordion/Components/AccordionContent.tsx +24 -0
- package/src/Component/Accordion/Components/AccordionTitle.tsx +34 -0
- package/src/Component/Accordion/Components/AccordionTitleIcon.tsx +22 -0
- package/src/Component/Accordion/__snapshots__/Accordion.stories.tsx.snap +26 -0
- package/src/Component/Breadcrumb/Breadcrumb.tsx +8 -2
- package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.tsx.snap +7 -3
- package/src/Component/Card/Card.stories.tsx +22 -19
- package/src/Component/Card/Card.tsx +6 -28
- package/src/Component/Card/Components/CardContent.tsx +12 -0
- package/src/Component/Card/Components/CardMedia.tsx +17 -0
- package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +9 -9
- package/src/Component/Card/card.css +3 -2
- package/src/Component/ContentBlock/Components/ContentBlockContent.tsx +14 -0
- package/src/Component/ContentBlock/Components/ContentBlockMedia.tsx +20 -0
- package/src/Component/ContentBlock/ContentBlock.stories.tsx +16 -13
- package/src/Component/ContentBlock/ContentBlock.tsx +5 -28
- package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.tsx.snap +0 -2
- package/src/Component/Dialog/Components/DialogCloseButton.tsx +18 -0
- package/src/Component/Dialog/Components/DialogContent.tsx +7 -0
- package/src/Component/Dialog/Dialog.stories.tsx +19 -24
- package/src/Component/Dialog/Dialog.tsx +31 -25
- package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +14 -21
- package/src/Component/Dialog/dialog.css +0 -8
- package/src/Component/HeroBanner/HeroBanner.stories.ts +23 -12
- package/src/Component/HeroBanner/HeroBanner.stories.tsx +26 -7
- package/src/Component/HeroBanner/HeroBanner.tsx +2 -20
- package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +51 -3
- package/src/Component/HeroBanner/hero-banner.css +8 -4
- package/src/Component/HeroBanner/hero-banner.twig +2 -2
- package/src/Component/HeroSearch/HeroSearch.stories.ts +105 -0
- package/src/Component/HeroSearch/HeroSearch.stories.tsx +48 -0
- package/src/Component/HeroSearch/HeroSearch.tsx +32 -0
- package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.ts.snap +176 -0
- package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.tsx.snap +36 -0
- package/src/Component/HeroSearch/hero-search.twig +43 -0
- package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +1 -1
- package/src/Component/InPageNavigation/InPageNavigation.tsx +1 -0
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +1 -1
- package/src/Component/LinkList/LinkList.stories.ts +12 -0
- package/src/Component/LinkList/LinkList.stories.tsx +0 -6
- package/src/Component/LinkList/LinkList.tsx +5 -16
- package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +37 -0
- package/src/Component/LinkList/__snapshots__/LinkList.stories.tsx.snap +9 -29
- package/src/Component/LinkList/link-list.twig +1 -0
- package/src/Component/ListItem/Components/ListItemContent.tsx +12 -0
- package/src/Component/ListItem/Components/ListItemMedia.tsx +20 -0
- package/src/Component/ListItem/ListItem.stories.tsx +22 -19
- package/src/Component/ListItem/ListItem.tsx +3 -32
- package/src/Component/ListItem/__snapshots__/ListItem.stories.tsx.snap +3 -0
- package/src/Component/Pagination/Components/PaginationContext.tsx +10 -4
- package/src/Component/Pagination/Components/PaginationItem.tsx +10 -10
- package/src/Component/Pagination/Pagination.tsx +6 -2
- package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +10 -4
- package/src/Component/Pagination/pagination.css +13 -18
- package/src/Component/Steps/__snapshots__/Steps.stories.ts.snap +12 -12
- package/src/Component/Steps/step-item.twig +1 -1
- package/src/Component/Steps/steps.css +1 -2
- package/src/Component/Tabs/Components/TabPanel.tsx +1 -1
- package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +2 -0
- package/src/Component/Tile/Tile.stories.tsx +20 -15
- package/src/Component/Tile/__snapshots__/Tile.stories.tsx.snap +18 -23
- package/src/Layout/Header/Elements/GlobalToggle.ts +55 -21
- package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +14 -14
- package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +2 -2
- package/src/Layout/Header/_header.css +2 -47
- package/src/Layout/Header/_toggles.css +37 -1
- package/src/Layout/Header/header.twig +5 -5
- package/src/Layout/Page/Page.stories.tsx +13 -4
- package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +2 -2
- package/src/Layout/Page/page.css +1 -1
- package/src/Layout/Section/__snapshots__/Section.stories.tsx.snap +3 -3
- package/src/Layout/Section/__snapshots__/SectionGrid.stories.tsx.snap +2 -2
- package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.tsx.snap +3 -3
- package/src/Utility/utilities.css +8 -0
- package/src/constants.css +5 -3
- package/src/react.ts +30 -7
- package/src/tokens.js +3 -1
- package/dist/build/chunks/utilities-BeWkujCZ.js.map +0 -1
- package/src/Component/Tile/Tile.tsx +0 -53
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
import { Meta, StoryObj } from "@storybook/react-vite"
|
|
2
|
-
import
|
|
2
|
+
import Card from "../Card/Card"
|
|
3
|
+
import CardContent from "../Card/Components/CardContent"
|
|
3
4
|
import "../Card/card.css"
|
|
4
|
-
import { AsTags,
|
|
5
|
+
import { AsTags, BackgroundStyles } from "../../enums"
|
|
6
|
+
import Heading from "../../Atom/Heading/Heading"
|
|
7
|
+
import Text from "../../Atom/Text/Text"
|
|
8
|
+
import Link from "../../Atom/Link/Link"
|
|
9
|
+
import { HeadingTypes } from "@pnx-mixtape/ids-shape"
|
|
5
10
|
|
|
6
|
-
const meta: Meta<typeof
|
|
11
|
+
const meta: Meta<typeof Card> = {
|
|
7
12
|
tags: ["autodocs"],
|
|
8
|
-
component:
|
|
13
|
+
component: Card,
|
|
9
14
|
argTypes: {
|
|
10
|
-
size: { options: Object.values(TileSizes), control: "radio" },
|
|
11
|
-
headingLevel: { options: Object.values(HeadingLevels), control: "select" },
|
|
12
15
|
as: { options: Object.values(AsTags), control: "select" },
|
|
13
16
|
},
|
|
14
17
|
args: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
block: true,
|
|
19
|
+
background: BackgroundStyles.BOX,
|
|
20
|
+
children: (
|
|
21
|
+
<CardContent>
|
|
22
|
+
<Heading as={HeadingTypes.THREE}>Tile title</Heading>
|
|
23
|
+
<Text>Tiles are just block cards without an image.</Text>
|
|
24
|
+
<Link more to="http://example.com">
|
|
25
|
+
Tile link
|
|
26
|
+
</Link>
|
|
27
|
+
</CardContent>
|
|
28
|
+
),
|
|
19
29
|
},
|
|
20
30
|
}
|
|
21
31
|
|
|
@@ -23,8 +33,3 @@ export default meta
|
|
|
23
33
|
type Story = StoryObj<typeof meta>
|
|
24
34
|
|
|
25
35
|
export const Tile: Story = {}
|
|
26
|
-
export const WithContent: Story = {
|
|
27
|
-
args: {
|
|
28
|
-
children: <p>Tile with some content</p>,
|
|
29
|
-
},
|
|
30
|
-
}
|
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`Component/Tile Tile smoke-test 1`] = `
|
|
4
|
-
<div class="mx-
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
>
|
|
21
|
-
|
|
22
|
-
</h3>
|
|
23
|
-
<p>
|
|
24
|
-
Tile with some content
|
|
25
|
-
</p>
|
|
26
|
-
</div>
|
|
4
|
+
<div class="mx-container">
|
|
5
|
+
<article class="mx-card mx-card--block mx-background--box">
|
|
6
|
+
<div class="mx-card__content mx-vertical-flow">
|
|
7
|
+
<h3 class
|
|
8
|
+
id="tile-title"
|
|
9
|
+
>
|
|
10
|
+
Tile title
|
|
11
|
+
</h3>
|
|
12
|
+
<p class>
|
|
13
|
+
Tiles are just block cards without an image.
|
|
14
|
+
</p>
|
|
15
|
+
<a href="http://example.com"
|
|
16
|
+
class="mx-link mx-link--more"
|
|
17
|
+
>
|
|
18
|
+
Tile link
|
|
19
|
+
</a>
|
|
20
|
+
</div>
|
|
21
|
+
</article>
|
|
27
22
|
</div>
|
|
28
23
|
`;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @file Handle accessible trigger of menus on small screens.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { createFocusTrap, FocusTrap } from "focus-trap"
|
|
6
7
|
import {
|
|
7
8
|
DisclosureWidget,
|
|
8
9
|
DisclosureWidgetEvent,
|
|
@@ -12,13 +13,19 @@ export default class GlobalToggle extends HTMLElement {
|
|
|
12
13
|
internals_: ElementInternals
|
|
13
14
|
controller: AbortController
|
|
14
15
|
widget!: DisclosureWidget
|
|
16
|
+
focusTrap!: FocusTrap
|
|
15
17
|
controls?: string
|
|
16
18
|
mq: string
|
|
17
19
|
triggerText: string
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
isOpen: boolean = false
|
|
21
|
+
closeIconClass: string = "mx-icon--close"
|
|
22
|
+
menuIconClass: string = "mx-icon--menu"
|
|
23
|
+
searchIconClass: string = "mx-icon--search"
|
|
24
|
+
backgroundClass: string = "mx-background--primary"
|
|
25
|
+
scrollLockClass: string = "body--scroll-lock"
|
|
26
|
+
isSearch?: boolean
|
|
27
|
+
hideOther?: boolean = true
|
|
28
|
+
otherTrigger?: HTMLButtonElement | null
|
|
22
29
|
|
|
23
30
|
constructor() {
|
|
24
31
|
super()
|
|
@@ -31,13 +38,39 @@ export default class GlobalToggle extends HTMLElement {
|
|
|
31
38
|
if (!this.trigger || !this.target) return
|
|
32
39
|
|
|
33
40
|
this.target?.setAttribute("role", "region")
|
|
41
|
+
|
|
42
|
+
const hideOther = this.trigger.getAttribute("hideOther")
|
|
43
|
+
if (hideOther === "false") this.hideOther = false
|
|
44
|
+
this.isSearch = this.controls.includes("search")
|
|
45
|
+
this.otherTrigger = document.querySelector(
|
|
46
|
+
this.isSearch ? `.${this.menuIconClass}` : `.${this.searchIconClass}`,
|
|
47
|
+
)
|
|
48
|
+
|
|
34
49
|
this.widget = new DisclosureWidget(this.trigger, this.target)
|
|
35
50
|
this.widget.init()
|
|
51
|
+
this.focusTrap = createFocusTrap(this.target, {
|
|
52
|
+
escapeDeactivates: false,
|
|
53
|
+
setReturnFocus: this.trigger,
|
|
54
|
+
allowOutsideClick: true,
|
|
55
|
+
onActivate: () => document.body.classList.add(this.scrollLockClass),
|
|
56
|
+
onDeactivate: () => document.body.classList.remove(this.scrollLockClass),
|
|
57
|
+
checkCanFocusTrap: ([trapContainer]) =>
|
|
58
|
+
new Promise<void>(resolve => {
|
|
59
|
+
const interval = setInterval(() => {
|
|
60
|
+
if (getComputedStyle(trapContainer).visibility !== "hidden") {
|
|
61
|
+
resolve()
|
|
62
|
+
clearInterval(interval)
|
|
63
|
+
}
|
|
64
|
+
}, 5)
|
|
65
|
+
}),
|
|
66
|
+
})
|
|
67
|
+
|
|
36
68
|
const { signal }: AbortController = this.controller
|
|
37
69
|
this.handleBreakpoint(this.breakpoint)
|
|
38
70
|
this.breakpoint.addEventListener("change", this.handleBreakpoint, {
|
|
39
71
|
signal,
|
|
40
72
|
})
|
|
73
|
+
document.addEventListener("keydown", this.handleKeyDown, { signal })
|
|
41
74
|
}
|
|
42
75
|
|
|
43
76
|
disconnectedCallback(): void {
|
|
@@ -61,10 +94,12 @@ export default class GlobalToggle extends HTMLElement {
|
|
|
61
94
|
} else {
|
|
62
95
|
this.widget.detach()
|
|
63
96
|
this.target.removeAttribute("inert")
|
|
97
|
+
this.target.classList.remove(this.scrollLockClass)
|
|
64
98
|
this.trigger.removeEventListener(
|
|
65
99
|
"disclosure-toggle",
|
|
66
100
|
this.handleDisclosure,
|
|
67
101
|
)
|
|
102
|
+
this.focusTrap.deactivate()
|
|
68
103
|
}
|
|
69
104
|
}
|
|
70
105
|
|
|
@@ -75,29 +110,27 @@ export default class GlobalToggle extends HTMLElement {
|
|
|
75
110
|
const replaceText = !isOpen ? "Open" : "Close"
|
|
76
111
|
this.trigger.textContent = this.triggerText.replace(origText, replaceText)
|
|
77
112
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if
|
|
113
|
+
isOpen ? this.focusTrap.activate() : this.focusTrap.deactivate()
|
|
114
|
+
|
|
115
|
+
// Close other trigger if it's open.
|
|
116
|
+
if (isOpen && this.hideOther && this.otherTrigger) {
|
|
117
|
+
if (this.otherTrigger.getAttribute("aria-expanded") === "true") {
|
|
118
|
+
this.otherTrigger.click()
|
|
119
|
+
}
|
|
120
|
+
}
|
|
81
121
|
|
|
82
122
|
// Toggle trigger classes.
|
|
83
123
|
this.trigger.classList.toggle(
|
|
84
|
-
isSearch ? this.searchIconClass : this.menuIconClass,
|
|
124
|
+
this.isSearch ? this.searchIconClass : this.menuIconClass,
|
|
85
125
|
)
|
|
86
126
|
this.trigger.classList.toggle(this.closeIconClass)
|
|
127
|
+
this.target.classList.toggle(this.backgroundClass)
|
|
128
|
+
this.trigger.removeAttribute("no-focus")
|
|
129
|
+
this.isOpen = isOpen
|
|
87
130
|
}
|
|
88
131
|
|
|
89
|
-
|
|
90
|
-
if (this.
|
|
91
|
-
// Search trigger should hide the menu trigger.
|
|
92
|
-
const menuTrigger = document.querySelector(`.${this.menuIconClass}`)
|
|
93
|
-
menuTrigger.toggleAttribute("hidden")
|
|
94
|
-
}
|
|
95
|
-
// Shift focus between search input and trigger.
|
|
96
|
-
if (!isOpen) {
|
|
97
|
-
this.trigger.focus()
|
|
98
|
-
} else {
|
|
99
|
-
this.target.querySelector("input")?.focus()
|
|
100
|
-
}
|
|
132
|
+
handleKeyDown = (event: KeyboardEvent): void => {
|
|
133
|
+
if (this.isOpen && event.key === "Escape") this.widget.handleToggle()
|
|
101
134
|
}
|
|
102
135
|
|
|
103
136
|
get trigger(): HTMLButtonElement {
|
|
@@ -133,7 +166,8 @@ export default class GlobalToggle extends HTMLElement {
|
|
|
133
166
|
}
|
|
134
167
|
}
|
|
135
168
|
|
|
136
|
-
customElements.
|
|
169
|
+
if (!customElements.get("mx-global-toggle"))
|
|
170
|
+
customElements.define("mx-global-toggle", GlobalToggle)
|
|
137
171
|
|
|
138
172
|
declare global {
|
|
139
173
|
interface HTMLElementTagNameMap {
|
|
@@ -18,7 +18,7 @@ exports[`Layout/Header Controls smoke-test 1`] = `
|
|
|
18
18
|
<div class="mx-header__toggles">
|
|
19
19
|
<mx-global-toggle>
|
|
20
20
|
<button aria-controls="unique-0"
|
|
21
|
-
class="mx-button mx-button--
|
|
21
|
+
class="mx-button mx-button--icon-only mx-icon mx-icon--menu"
|
|
22
22
|
>
|
|
23
23
|
Open Menu
|
|
24
24
|
</button>
|
|
@@ -26,7 +26,7 @@ exports[`Layout/Header Controls smoke-test 1`] = `
|
|
|
26
26
|
</div>
|
|
27
27
|
<div class="mx-header__main">
|
|
28
28
|
<div id="unique-0"
|
|
29
|
-
class="mx-header__nav"
|
|
29
|
+
class="mx-header__nav mx-header__collapse-toggle"
|
|
30
30
|
aria-label="Primary navigation"
|
|
31
31
|
role="region"
|
|
32
32
|
>
|
|
@@ -93,7 +93,7 @@ exports[`Layout/Header Header smoke-test 1`] = `
|
|
|
93
93
|
<div class="mx-header__toggles">
|
|
94
94
|
<mx-global-toggle>
|
|
95
95
|
<button aria-controls="unique-0"
|
|
96
|
-
class="mx-button mx-button--
|
|
96
|
+
class="mx-button mx-button--icon-only mx-icon mx-icon--menu"
|
|
97
97
|
>
|
|
98
98
|
Open Menu
|
|
99
99
|
</button>
|
|
@@ -101,7 +101,7 @@ exports[`Layout/Header Header smoke-test 1`] = `
|
|
|
101
101
|
</div>
|
|
102
102
|
<div class="mx-header__main">
|
|
103
103
|
<div id="unique-0"
|
|
104
|
-
class="mx-header__nav"
|
|
104
|
+
class="mx-header__nav mx-header__collapse-toggle"
|
|
105
105
|
aria-label="Primary navigation"
|
|
106
106
|
role="region"
|
|
107
107
|
>
|
|
@@ -157,7 +157,7 @@ exports[`Layout/Header Search smoke-test 1`] = `
|
|
|
157
157
|
</a>
|
|
158
158
|
</div>
|
|
159
159
|
<div class="mx-header__toggles">
|
|
160
|
-
<mx-global-toggle
|
|
160
|
+
<mx-global-toggle>
|
|
161
161
|
<button aria-controls="unique-0"
|
|
162
162
|
class="mx-button mx-button--icon-only mx-icon mx-icon--search"
|
|
163
163
|
>
|
|
@@ -166,7 +166,7 @@ exports[`Layout/Header Search smoke-test 1`] = `
|
|
|
166
166
|
</mx-global-toggle>
|
|
167
167
|
<mx-global-toggle>
|
|
168
168
|
<button aria-controls="unique-1"
|
|
169
|
-
class="mx-button mx-button--
|
|
169
|
+
class="mx-button mx-button--icon-only mx-icon mx-icon--menu"
|
|
170
170
|
>
|
|
171
171
|
Open Menu
|
|
172
172
|
</button>
|
|
@@ -174,7 +174,7 @@ exports[`Layout/Header Search smoke-test 1`] = `
|
|
|
174
174
|
</div>
|
|
175
175
|
<div class="mx-header__main">
|
|
176
176
|
<div id="unique-0"
|
|
177
|
-
class="mx-header__nav"
|
|
177
|
+
class="mx-header__nav mx-header__collapse-toggle"
|
|
178
178
|
aria-label="Primary navigation"
|
|
179
179
|
role="region"
|
|
180
180
|
>
|
|
@@ -209,7 +209,7 @@ exports[`Layout/Header Search smoke-test 1`] = `
|
|
|
209
209
|
</mx-nav>
|
|
210
210
|
</div>
|
|
211
211
|
<div id="unique-1"
|
|
212
|
-
class="mx-header__search"
|
|
212
|
+
class="mx-header__search mx-header__collapse-toggle"
|
|
213
213
|
aria-label="Search"
|
|
214
214
|
role="region"
|
|
215
215
|
>
|
|
@@ -258,7 +258,7 @@ exports[`Layout/Header Stacked smoke-test 1`] = `
|
|
|
258
258
|
</a>
|
|
259
259
|
</div>
|
|
260
260
|
<div class="mx-header__toggles">
|
|
261
|
-
<mx-global-toggle
|
|
261
|
+
<mx-global-toggle>
|
|
262
262
|
<button aria-controls="unique-0"
|
|
263
263
|
class="mx-button mx-button--icon-only mx-icon mx-icon--search"
|
|
264
264
|
>
|
|
@@ -267,7 +267,7 @@ exports[`Layout/Header Stacked smoke-test 1`] = `
|
|
|
267
267
|
</mx-global-toggle>
|
|
268
268
|
<mx-global-toggle>
|
|
269
269
|
<button aria-controls="unique-1"
|
|
270
|
-
class="mx-button mx-button--
|
|
270
|
+
class="mx-button mx-button--icon-only mx-icon mx-icon--menu"
|
|
271
271
|
>
|
|
272
272
|
Open Menu
|
|
273
273
|
</button>
|
|
@@ -275,7 +275,7 @@ exports[`Layout/Header Stacked smoke-test 1`] = `
|
|
|
275
275
|
</div>
|
|
276
276
|
<div class="mx-header__main">
|
|
277
277
|
<div id="unique-0"
|
|
278
|
-
class="mx-header__search"
|
|
278
|
+
class="mx-header__search mx-header__collapse-toggle"
|
|
279
279
|
aria-label="Search"
|
|
280
280
|
role="region"
|
|
281
281
|
>
|
|
@@ -306,7 +306,7 @@ exports[`Layout/Header Stacked smoke-test 1`] = `
|
|
|
306
306
|
</div>
|
|
307
307
|
</header>
|
|
308
308
|
<div id="unique-1"
|
|
309
|
-
class="mx-header__nav mx-page"
|
|
309
|
+
class="mx-header__nav mx-page mx-header__collapse-toggle"
|
|
310
310
|
aria-label="Primary navigation"
|
|
311
311
|
role="region"
|
|
312
312
|
>
|
|
@@ -474,7 +474,7 @@ exports[`Layout/Header WithTitle smoke-test 1`] = `
|
|
|
474
474
|
<div class="mx-header__toggles">
|
|
475
475
|
<mx-global-toggle>
|
|
476
476
|
<button aria-controls="unique-0"
|
|
477
|
-
class="mx-button mx-button--
|
|
477
|
+
class="mx-button mx-button--icon-only mx-icon mx-icon--menu"
|
|
478
478
|
>
|
|
479
479
|
Open Menu
|
|
480
480
|
</button>
|
|
@@ -482,7 +482,7 @@ exports[`Layout/Header WithTitle smoke-test 1`] = `
|
|
|
482
482
|
</div>
|
|
483
483
|
<div class="mx-header__main">
|
|
484
484
|
<div id="unique-0"
|
|
485
|
-
class="mx-header__nav"
|
|
485
|
+
class="mx-header__nav mx-header__collapse-toggle"
|
|
486
486
|
aria-label="Primary navigation"
|
|
487
487
|
role="region"
|
|
488
488
|
>
|
|
@@ -4,12 +4,12 @@ exports[`Layout/Header PrimaryHeader smoke-test 1`] = `
|
|
|
4
4
|
<header class="mx-page mx-header mx-section--s">
|
|
5
5
|
<div class="mx-header__inner">
|
|
6
6
|
<div class="mx-header__brand">
|
|
7
|
-
<a href="https://
|
|
7
|
+
<a href="https://mxds.pnx.io/"
|
|
8
8
|
class="mx-logo"
|
|
9
9
|
>
|
|
10
10
|
<img alt="Mixtape"
|
|
11
11
|
loading="eager"
|
|
12
|
-
src="https://
|
|
12
|
+
src="https://mxds.pnx.io/images/mixtape-logo.png"
|
|
13
13
|
>
|
|
14
14
|
</a>
|
|
15
15
|
</div>
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
@layer design-system.layouts {
|
|
6
6
|
.mx-header__inner {
|
|
7
|
-
position: relative;
|
|
8
7
|
display: grid;
|
|
9
8
|
grid-template-columns: 1fr auto;
|
|
10
9
|
align-items: center;
|
|
@@ -27,53 +26,9 @@
|
|
|
27
26
|
align-items: center;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
.mx-header__nav {
|
|
31
|
-
inline-size: 100%;
|
|
32
|
-
opacity: 1;
|
|
33
|
-
display: grid;
|
|
34
|
-
|
|
35
|
-
@starting-style {
|
|
36
|
-
opacity: 0;
|
|
37
|
-
display: grid;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@media (--global-nav-up) {
|
|
41
|
-
z-index: 2;
|
|
42
|
-
position: relative;
|
|
43
|
-
inline-size: auto;
|
|
44
|
-
block-size: auto;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
&[inert] {
|
|
48
|
-
display: none;
|
|
49
|
-
opacity: 0;
|
|
50
|
-
transition-duration: 0.4s;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
29
|
.mx-header__search {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
inset-block-start: 2px;
|
|
58
|
-
inset-inline-start: 0;
|
|
59
|
-
inline-size: 100%;
|
|
60
|
-
opacity: 1;
|
|
61
|
-
display: flex;
|
|
62
|
-
|
|
63
|
-
@starting-style {
|
|
64
|
-
opacity: 0;
|
|
65
|
-
display: grid;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
@media (--global-nav-up) {
|
|
69
|
-
position: relative;
|
|
70
|
-
inline-size: auto;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
&[inert] {
|
|
74
|
-
display: none;
|
|
75
|
-
opacity: 0;
|
|
76
|
-
transition-duration: 0.4s;
|
|
30
|
+
& form {
|
|
31
|
+
margin-block: var(--spacing-m);
|
|
77
32
|
}
|
|
78
33
|
|
|
79
34
|
& input {
|
|
@@ -23,9 +23,45 @@
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
.
|
|
26
|
+
.mx-header__collapse-toggle {
|
|
27
|
+
inline-size: 100%;
|
|
28
|
+
opacity: 1;
|
|
29
|
+
display: grid;
|
|
30
|
+
position: fixed;
|
|
31
|
+
inset: 0;
|
|
32
|
+
align-items: center;
|
|
33
|
+
|
|
34
|
+
@starting-style {
|
|
35
|
+
opacity: 0;
|
|
36
|
+
display: grid;
|
|
37
|
+
}
|
|
38
|
+
|
|
27
39
|
@media (--global-nav-down) {
|
|
40
|
+
padding-inline: var(--gutter, var(--spacing-l));
|
|
41
|
+
grid-template-columns: inherit;
|
|
42
|
+
|
|
43
|
+
& .mx-header__nav-inner {
|
|
44
|
+
grid-column: full;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@media (--global-nav-up) {
|
|
49
|
+
z-index: 2;
|
|
50
|
+
position: relative;
|
|
51
|
+
inline-size: auto;
|
|
52
|
+
block-size: auto;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&[inert] {
|
|
28
56
|
display: none;
|
|
57
|
+
opacity: 0;
|
|
58
|
+
transition-duration: 0.4s;
|
|
29
59
|
}
|
|
30
60
|
}
|
|
31
61
|
}
|
|
62
|
+
|
|
63
|
+
.global-nav-up-only {
|
|
64
|
+
@media (--global-nav-down) {
|
|
65
|
+
display: none;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -21,21 +21,21 @@
|
|
|
21
21
|
{% if navigation is not empty or search is not empty %}
|
|
22
22
|
<div class="mx-header__toggles">
|
|
23
23
|
{% if search is not empty %}
|
|
24
|
-
<mx-global-toggle
|
|
24
|
+
<mx-global-toggle><button aria-controls="primary-search" class="mx-button mx-button--icon-only mx-icon mx-icon--search" disabled>Open Search</button></mx-global-toggle>
|
|
25
25
|
{% endif %}
|
|
26
26
|
{% if navigation is not empty %}
|
|
27
|
-
<mx-global-toggle><button aria-controls="primary-nav" class="mx-button mx-button--
|
|
27
|
+
<mx-global-toggle><button aria-controls="primary-nav" class="mx-button mx-button--icon-only mx-icon mx-icon--menu" disabled>Open Menu</button></mx-global-toggle>
|
|
28
28
|
{% endif %}
|
|
29
29
|
</div>
|
|
30
30
|
{% endif %}
|
|
31
31
|
<div class="mx-header__main">
|
|
32
32
|
{% if navigation is not empty and not stacked %}
|
|
33
|
-
<div id="primary-nav" class="mx-header__nav global-nav-up-only" aria-label="Primary navigation">
|
|
33
|
+
<div id="primary-nav" class="mx-header__nav mx-header__collapse-toggle global-nav-up-only" aria-label="Primary navigation">
|
|
34
34
|
{{ navigation }}
|
|
35
35
|
</div>
|
|
36
36
|
{% endif %}
|
|
37
37
|
{% if search is not empty %}
|
|
38
|
-
<div id="primary-search" class="mx-header__search global-nav-up-only" aria-label="Search">
|
|
38
|
+
<div id="primary-search" class="mx-header__search mx-header__collapse-toggle global-nav-up-only" aria-label="Search">
|
|
39
39
|
{{ search }}
|
|
40
40
|
</div>
|
|
41
41
|
{% endif %}
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</div>
|
|
49
49
|
</header>
|
|
50
50
|
{% if stacked and (navigation is not empty or controls is not empty) %}
|
|
51
|
-
<div id="primary-nav" class="mx-header__nav mx-page global-nav-up-only" aria-label="Primary navigation">
|
|
51
|
+
<div id="primary-nav" class="mx-header__nav mx-page mx-header__collapse-toggle global-nav-up-only" aria-label="Primary navigation">
|
|
52
52
|
<div class="mx-header__nav-inner">
|
|
53
53
|
{{ navigation }}
|
|
54
54
|
{% if controls is not empty %}
|
|
@@ -2,6 +2,10 @@ import { Meta, StoryObj } from "@storybook/react-vite"
|
|
|
2
2
|
import Component from "./Page"
|
|
3
3
|
import { mixtapeHeader, mixtapeFooter } from "../../../mockups/constants"
|
|
4
4
|
import HeroBanner from "../../Component/HeroBanner/HeroBanner"
|
|
5
|
+
import Heading from "../../Atom/Heading/Heading"
|
|
6
|
+
import { HeadingTypes } from "@pnx-mixtape/ids-shape"
|
|
7
|
+
import { HeadingStyles, TextStyles } from "../../enums"
|
|
8
|
+
import Text from "../../Atom/Text/Text"
|
|
5
9
|
|
|
6
10
|
const meta: Meta<typeof Component> = {
|
|
7
11
|
component: Component,
|
|
@@ -9,10 +13,15 @@ const meta: Meta<typeof Component> = {
|
|
|
9
13
|
header: mixtapeHeader,
|
|
10
14
|
footer: mixtapeFooter,
|
|
11
15
|
children: (
|
|
12
|
-
<HeroBanner
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
<HeroBanner>
|
|
17
|
+
<Heading as={HeadingTypes.ONE} modifier={HeadingStyles.HEADLINE}>
|
|
18
|
+
Always put your best foot forward.
|
|
19
|
+
</Heading>
|
|
20
|
+
<Text modifier={TextStyles.XL}>
|
|
21
|
+
Make the most of the opportunity by encouraging an action and keeping
|
|
22
|
+
your copy clear and concise.
|
|
23
|
+
</Text>
|
|
24
|
+
</HeroBanner>
|
|
16
25
|
),
|
|
17
26
|
},
|
|
18
27
|
}
|
|
@@ -5,12 +5,12 @@ exports[`Layout/Page Page smoke-test 1`] = `
|
|
|
5
5
|
<header class="mx-page mx-header mx-section--s">
|
|
6
6
|
<div class="mx-header__inner">
|
|
7
7
|
<div class="mx-header__brand">
|
|
8
|
-
<a href="https://
|
|
8
|
+
<a href="https://mxds.pnx.io/"
|
|
9
9
|
class="mx-logo"
|
|
10
10
|
>
|
|
11
11
|
<img alt="Mixtape"
|
|
12
12
|
loading="eager"
|
|
13
|
-
src="https://
|
|
13
|
+
src="https://mxds.pnx.io/images/mixtape-logo.png"
|
|
14
14
|
>
|
|
15
15
|
</a>
|
|
16
16
|
</div>
|
package/src/Layout/Page/page.css
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
--plus: token("size.container.plus");
|
|
8
8
|
--minus: token("size.container.minus");
|
|
9
9
|
--diff: calc(var(--plus) - var(--minus));
|
|
10
|
-
--gutter: clamp(var(--
|
|
10
|
+
--gutter: clamp(var(--gutter-min), 6vw, var(--gutter-max));
|
|
11
11
|
--full: minmax(var(--gutter), 1fr);
|
|
12
12
|
--narrow: min(var(--container-max-width), 100% - (var(--gutter) * 2));
|
|
13
13
|
--feature: minmax(0, var(--minus));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`Layout/Section Default smoke-test 1`] = `
|
|
4
|
-
<div class="mx-page">
|
|
4
|
+
<div class="mx-page undefined">
|
|
5
5
|
<div class="mx-page mx-section--xl mx-page--feature">
|
|
6
6
|
<p>
|
|
7
7
|
Some content
|
|
@@ -11,7 +11,7 @@ exports[`Layout/Section Default smoke-test 1`] = `
|
|
|
11
11
|
`;
|
|
12
12
|
|
|
13
13
|
exports[`Layout/Section List smoke-test 1`] = `
|
|
14
|
-
<div class="mx-page">
|
|
14
|
+
<div class="mx-page undefined">
|
|
15
15
|
<ul class="mx-page mx-section--s">
|
|
16
16
|
<li>
|
|
17
17
|
Item 1
|
|
@@ -27,7 +27,7 @@ exports[`Layout/Section List smoke-test 1`] = `
|
|
|
27
27
|
`;
|
|
28
28
|
|
|
29
29
|
exports[`Layout/Section Varied smoke-test 1`] = `
|
|
30
|
-
<div class="mx-page">
|
|
30
|
+
<div class="mx-page undefined">
|
|
31
31
|
<aside class="mx-page mx-section--top-m mx-section--bottom-xl">
|
|
32
32
|
<p>
|
|
33
33
|
Some content
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`Layout/Section/SectionGrid List smoke-test 1`] = `
|
|
4
|
-
<div class="mx-page">
|
|
4
|
+
<div class="mx-page undefined">
|
|
5
5
|
<div class="mx-section--xl">
|
|
6
6
|
<ul class="mx-grid mx-container">
|
|
7
7
|
<li>
|
|
@@ -19,7 +19,7 @@ exports[`Layout/Section/SectionGrid List smoke-test 1`] = `
|
|
|
19
19
|
`;
|
|
20
20
|
|
|
21
21
|
exports[`Layout/Section/SectionGrid SectionGrid smoke-test 1`] = `
|
|
22
|
-
<div class="mx-page">
|
|
22
|
+
<div class="mx-page undefined">
|
|
23
23
|
<div class="mx-section--xl">
|
|
24
24
|
<div class="mx-grid">
|
|
25
25
|
<div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`Layout/Sidebar NoSidebar smoke-test 1`] = `
|
|
4
|
-
<div class="mx-page">
|
|
4
|
+
<div class="mx-page undefined">
|
|
5
5
|
<div class="mx-grid--sidebar">
|
|
6
6
|
<section>
|
|
7
7
|
<p>
|
|
@@ -13,7 +13,7 @@ exports[`Layout/Sidebar NoSidebar smoke-test 1`] = `
|
|
|
13
13
|
`;
|
|
14
14
|
|
|
15
15
|
exports[`Layout/Sidebar Reverse smoke-test 1`] = `
|
|
16
|
-
<div class="mx-page">
|
|
16
|
+
<div class="mx-page undefined">
|
|
17
17
|
<div class="mx-grid--sidebar">
|
|
18
18
|
<aside>
|
|
19
19
|
<p>
|
|
@@ -30,7 +30,7 @@ exports[`Layout/Sidebar Reverse smoke-test 1`] = `
|
|
|
30
30
|
`;
|
|
31
31
|
|
|
32
32
|
exports[`Layout/Sidebar Sidebar smoke-test 1`] = `
|
|
33
|
-
<div class="mx-page">
|
|
33
|
+
<div class="mx-page undefined">
|
|
34
34
|
<div class="mx-grid--sidebar">
|
|
35
35
|
<section>
|
|
36
36
|
<p>
|