@getvitops/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/css/animation.css +526 -0
- package/css/global.css +17 -0
- package/css/index.css +58 -0
- package/css/layout.css +723 -0
- package/css/patterns/anchor-link.css +66 -0
- package/css/patterns/banner.css +64 -0
- package/css/patterns/carousel.css +269 -0
- package/css/patterns/cluster.css +64 -0
- package/css/patterns/code.css +17 -0
- package/css/patterns/combobox.css +97 -0
- package/css/patterns/comment.css +88 -0
- package/css/patterns/copy.css +82 -0
- package/css/patterns/details.css +87 -0
- package/css/patterns/dialog.css +99 -0
- package/css/patterns/drawer.css +108 -0
- package/css/patterns/dropdown.css +45 -0
- package/css/patterns/forms.css +335 -0
- package/css/patterns/grouped.css +86 -0
- package/css/patterns/horizontal-scroll.css +40 -0
- package/css/patterns/icon.css +72 -0
- package/css/patterns/lightbox.css +156 -0
- package/css/patterns/list.css +272 -0
- package/css/patterns/marquee.css +68 -0
- package/css/patterns/masonry.css +40 -0
- package/css/patterns/media.css +70 -0
- package/css/patterns/nav.css +241 -0
- package/css/patterns/notification.css +114 -0
- package/css/patterns/overlay.css +28 -0
- package/css/patterns/popover.css +68 -0
- package/css/patterns/pull-quote.css +71 -0
- package/css/patterns/scroll-based.css +227 -0
- package/css/patterns/scroll-target.css +124 -0
- package/css/patterns/separator.css +130 -0
- package/css/patterns/sitenav.css +582 -0
- package/css/patterns/split-link.css +113 -0
- package/css/patterns/splitter.css +212 -0
- package/css/patterns/stack.css +67 -0
- package/css/patterns/sticky.css +127 -0
- package/css/patterns/subgrid.css +178 -0
- package/css/patterns/svg.css +166 -0
- package/css/patterns/table.css +106 -0
- package/css/patterns/tag.css +75 -0
- package/css/patterns/text-effects.css +317 -0
- package/css/patterns/tooltip.css +68 -0
- package/css/patterns/tree.css +126 -0
- package/css/utilities.css +351 -0
- package/dist/deferred.js +1 -0
- package/dist/elements.js +887 -0
- package/dist/polyfills/adoptedStyleSheets.js +1 -0
- package/dist/polyfills/css-anchor-positioning-fn.js +17 -0
- package/dist/polyfills/global.esm.js +1 -0
- package/dist/polyfills/popover.js +63 -0
- package/dist/polyfills/template-shadowroot.js +24 -0
- package/dist/polyfills/webcomponents-bundle.js +27 -0
- package/dist/polyfills.js +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Separator — pattern partial migrated from old-css-lib.
|
|
3
|
+
* Consumes the generated token cascade (src/css/generated/tokens.css).
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* ── Separator — dividers with dashed/dotted/fade/text/ornament variants ───── */
|
|
7
|
+
.separator,
|
|
8
|
+
hr.separator {
|
|
9
|
+
--_separator-size: var(--separator-size, 1px);
|
|
10
|
+
|
|
11
|
+
border: none;
|
|
12
|
+
|
|
13
|
+
&:not(.separator--vertical) {
|
|
14
|
+
block-size: var(--_separator-size);
|
|
15
|
+
inline-size: 100%;
|
|
16
|
+
background: currentColor;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.separator--vertical {
|
|
20
|
+
inline-size: var(--_separator-size);
|
|
21
|
+
block-size: 100%;
|
|
22
|
+
background: currentColor;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&.separator--dashed {
|
|
26
|
+
background: repeating-linear-gradient(
|
|
27
|
+
to right,
|
|
28
|
+
currentColor 0,
|
|
29
|
+
currentColor 8px,
|
|
30
|
+
transparent 8px,
|
|
31
|
+
transparent 16px
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&.separator--dashed.separator--vertical {
|
|
36
|
+
background: repeating-linear-gradient(
|
|
37
|
+
to bottom,
|
|
38
|
+
currentColor 0,
|
|
39
|
+
currentColor 8px,
|
|
40
|
+
transparent 8px,
|
|
41
|
+
transparent 16px
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&.separator--dotted {
|
|
46
|
+
background: repeating-linear-gradient(
|
|
47
|
+
to right,
|
|
48
|
+
currentColor 0,
|
|
49
|
+
currentColor 2px,
|
|
50
|
+
transparent 2px,
|
|
51
|
+
transparent 8px
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&.separator--dotted.separator--vertical {
|
|
56
|
+
background: repeating-linear-gradient(
|
|
57
|
+
to bottom,
|
|
58
|
+
currentColor 0,
|
|
59
|
+
currentColor 2px,
|
|
60
|
+
transparent 2px,
|
|
61
|
+
transparent 8px
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&.separator--fade {
|
|
66
|
+
background: linear-gradient(
|
|
67
|
+
to right,
|
|
68
|
+
transparent,
|
|
69
|
+
currentColor 20%,
|
|
70
|
+
currentColor 80%,
|
|
71
|
+
transparent
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&.separator--fade.separator--vertical {
|
|
76
|
+
background: linear-gradient(
|
|
77
|
+
to bottom,
|
|
78
|
+
transparent,
|
|
79
|
+
currentColor 20%,
|
|
80
|
+
currentColor 80%,
|
|
81
|
+
transparent
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&.separator--with-text,
|
|
86
|
+
&.separator--ornament {
|
|
87
|
+
display: flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
gap: 1rem;
|
|
90
|
+
background: none;
|
|
91
|
+
block-size: auto;
|
|
92
|
+
|
|
93
|
+
&::before,
|
|
94
|
+
&::after {
|
|
95
|
+
content: '';
|
|
96
|
+
flex: 1;
|
|
97
|
+
block-size: var(--_separator-size);
|
|
98
|
+
background: currentColor;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&.separator--ornament {
|
|
103
|
+
justify-content: center;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.separator__text {
|
|
107
|
+
flex-shrink: 0;
|
|
108
|
+
font-size: 0.875em;
|
|
109
|
+
text-transform: uppercase;
|
|
110
|
+
letter-spacing: 0.05em;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.separator__ornament {
|
|
114
|
+
flex-shrink: 0;
|
|
115
|
+
inline-size: 1.5rem;
|
|
116
|
+
block-size: 1.5rem;
|
|
117
|
+
background: currentColor;
|
|
118
|
+
mask-size: contain;
|
|
119
|
+
mask-repeat: no-repeat;
|
|
120
|
+
mask-position: center;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.separator__ornament--diamond {
|
|
124
|
+
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='6' y='6' width='12' height='12' transform='rotate(45 12 12)'/%3E%3C/svg%3E");
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.separator__ornament--star {
|
|
128
|
+
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath d='M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L440.2 329l104.1-103c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L382.9 150.3 316.9 18z'/%3E%3C/svg%3E");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site Nav — the site's primary navigation, generated from a WordPress menu
|
|
3
|
+
* (Bricks `vitops-sitenav`). One markup tree, two presentations switched purely by
|
|
4
|
+
* container width — native platform only, no JS beyond the Popover API.
|
|
5
|
+
*
|
|
6
|
+
* Mobile-first (below `.sitenav--bp-{sm,md,lg,xl}`): a hamburger button (a Popover
|
|
7
|
+
* API invoker) opens a slide-in DRAWER — its sibling `[popover]`. Inside, branch
|
|
8
|
+
* items are ACCORDIONS: each is a real parent link flush with a `<details>`
|
|
9
|
+
* disclosure whose `<summary>` is *only* the caret (the link sits OUTSIDE the
|
|
10
|
+
* summary, so nothing interactive nests inside the summary's button role). The
|
|
11
|
+
* submenu opens in-flow via a grid-row height transition.
|
|
12
|
+
*
|
|
13
|
+
* Desktop (≥ the breakpoint, gated against the nearest container — `body` per
|
|
14
|
+
* layout.css): the hamburger + drawer chrome fall away, the `[popover]` panel is
|
|
15
|
+
* forced back inline as a NAVBAR, the list turns horizontal, and each branch's
|
|
16
|
+
* submenu promotes to a pop-out DROPDOWN revealed on hover, keyboard `:focus-within`,
|
|
17
|
+
* OR click (native `[open]` pins it). Top-level submenus drop below their item;
|
|
18
|
+
* deeper (megamenu) submenus fly out to the inline-end side.
|
|
19
|
+
*
|
|
20
|
+
* `.sitenav__disclosure` is `display: contents` so the `<summary>` (caret) and the
|
|
21
|
+
* submenu `<ul>` participate directly in the branch item's grid — that is what lets
|
|
22
|
+
* the caret sit inline with the link while the submenu spans full width on its own
|
|
23
|
+
* row. Native `[open]` toggling is unaffected by `display: contents`.
|
|
24
|
+
*
|
|
25
|
+
* Per-breakpoint depth caps come pre-resolved from PHP as item classes:
|
|
26
|
+
* `.sitenav__item--desktop-branch` — caret + submenu shown only ≥ breakpoint;
|
|
27
|
+
* `.sitenav__item--mobile-branch` — caret + submenu shown only below breakpoint.
|
|
28
|
+
* The parent link always stays, so a capped branch degrades to a plain link.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/* ── Container + mobile chrome ─────────────────────────────────────────────── */
|
|
32
|
+
.sitenav {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.sitenav__toggle,
|
|
38
|
+
.sitenav__close {
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
padding: 0.5rem;
|
|
43
|
+
background: transparent;
|
|
44
|
+
border: none;
|
|
45
|
+
color: inherit;
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
border-radius: var(--br-control, 0.375rem);
|
|
48
|
+
|
|
49
|
+
&:hover {
|
|
50
|
+
background: var(--color-surface-l);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&:focus-visible {
|
|
54
|
+
outline: 2px solid var(--sitenav-focus-color, var(--color-brand-primary-l));
|
|
55
|
+
outline-offset: 2px;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.sitenav__close {
|
|
60
|
+
position: absolute;
|
|
61
|
+
inset-block-start: 0.75rem;
|
|
62
|
+
inset-inline-end: 0.75rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* ── Drawer (mobile) — the [popover] sibling the hamburger controls ─────────── */
|
|
66
|
+
.sitenav__panel {
|
|
67
|
+
display: flex;
|
|
68
|
+
flex-direction: column;
|
|
69
|
+
gap: 0.25rem;
|
|
70
|
+
position: fixed;
|
|
71
|
+
inset-block: 0;
|
|
72
|
+
inline-size: min(100dvw, var(--sitenav-drawer-size, 20rem));
|
|
73
|
+
max-inline-size: 100dvw;
|
|
74
|
+
padding: 1.5rem;
|
|
75
|
+
padding-block-start: 3.5rem; /* clearance for the close button */
|
|
76
|
+
background: var(--color-surface-xxl);
|
|
77
|
+
color: var(--color-surface-xxd);
|
|
78
|
+
border: none;
|
|
79
|
+
box-shadow: var(--ds-panel);
|
|
80
|
+
overflow-y: auto;
|
|
81
|
+
overscroll-behavior: contain;
|
|
82
|
+
z-index: var(--z-tier-overlay);
|
|
83
|
+
|
|
84
|
+
/* Popover API toggles display; fade + slide across the top-layer transition. */
|
|
85
|
+
opacity: 0;
|
|
86
|
+
transition:
|
|
87
|
+
opacity 0.3s ease,
|
|
88
|
+
translate 0.3s ease,
|
|
89
|
+
overlay 0.3s allow-discrete,
|
|
90
|
+
display 0.3s allow-discrete;
|
|
91
|
+
|
|
92
|
+
&::backdrop {
|
|
93
|
+
background: transparent;
|
|
94
|
+
transition:
|
|
95
|
+
background-color 0.3s,
|
|
96
|
+
overlay 0.3s allow-discrete,
|
|
97
|
+
display 0.3s allow-discrete;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
&:popover-open::backdrop {
|
|
101
|
+
background: rgb(0 0 0 / 25%);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Slide from the chosen edge (default inline-end). */
|
|
106
|
+
.sitenav--drawer-end .sitenav__panel {
|
|
107
|
+
inset-inline-end: 0;
|
|
108
|
+
inset-inline-start: auto;
|
|
109
|
+
translate: 100% 0;
|
|
110
|
+
}
|
|
111
|
+
.sitenav--drawer-start .sitenav__panel {
|
|
112
|
+
inset-inline-start: 0;
|
|
113
|
+
inset-inline-end: auto;
|
|
114
|
+
translate: -100% 0;
|
|
115
|
+
}
|
|
116
|
+
.sitenav__panel:popover-open {
|
|
117
|
+
opacity: 1;
|
|
118
|
+
translate: 0 0;
|
|
119
|
+
}
|
|
120
|
+
@starting-style {
|
|
121
|
+
.sitenav--drawer-end .sitenav__panel:popover-open {
|
|
122
|
+
opacity: 0;
|
|
123
|
+
translate: 100% 0;
|
|
124
|
+
}
|
|
125
|
+
.sitenav--drawer-start .sitenav__panel:popover-open {
|
|
126
|
+
opacity: 0;
|
|
127
|
+
translate: -100% 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* ── Lists + links ─────────────────────────────────────────────────────────── */
|
|
132
|
+
.sitenav__list,
|
|
133
|
+
.sitenav__submenu {
|
|
134
|
+
list-style: none;
|
|
135
|
+
margin: 0;
|
|
136
|
+
padding: 0;
|
|
137
|
+
display: flex;
|
|
138
|
+
flex-direction: column;
|
|
139
|
+
gap: 0.25rem;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.sitenav__link {
|
|
143
|
+
display: inline-flex;
|
|
144
|
+
align-items: center;
|
|
145
|
+
gap: 0.5rem;
|
|
146
|
+
text-decoration: none;
|
|
147
|
+
color: inherit;
|
|
148
|
+
padding: 0.5rem 0.75rem;
|
|
149
|
+
border-radius: var(--br-control, 0.375rem);
|
|
150
|
+
|
|
151
|
+
&:hover {
|
|
152
|
+
background: var(--color-surface-l);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
&:focus-visible {
|
|
156
|
+
outline: 2px solid var(--sitenav-focus-color, var(--color-brand-primary-l));
|
|
157
|
+
outline-offset: 2px;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.sitenav__empty {
|
|
162
|
+
opacity: 0.6;
|
|
163
|
+
font-style: italic;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* ── Branch item — mobile accordion ────────────────────────────────────────
|
|
167
|
+
The item is a grid: [link | caret] on row 1, the submenu spanning row 2. The
|
|
168
|
+
<details> holds only the caret <summary>; the submenu <ul> is its sibling and a
|
|
169
|
+
real grid child of the item. The row-2 track animates 0fr→1fr when the details is
|
|
170
|
+
open (the classic no-JS accordion, driven by `:has`), so the submenu pushes the
|
|
171
|
+
content below rather than overlaying it. */
|
|
172
|
+
.sitenav__item--branch {
|
|
173
|
+
display: grid;
|
|
174
|
+
grid-template-columns: 1fr auto;
|
|
175
|
+
grid-template-rows: auto 0fr;
|
|
176
|
+
align-items: center;
|
|
177
|
+
column-gap: 0.5rem;
|
|
178
|
+
transition: grid-template-rows 0.25s ease;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.sitenav__item--branch > .split-link__link {
|
|
182
|
+
grid-column: 1;
|
|
183
|
+
grid-row: 1;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* <details> is only the caret; keep its box out of the flow's height. */
|
|
187
|
+
.sitenav__disclosure {
|
|
188
|
+
grid-column: 2;
|
|
189
|
+
grid-row: 1;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* The <summary>. `.split-link__toggle` supplies the flush look, hover + focus, and
|
|
193
|
+
the caret transition; only the disclosure-marker reset is added here. */
|
|
194
|
+
.sitenav__subtoggle {
|
|
195
|
+
list-style: none;
|
|
196
|
+
cursor: pointer;
|
|
197
|
+
|
|
198
|
+
&::-webkit-details-marker {
|
|
199
|
+
display: none;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.sitenav__item--branch > .sitenav__submenu {
|
|
204
|
+
grid-column: 1 / -1;
|
|
205
|
+
grid-row: 2;
|
|
206
|
+
/* Stretch to the row-2 track (not content-sized) so the 0fr collapsed state
|
|
207
|
+
actually clips to 0 — the item's own align-self must beat the grid's
|
|
208
|
+
`align-items: center`, or overflow:hidden has nothing to clip against. */
|
|
209
|
+
align-self: stretch;
|
|
210
|
+
min-block-size: 0;
|
|
211
|
+
overflow: hidden;
|
|
212
|
+
padding-inline-start: 1rem;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.sitenav__item--branch:has(> .sitenav__disclosure[open]) {
|
|
216
|
+
grid-template-rows: auto 1fr;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* Caret flips while the disclosure is open (summary carries no aria-expanded). */
|
|
220
|
+
.sitenav__disclosure[open] > .sitenav__subtoggle .split-link__caret {
|
|
221
|
+
rotate: 180deg;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Depth cap (mobile side): a desktop-only branch shows just its parent link. */
|
|
225
|
+
.sitenav__item--desktop-branch > .sitenav__disclosure,
|
|
226
|
+
.sitenav__item--desktop-branch > .sitenav__submenu {
|
|
227
|
+
display: none;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* ── Desktop promotion — one block per framework breakpoint ─────────────────
|
|
231
|
+
Only the min-width threshold + `.sitenav--bp-*` scope differ; the nested ruleset
|
|
232
|
+
is identical. CSS has no mixins, so the four blocks are intentionally parallel —
|
|
233
|
+
edit them together. Each: hide the mobile chrome, force the [popover] panel back
|
|
234
|
+
inline as a navbar, turn the list horizontal, and promote submenus to dropdowns. */
|
|
235
|
+
@container (min-width: 30rem) {
|
|
236
|
+
.sitenav--bp-sm {
|
|
237
|
+
& > .sitenav__toggle,
|
|
238
|
+
& .sitenav__close {
|
|
239
|
+
display: none;
|
|
240
|
+
}
|
|
241
|
+
/* [popover] is UA/polyfill display:none while closed; !important forces the
|
|
242
|
+
navbar body back inline (the hamburger is gone, so it never re-hides). */
|
|
243
|
+
& .sitenav__panel {
|
|
244
|
+
display: flex !important;
|
|
245
|
+
flex-direction: row;
|
|
246
|
+
align-items: center;
|
|
247
|
+
position: static;
|
|
248
|
+
inset: auto;
|
|
249
|
+
inline-size: auto;
|
|
250
|
+
max-inline-size: none;
|
|
251
|
+
block-size: auto;
|
|
252
|
+
padding: 0;
|
|
253
|
+
translate: none;
|
|
254
|
+
opacity: 1;
|
|
255
|
+
overflow: visible;
|
|
256
|
+
background: none;
|
|
257
|
+
color: inherit;
|
|
258
|
+
box-shadow: none;
|
|
259
|
+
z-index: auto;
|
|
260
|
+
}
|
|
261
|
+
& .sitenav__panel::backdrop {
|
|
262
|
+
display: none;
|
|
263
|
+
}
|
|
264
|
+
& .sitenav__list {
|
|
265
|
+
flex-direction: row;
|
|
266
|
+
flex-wrap: wrap;
|
|
267
|
+
align-items: center;
|
|
268
|
+
}
|
|
269
|
+
& .sitenav__item--branch {
|
|
270
|
+
position: relative;
|
|
271
|
+
display: flex;
|
|
272
|
+
align-items: center;
|
|
273
|
+
grid-template-columns: none;
|
|
274
|
+
grid-template-rows: none;
|
|
275
|
+
}
|
|
276
|
+
& .sitenav__submenu {
|
|
277
|
+
position: absolute;
|
|
278
|
+
inset-block-start: 100%;
|
|
279
|
+
inset-inline-start: 0;
|
|
280
|
+
min-inline-size: 13rem;
|
|
281
|
+
padding: 0.5rem;
|
|
282
|
+
overflow: visible;
|
|
283
|
+
background: var(--color-surface-xxl);
|
|
284
|
+
color: var(--color-surface-xxd);
|
|
285
|
+
border: var(--b-panel);
|
|
286
|
+
border-radius: var(--br-panel);
|
|
287
|
+
box-shadow: var(--ds-panel);
|
|
288
|
+
z-index: var(--z-tier-overlay);
|
|
289
|
+
opacity: 0;
|
|
290
|
+
visibility: hidden;
|
|
291
|
+
pointer-events: none;
|
|
292
|
+
translate: 0 0.25rem;
|
|
293
|
+
transition:
|
|
294
|
+
opacity 0.15s ease,
|
|
295
|
+
translate 0.15s ease,
|
|
296
|
+
visibility 0.15s allow-discrete;
|
|
297
|
+
}
|
|
298
|
+
/* deeper submenus (inside a panel) fly out to the side, not downward */
|
|
299
|
+
& .sitenav__submenu .sitenav__item--branch > .sitenav__disclosure > .sitenav__submenu {
|
|
300
|
+
inset-block-start: 0;
|
|
301
|
+
inset-inline-start: 100%;
|
|
302
|
+
translate: 0.25rem 0;
|
|
303
|
+
}
|
|
304
|
+
& .sitenav__item--branch:hover > .sitenav__disclosure > .sitenav__submenu,
|
|
305
|
+
& .sitenav__item--branch:focus-within > .sitenav__disclosure > .sitenav__submenu,
|
|
306
|
+
& .sitenav__item--branch > .sitenav__disclosure[open] > .sitenav__submenu {
|
|
307
|
+
opacity: 1;
|
|
308
|
+
visibility: visible;
|
|
309
|
+
pointer-events: auto;
|
|
310
|
+
translate: 0 0;
|
|
311
|
+
}
|
|
312
|
+
/* depth caps flip at the breakpoint */
|
|
313
|
+
& .sitenav__item--desktop-branch > .sitenav__disclosure > .sitenav__subtoggle {
|
|
314
|
+
display: inline-flex;
|
|
315
|
+
}
|
|
316
|
+
& .sitenav__item--mobile-branch > .sitenav__disclosure > .sitenav__subtoggle,
|
|
317
|
+
& .sitenav__item--mobile-branch > .sitenav__disclosure > .sitenav__submenu {
|
|
318
|
+
display: none;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@container (min-width: 48rem) {
|
|
324
|
+
.sitenav--bp-md {
|
|
325
|
+
& > .sitenav__toggle,
|
|
326
|
+
& .sitenav__close {
|
|
327
|
+
display: none;
|
|
328
|
+
}
|
|
329
|
+
& .sitenav__panel {
|
|
330
|
+
display: flex !important;
|
|
331
|
+
flex-direction: row;
|
|
332
|
+
align-items: center;
|
|
333
|
+
position: static;
|
|
334
|
+
inset: auto;
|
|
335
|
+
inline-size: auto;
|
|
336
|
+
max-inline-size: none;
|
|
337
|
+
block-size: auto;
|
|
338
|
+
padding: 0;
|
|
339
|
+
translate: none;
|
|
340
|
+
opacity: 1;
|
|
341
|
+
overflow: visible;
|
|
342
|
+
background: none;
|
|
343
|
+
color: inherit;
|
|
344
|
+
box-shadow: none;
|
|
345
|
+
z-index: auto;
|
|
346
|
+
}
|
|
347
|
+
& .sitenav__panel::backdrop {
|
|
348
|
+
display: none;
|
|
349
|
+
}
|
|
350
|
+
& .sitenav__list {
|
|
351
|
+
flex-direction: row;
|
|
352
|
+
flex-wrap: wrap;
|
|
353
|
+
align-items: center;
|
|
354
|
+
}
|
|
355
|
+
& .sitenav__item--branch {
|
|
356
|
+
position: relative;
|
|
357
|
+
display: flex;
|
|
358
|
+
align-items: center;
|
|
359
|
+
grid-template-columns: none;
|
|
360
|
+
grid-template-rows: none;
|
|
361
|
+
}
|
|
362
|
+
& .sitenav__submenu {
|
|
363
|
+
position: absolute;
|
|
364
|
+
inset-block-start: 100%;
|
|
365
|
+
inset-inline-start: 0;
|
|
366
|
+
min-inline-size: 13rem;
|
|
367
|
+
padding: 0.5rem;
|
|
368
|
+
overflow: visible;
|
|
369
|
+
background: var(--color-surface-xxl);
|
|
370
|
+
color: var(--color-surface-xxd);
|
|
371
|
+
border: var(--b-panel);
|
|
372
|
+
border-radius: var(--br-panel);
|
|
373
|
+
box-shadow: var(--ds-panel);
|
|
374
|
+
z-index: var(--z-tier-overlay);
|
|
375
|
+
opacity: 0;
|
|
376
|
+
visibility: hidden;
|
|
377
|
+
pointer-events: none;
|
|
378
|
+
translate: 0 0.25rem;
|
|
379
|
+
transition:
|
|
380
|
+
opacity 0.15s ease,
|
|
381
|
+
translate 0.15s ease,
|
|
382
|
+
visibility 0.15s allow-discrete;
|
|
383
|
+
}
|
|
384
|
+
& .sitenav__submenu .sitenav__item--branch > .sitenav__submenu {
|
|
385
|
+
inset-block-start: 0;
|
|
386
|
+
inset-inline-start: 100%;
|
|
387
|
+
translate: 0.25rem 0;
|
|
388
|
+
}
|
|
389
|
+
& .sitenav__item--branch:hover > .sitenav__submenu,
|
|
390
|
+
& .sitenav__item--branch:focus-within > .sitenav__submenu,
|
|
391
|
+
& .sitenav__item--branch:has(> .sitenav__disclosure[open]) > .sitenav__submenu {
|
|
392
|
+
opacity: 1;
|
|
393
|
+
visibility: visible;
|
|
394
|
+
pointer-events: auto;
|
|
395
|
+
translate: 0 0;
|
|
396
|
+
}
|
|
397
|
+
/* depth caps flip at the breakpoint: desktop-only branches reveal their caret +
|
|
398
|
+
dropdown; mobile-only branches collapse to a plain link. */
|
|
399
|
+
& .sitenav__item--desktop-branch > .sitenav__disclosure,
|
|
400
|
+
& .sitenav__item--desktop-branch > .sitenav__submenu {
|
|
401
|
+
display: block;
|
|
402
|
+
}
|
|
403
|
+
& .sitenav__item--mobile-branch > .sitenav__disclosure,
|
|
404
|
+
& .sitenav__item--mobile-branch > .sitenav__submenu {
|
|
405
|
+
display: none;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
@container (min-width: 64rem) {
|
|
411
|
+
.sitenav--bp-lg {
|
|
412
|
+
& > .sitenav__toggle,
|
|
413
|
+
& .sitenav__close {
|
|
414
|
+
display: none;
|
|
415
|
+
}
|
|
416
|
+
& .sitenav__panel {
|
|
417
|
+
display: flex !important;
|
|
418
|
+
flex-direction: row;
|
|
419
|
+
align-items: center;
|
|
420
|
+
position: static;
|
|
421
|
+
inset: auto;
|
|
422
|
+
inline-size: auto;
|
|
423
|
+
max-inline-size: none;
|
|
424
|
+
block-size: auto;
|
|
425
|
+
padding: 0;
|
|
426
|
+
translate: none;
|
|
427
|
+
opacity: 1;
|
|
428
|
+
overflow: visible;
|
|
429
|
+
background: none;
|
|
430
|
+
color: inherit;
|
|
431
|
+
box-shadow: none;
|
|
432
|
+
z-index: auto;
|
|
433
|
+
}
|
|
434
|
+
& .sitenav__panel::backdrop {
|
|
435
|
+
display: none;
|
|
436
|
+
}
|
|
437
|
+
& .sitenav__list {
|
|
438
|
+
flex-direction: row;
|
|
439
|
+
flex-wrap: wrap;
|
|
440
|
+
align-items: center;
|
|
441
|
+
}
|
|
442
|
+
& .sitenav__item--branch {
|
|
443
|
+
position: relative;
|
|
444
|
+
display: flex;
|
|
445
|
+
align-items: center;
|
|
446
|
+
grid-template-columns: none;
|
|
447
|
+
grid-template-rows: none;
|
|
448
|
+
}
|
|
449
|
+
& .sitenav__submenu {
|
|
450
|
+
position: absolute;
|
|
451
|
+
inset-block-start: 100%;
|
|
452
|
+
inset-inline-start: 0;
|
|
453
|
+
min-inline-size: 13rem;
|
|
454
|
+
padding: 0.5rem;
|
|
455
|
+
overflow: visible;
|
|
456
|
+
background: var(--color-surface-xxl);
|
|
457
|
+
color: var(--color-surface-xxd);
|
|
458
|
+
border: var(--b-panel);
|
|
459
|
+
border-radius: var(--br-panel);
|
|
460
|
+
box-shadow: var(--ds-panel);
|
|
461
|
+
z-index: var(--z-tier-overlay);
|
|
462
|
+
opacity: 0;
|
|
463
|
+
visibility: hidden;
|
|
464
|
+
pointer-events: none;
|
|
465
|
+
translate: 0 0.25rem;
|
|
466
|
+
transition:
|
|
467
|
+
opacity 0.15s ease,
|
|
468
|
+
translate 0.15s ease,
|
|
469
|
+
visibility 0.15s allow-discrete;
|
|
470
|
+
}
|
|
471
|
+
& .sitenav__submenu .sitenav__item--branch > .sitenav__submenu {
|
|
472
|
+
inset-block-start: 0;
|
|
473
|
+
inset-inline-start: 100%;
|
|
474
|
+
translate: 0.25rem 0;
|
|
475
|
+
}
|
|
476
|
+
& .sitenav__item--branch:hover > .sitenav__submenu,
|
|
477
|
+
& .sitenav__item--branch:focus-within > .sitenav__submenu,
|
|
478
|
+
& .sitenav__item--branch:has(> .sitenav__disclosure[open]) > .sitenav__submenu {
|
|
479
|
+
opacity: 1;
|
|
480
|
+
visibility: visible;
|
|
481
|
+
pointer-events: auto;
|
|
482
|
+
translate: 0 0;
|
|
483
|
+
}
|
|
484
|
+
/* depth caps flip at the breakpoint: desktop-only branches reveal their caret +
|
|
485
|
+
dropdown; mobile-only branches collapse to a plain link. */
|
|
486
|
+
& .sitenav__item--desktop-branch > .sitenav__disclosure,
|
|
487
|
+
& .sitenav__item--desktop-branch > .sitenav__submenu {
|
|
488
|
+
display: block;
|
|
489
|
+
}
|
|
490
|
+
& .sitenav__item--mobile-branch > .sitenav__disclosure,
|
|
491
|
+
& .sitenav__item--mobile-branch > .sitenav__submenu {
|
|
492
|
+
display: none;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
@container (min-width: 80rem) {
|
|
498
|
+
.sitenav--bp-xl {
|
|
499
|
+
& > .sitenav__toggle,
|
|
500
|
+
& .sitenav__close {
|
|
501
|
+
display: none;
|
|
502
|
+
}
|
|
503
|
+
& .sitenav__panel {
|
|
504
|
+
display: flex !important;
|
|
505
|
+
flex-direction: row;
|
|
506
|
+
align-items: center;
|
|
507
|
+
position: static;
|
|
508
|
+
inset: auto;
|
|
509
|
+
inline-size: auto;
|
|
510
|
+
max-inline-size: none;
|
|
511
|
+
block-size: auto;
|
|
512
|
+
padding: 0;
|
|
513
|
+
translate: none;
|
|
514
|
+
opacity: 1;
|
|
515
|
+
overflow: visible;
|
|
516
|
+
background: none;
|
|
517
|
+
color: inherit;
|
|
518
|
+
box-shadow: none;
|
|
519
|
+
z-index: auto;
|
|
520
|
+
}
|
|
521
|
+
& .sitenav__panel::backdrop {
|
|
522
|
+
display: none;
|
|
523
|
+
}
|
|
524
|
+
& .sitenav__list {
|
|
525
|
+
flex-direction: row;
|
|
526
|
+
flex-wrap: wrap;
|
|
527
|
+
align-items: center;
|
|
528
|
+
}
|
|
529
|
+
& .sitenav__item--branch {
|
|
530
|
+
position: relative;
|
|
531
|
+
display: flex;
|
|
532
|
+
align-items: center;
|
|
533
|
+
grid-template-columns: none;
|
|
534
|
+
grid-template-rows: none;
|
|
535
|
+
}
|
|
536
|
+
& .sitenav__submenu {
|
|
537
|
+
position: absolute;
|
|
538
|
+
inset-block-start: 100%;
|
|
539
|
+
inset-inline-start: 0;
|
|
540
|
+
min-inline-size: 13rem;
|
|
541
|
+
padding: 0.5rem;
|
|
542
|
+
overflow: visible;
|
|
543
|
+
background: var(--color-surface-xxl);
|
|
544
|
+
color: var(--color-surface-xxd);
|
|
545
|
+
border: var(--b-panel);
|
|
546
|
+
border-radius: var(--br-panel);
|
|
547
|
+
box-shadow: var(--ds-panel);
|
|
548
|
+
z-index: var(--z-tier-overlay);
|
|
549
|
+
opacity: 0;
|
|
550
|
+
visibility: hidden;
|
|
551
|
+
pointer-events: none;
|
|
552
|
+
translate: 0 0.25rem;
|
|
553
|
+
transition:
|
|
554
|
+
opacity 0.15s ease,
|
|
555
|
+
translate 0.15s ease,
|
|
556
|
+
visibility 0.15s allow-discrete;
|
|
557
|
+
}
|
|
558
|
+
& .sitenav__submenu .sitenav__item--branch > .sitenav__submenu {
|
|
559
|
+
inset-block-start: 0;
|
|
560
|
+
inset-inline-start: 100%;
|
|
561
|
+
translate: 0.25rem 0;
|
|
562
|
+
}
|
|
563
|
+
& .sitenav__item--branch:hover > .sitenav__submenu,
|
|
564
|
+
& .sitenav__item--branch:focus-within > .sitenav__submenu,
|
|
565
|
+
& .sitenav__item--branch:has(> .sitenav__disclosure[open]) > .sitenav__submenu {
|
|
566
|
+
opacity: 1;
|
|
567
|
+
visibility: visible;
|
|
568
|
+
pointer-events: auto;
|
|
569
|
+
translate: 0 0;
|
|
570
|
+
}
|
|
571
|
+
/* depth caps flip at the breakpoint: desktop-only branches reveal their caret +
|
|
572
|
+
dropdown; mobile-only branches collapse to a plain link. */
|
|
573
|
+
& .sitenav__item--desktop-branch > .sitenav__disclosure,
|
|
574
|
+
& .sitenav__item--desktop-branch > .sitenav__submenu {
|
|
575
|
+
display: block;
|
|
576
|
+
}
|
|
577
|
+
& .sitenav__item--mobile-branch > .sitenav__disclosure,
|
|
578
|
+
& .sitenav__item--mobile-branch > .sitenav__submenu {
|
|
579
|
+
display: none;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|