@helloimjolopez-pathway/pathway-tokens 6.0.0 → 7.0.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 +69 -15
- package/components/sidenav/sidenav.jsx +85 -14
- package/dist/breakpoints.css +1 -1
- package/dist/layout-contextual.css +15 -31
- package/dist/layout-responsive.css +32 -0
- package/dist/layout.css +1 -4
- package/dist/primitives.css +115 -113
- package/dist/themes/light.css +154 -311
- package/dist/themes/midnight.css +142 -299
- package/dist/tokens.js +4100 -9535
- package/dist/tokens.json +1737 -3723
- package/package.json +13 -6
package/README.md
CHANGED
|
@@ -2,26 +2,68 @@
|
|
|
2
2
|
|
|
3
3
|
Design system for Ministry Brands Amplify. Tokens + components + specifications, all versioned in one place, with Storybook deployed from `main`.
|
|
4
4
|
|
|
5
|
+
> **Looking for the tokens?** → **[TOKENS.md](TOKENS.md)** — where the CSS lives, which
|
|
6
|
+
> of the 267 names you may use, and what to link in what order.
|
|
7
|
+
|
|
5
8
|
## Using the tokens
|
|
6
9
|
|
|
7
|
-
The
|
|
10
|
+
**The colour contract is 169 names. Your full working vocabulary is 267.**
|
|
11
|
+
|
|
12
|
+
That is the number worth knowing, because adding up every declaration in the token
|
|
13
|
+
folder gives 966 and the retired `tokens.css` used to emit 2,338. Neither is the
|
|
14
|
+
contract. The difference is that primitives ship but are not named, and the modes share
|
|
15
|
+
one name set rather than each having their own.
|
|
16
|
+
|
|
17
|
+
| | Count | Name these? |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Colour (`themes/light.css`, `themes/midnight.css` — same names) | **169** | Yes |
|
|
20
|
+
| Type scale (`type.css`) | 41 | Yes |
|
|
21
|
+
| Spacing, radii, borders (`layout.css`) | 40 | Yes |
|
|
22
|
+
| Motion (`motion.css`) | 17 | Yes |
|
|
23
|
+
| Sheet and TopNav padding (`layout-responsive.css`) | 6 | Yes |
|
|
24
|
+
| Breakpoints (`breakpoints.css`) | 5 | Yes |
|
|
25
|
+
| **Working vocabulary** | **267** | |
|
|
26
|
+
| Raw ramps (`primitives.css`) | 350 | **No** — but you must load it |
|
|
27
|
+
| Component metrics (`layout-contextual.css`) | 26 | This repo's components |
|
|
28
|
+
|
|
29
|
+
**The CSS lives in [`src/tokens/`](src/tokens/), and that folder has its own README**
|
|
30
|
+
covering load order, theming, the primitives question and the traps. Read it before
|
|
31
|
+
wiring anything up. The published package carries the same guidance in `dist/README.md`,
|
|
32
|
+
plus `dist/contract.json` listing every consumable name if you want to lint against it.
|
|
33
|
+
|
|
34
|
+
### Install
|
|
8
35
|
|
|
9
36
|
```bash
|
|
10
37
|
npm install @helloimjolopez-pathway/pathway-tokens
|
|
11
38
|
```
|
|
12
39
|
|
|
13
|
-
|
|
14
|
-
// CSS custom properties — import once in your app entry point
|
|
15
|
-
import "@helloimjolopez-pathway/pathway-tokens/css";
|
|
40
|
+
NuGet: `Pathway.DesignTokens`.
|
|
16
41
|
|
|
17
|
-
|
|
42
|
+
```js
|
|
43
|
+
// Every stylesheet is a named subpath export. primitives.css MUST come first —
|
|
44
|
+
// the themes resolve through it, so without it all colour resolves to nothing
|
|
45
|
+
// and the page renders unstyled with no console error.
|
|
46
|
+
import "@helloimjolopez-pathway/pathway-tokens/primitives.css";
|
|
47
|
+
import "@helloimjolopez-pathway/pathway-tokens/themes/light.css";
|
|
48
|
+
import "@helloimjolopez-pathway/pathway-tokens/themes/midnight.css";
|
|
49
|
+
import "@helloimjolopez-pathway/pathway-tokens/type.css";
|
|
50
|
+
import "@helloimjolopez-pathway/pathway-tokens/layout.css";
|
|
51
|
+
import "@helloimjolopez-pathway/pathway-tokens/layout-responsive.css";
|
|
52
|
+
import "@helloimjolopez-pathway/pathway-tokens/motion.css";
|
|
53
|
+
import "@helloimjolopez-pathway/pathway-tokens/breakpoints.css";
|
|
54
|
+
|
|
55
|
+
// JS token object, and the raw DTCG JSON for tooling
|
|
18
56
|
import tokens from "@helloimjolopez-pathway/pathway-tokens";
|
|
19
|
-
|
|
20
|
-
// Raw DTCG JSON (for tooling)
|
|
21
57
|
import tokenJson from "@helloimjolopez-pathway/pathway-tokens/json";
|
|
58
|
+
import contract from "@helloimjolopez-pathway/pathway-tokens/contract.json";
|
|
22
59
|
```
|
|
23
60
|
|
|
24
|
-
|
|
61
|
+
There is deliberately no single `/css` entry point. One combined file was what
|
|
62
|
+
`tokens.css` used to be: it emitted every token times every mode with the mode baked
|
|
63
|
+
into the property name, 2,338 custom properties, and it is the reason this system read
|
|
64
|
+
as too granular to adopt. Retired 2026-09-03 and not coming back.
|
|
65
|
+
|
|
66
|
+
### Without a bundler
|
|
25
67
|
|
|
26
68
|
```html
|
|
27
69
|
<!-- primitives first: the themes reference these via var(), so this must load -->
|
|
@@ -30,23 +72,35 @@ Without a bundler — link the CSS directly:
|
|
|
30
72
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/themes/midnight.css" />
|
|
31
73
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/type.css" />
|
|
32
74
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/layout.css" />
|
|
33
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/layout-
|
|
75
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/layout-responsive.css" />
|
|
34
76
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/motion.css" />
|
|
35
77
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/helloimjolopez-collab/pathway-ds@main/src/tokens/breakpoints.css" />
|
|
36
78
|
```
|
|
37
79
|
|
|
38
|
-
|
|
80
|
+
`@main` tracks the latest. Pin a tag instead if you need a fixed version.
|
|
81
|
+
|
|
82
|
+
### Using a token
|
|
39
83
|
|
|
40
84
|
```css
|
|
41
|
-
.
|
|
42
|
-
background: var(--semantic-color-
|
|
43
|
-
color: var(--semantic-color-
|
|
85
|
+
.card {
|
|
86
|
+
background: var(--semantic-color-fill-surface-sheet);
|
|
87
|
+
color: var(--semantic-color-foreground-static-neutral-strong);
|
|
88
|
+
border: var(--semantic-layout-units-borderwidth-base) solid
|
|
89
|
+
var(--semantic-color-stroke-static-neutral-base);
|
|
90
|
+
border-radius: var(--semantic-layout-units-cornerradius-medium);
|
|
44
91
|
}
|
|
45
92
|
```
|
|
46
93
|
|
|
47
|
-
|
|
94
|
+
One name carries both modes. Set `data-theme="midnight"` on `<html>` to flip the page,
|
|
95
|
+
or on any element to flip just that subtree. Never write a mode into a property name —
|
|
96
|
+
`--semantic-color-light-mode-*` resolves to nothing.
|
|
97
|
+
|
|
98
|
+
### Can I use a primitive?
|
|
48
99
|
|
|
49
|
-
|
|
100
|
+
Yes, and nothing stops you. But `Primitive: Color` has exactly one mode, so a primitive
|
|
101
|
+
holds one value forever and will **not** respond to `data-theme`. Reach for one only
|
|
102
|
+
when you specifically want a fixed value. Full reasoning in
|
|
103
|
+
[`src/tokens/README.md`](src/tokens/README.md).
|
|
50
104
|
|
|
51
105
|
## Layout
|
|
52
106
|
|
|
@@ -62,7 +62,7 @@ export const T = {
|
|
|
62
62
|
navHover: c("fill-action-selection-hover"),
|
|
63
63
|
navActive: c("fill-action-selection-selected"),
|
|
64
64
|
navTrail: c("fill-action-selection-trail"),
|
|
65
|
-
infoSubtle: c("stroke-static-neutral-
|
|
65
|
+
infoSubtle: c("stroke-static-neutral-base"), // container right border
|
|
66
66
|
},
|
|
67
67
|
surface: { navLight: c("fill-surface-sheet") },
|
|
68
68
|
// Label, icon and chevron all resolve to the SAME token per state. A nav item
|
|
@@ -73,8 +73,8 @@ export const T = {
|
|
|
73
73
|
navHover: c("foreground-action-secondary-hover"),
|
|
74
74
|
navActive: c("foreground-action-secondary-pressed"),
|
|
75
75
|
navDisabled: c("foreground-action-disabled"),
|
|
76
|
-
secondary: c("foreground-static-neutral-
|
|
77
|
-
secondarySubtle: c("foreground-static-neutral-
|
|
76
|
+
secondary: c("foreground-static-neutral-base"), // PopoverMenu.SectionLabel
|
|
77
|
+
secondarySubtle: c("foreground-static-neutral-base"), // NavSectionLabel
|
|
78
78
|
},
|
|
79
79
|
icon: {
|
|
80
80
|
navBase: c("foreground-action-secondary-rest"),
|
|
@@ -85,7 +85,7 @@ export const T = {
|
|
|
85
85
|
},
|
|
86
86
|
// The active-item stripe takes the loud brand blue straight from the Action
|
|
87
87
|
// tier rather than owning a token of its own.
|
|
88
|
-
indicator: c("fill-action-primary-pressed"),
|
|
88
|
+
indicator: c("fill-action-primary-strong-pressed"),
|
|
89
89
|
radius: u("cornerradius-medium", 8),
|
|
90
90
|
};
|
|
91
91
|
|
|
@@ -310,7 +310,7 @@ export function SideNavTooltip({ label, anchorRect, onMouseEnter, onMouseLeave }
|
|
|
310
310
|
|
|
311
311
|
// ─── SectionLabel ─────────────────────────────────────────────────────────────
|
|
312
312
|
// Figma node 40006794-5977 — building block used in CollapsedPopover headers.
|
|
313
|
-
// Tokens: Foreground/Static/Neutral/
|
|
313
|
+
// Tokens: Foreground/Static/Neutral/Base (#313131), Label/Section/Small/Semibold
|
|
314
314
|
// (11px / 600 / 16px / 0.6px letter-spacing, uppercase)
|
|
315
315
|
// Padding: Padding/Tight (12px left), Padding/XTight (8px vertical)
|
|
316
316
|
export function SectionLabel({ label }) {
|
|
@@ -381,7 +381,7 @@ export function PopoverRow({ item, onClick, activeId }) {
|
|
|
381
381
|
export function CollapseButton({ isSidebarCollapsed, onToggle, collapseIcon, expandIcon }) {
|
|
382
382
|
const [h, setH] = useState(false);
|
|
383
383
|
const labelColor = h ? T.text.navHover : T.text.navBase;
|
|
384
|
-
const actionIconColor = T.
|
|
384
|
+
const actionIconColor = T.foreground.actionSecondary; // #6b6b6b — always static, no hover change
|
|
385
385
|
return (
|
|
386
386
|
<div style={{ width: "100%" }}>
|
|
387
387
|
<div style={{ height: 1, backgroundColor: T.fill.infoSubtle, marginBottom: L.collapseGap }} />
|
|
@@ -431,7 +431,7 @@ export function CollapseButton({ isSidebarCollapsed, onToggle, collapseIcon, exp
|
|
|
431
431
|
// ─── SideNav (top-level container) ────────────────────────────────────────────
|
|
432
432
|
// ── NavSectionLabel ──────────────────────────────────────────────────────────
|
|
433
433
|
// Optional in-nav section heading. Figma: SideNav.SectionLabel (node 40006794:5975).
|
|
434
|
-
// Tokens: Label/Section/Small/Semibold (11px/600/16px/0.6px), Foreground/Static/Neutral/
|
|
434
|
+
// Tokens: Label/Section/Small/Semibold (11px/600/16px/0.6px), Foreground/Static/Neutral/Base (#606060)
|
|
435
435
|
// Container: h-[40px], pl-[4px], pr-[4px], py-[8px]
|
|
436
436
|
// In collapsed rail: hidden — replaced by a Divider (rendered by SideNav itself, see §2.3)
|
|
437
437
|
// ── NavHeader ────────────────────────────────────────────────────────────────
|
|
@@ -441,7 +441,7 @@ export function CollapseButton({ isSidebarCollapsed, onToggle, collapseIcon, exp
|
|
|
441
441
|
// Hidden on mobile (<768px) — TopNav hamburger is the sole toggle there.
|
|
442
442
|
export function NavHeader({ isSidebarCollapsed, onToggle, collapseIcon, expandIcon }) {
|
|
443
443
|
const [h, setH] = useState(false);
|
|
444
|
-
const actionIconColor = T.
|
|
444
|
+
const actionIconColor = T.foreground.actionSecondary; // #6b6b6b — always static
|
|
445
445
|
return (
|
|
446
446
|
<div style={{ width: "100%", flexShrink: 0 }}>
|
|
447
447
|
<div onClick={onToggle} onMouseEnter={() => setH(true)} onMouseLeave={() => setH(false)}
|
|
@@ -471,7 +471,7 @@ export function NavHeader({ isSidebarCollapsed, onToggle, collapseIcon, expandIc
|
|
|
471
471
|
</div>
|
|
472
472
|
)}
|
|
473
473
|
</div>
|
|
474
|
-
{/* Divider — Stroke/Static/Neutral/
|
|
474
|
+
{/* Divider — Stroke/Static/Neutral/Base, py-[2px] in Figma */}
|
|
475
475
|
<div style={{ padding: "2px 0" }}>
|
|
476
476
|
<div style={{ height: 1, backgroundColor: T.fill.infoSubtle }} />
|
|
477
477
|
</div>
|
|
@@ -570,6 +570,34 @@ export function SideNav({
|
|
|
570
570
|
hideCollapseButton = false,
|
|
571
571
|
defaultExpanded = {},
|
|
572
572
|
className = "",
|
|
573
|
+
// ── SLOTS ─────────────────────────────────────────────────────────────────
|
|
574
|
+
// Three insertion points, mirroring the slot structure in Figma. Added
|
|
575
|
+
// 2026-09-10 at the user's explicit request (which is what the §1.1 Figma
|
|
576
|
+
// exemption requires before SideNav changes).
|
|
577
|
+
//
|
|
578
|
+
// WHY SLOTS RATHER THAN MORE PROPS: the `items` array can express anything
|
|
579
|
+
// item-SHAPED - a label, an icon, nesting, a disabled state. It cannot
|
|
580
|
+
// express a module-specific widget: a support button, a plan-usage meter, a
|
|
581
|
+
// "New" badge component a team already owns. Without a slot those teams have
|
|
582
|
+
// exactly one option, which is to stop using the component and rebuild the
|
|
583
|
+
// nav. That is the drift this component exists to prevent, so the escape
|
|
584
|
+
// hatch has to be inside it.
|
|
585
|
+
//
|
|
586
|
+
// headerEnd after the collapse toggle in the pinned header. This is the
|
|
587
|
+
// common case: a module name, a small action. In Figma the
|
|
588
|
+
// header is a slot that can hold the toggle alone, or the
|
|
589
|
+
// toggle plus a label or button.
|
|
590
|
+
// children inside the scroll region, after the items. Anything that
|
|
591
|
+
// scrolls with the list.
|
|
592
|
+
// footer PINNED below the scroll region, so it stays put while the
|
|
593
|
+
// list scrolls. Buttons live here.
|
|
594
|
+
//
|
|
595
|
+
// Each is null by default and renders NOTHING when null - no wrapper, no
|
|
596
|
+
// padding, no border. An always-rendered empty wrapper would shift the
|
|
597
|
+
// layout of every nav that does not use the slot.
|
|
598
|
+
headerEnd = null,
|
|
599
|
+
children = null,
|
|
600
|
+
footer = null,
|
|
573
601
|
}) {
|
|
574
602
|
const [expanded, setExpanded] = useState(defaultExpanded);
|
|
575
603
|
const [popoverId, setPopoverId] = useState(null);
|
|
@@ -670,10 +698,31 @@ export function SideNav({
|
|
|
670
698
|
}}>
|
|
671
699
|
{/* NavHeader — TOP of nav, PINNED (flexShrink:0) so it stays visible while the
|
|
672
700
|
item list scrolls beneath it. Hidden on mobile (<768px). */}
|
|
673
|
-
{!hideCollapseButton && (
|
|
701
|
+
{(!hideCollapseButton || headerEnd) && (
|
|
674
702
|
<div style={{ flexShrink: 0 }}>
|
|
675
|
-
|
|
676
|
-
|
|
703
|
+
{!hideCollapseButton && (
|
|
704
|
+
<NavHeader isSidebarCollapsed={collapsed}
|
|
705
|
+
onToggle={() => onCollapseChange && onCollapseChange(!collapsed)} />
|
|
706
|
+
)}
|
|
707
|
+
{/* headerEnd slot. Hidden on the 72px rail: the rail is only wide
|
|
708
|
+
enough for a centred icon, so arbitrary header content would
|
|
709
|
+
either overflow it or force it wider. It fades rather than
|
|
710
|
+
unmounting, on the same curve as the section labels, so the
|
|
711
|
+
header does not jump when the rail toggles. */}
|
|
712
|
+
{headerEnd && (
|
|
713
|
+
<div style={{
|
|
714
|
+
opacity: collapsed ? 0 : 1,
|
|
715
|
+
maxHeight: collapsed ? 0 : 200,
|
|
716
|
+
overflow: "hidden",
|
|
717
|
+
pointerEvents: collapsed ? "none" : "auto",
|
|
718
|
+
padding: collapsed ? 0 : `0 ${L.navPadH}`,
|
|
719
|
+
transition:
|
|
720
|
+
"opacity var(--motion-duration-4) var(--motion-easing-standard), " +
|
|
721
|
+
"max-height var(--motion-duration-5) var(--motion-easing-spring)",
|
|
722
|
+
}}>
|
|
723
|
+
{headerEnd}
|
|
724
|
+
</div>
|
|
725
|
+
)}
|
|
677
726
|
</div>
|
|
678
727
|
)}
|
|
679
728
|
|
|
@@ -734,9 +783,31 @@ export function SideNav({
|
|
|
734
783
|
</div>
|
|
735
784
|
)}
|
|
736
785
|
|
|
786
|
+
{/* Body slot — scrolls with the item list, so it sits INSIDE
|
|
787
|
+
Scrollable and above the spacer. Use this for content that belongs
|
|
788
|
+
with the items; use `footer` for anything that must stay visible. */}
|
|
789
|
+
{children && <div style={{ flexShrink: 0 }}>{children}</div>}
|
|
790
|
+
|
|
737
791
|
{/* Bottom spacer — fills remaining height */}
|
|
738
792
|
<div style={{ flex: 1, minHeight: L.menuPadB }} />
|
|
739
793
|
</Scrollable>
|
|
794
|
+
|
|
795
|
+
{/* Footer slot — OUTSIDE Scrollable and flexShrink:0, so it is pinned to
|
|
796
|
+
the bottom of the nav and stays put while the list scrolls. The
|
|
797
|
+
divider only appears when the slot has content, so a nav without a
|
|
798
|
+
footer is unchanged. Padding drops to the rail's narrower inset when
|
|
799
|
+
collapsed rather than hiding: a footer button is usually an icon
|
|
800
|
+
button that still works at 72px, unlike arbitrary header content. */}
|
|
801
|
+
{footer && (
|
|
802
|
+
<div style={{
|
|
803
|
+
flexShrink: 0,
|
|
804
|
+
borderTop: `0.5px solid ${T.fill.infoSubtle}`,
|
|
805
|
+
padding: collapsed ? `8px ${L.navColPadH}` : `8px ${L.navPadH}`,
|
|
806
|
+
transition: "padding var(--motion-duration-6) var(--motion-easing-emphasized)",
|
|
807
|
+
}}>
|
|
808
|
+
{footer}
|
|
809
|
+
</div>
|
|
810
|
+
)}
|
|
740
811
|
</nav>
|
|
741
812
|
);
|
|
742
813
|
}
|
|
@@ -775,7 +846,7 @@ function ChevUp({ size = 10, color }) {
|
|
|
775
846
|
// right_panel_open — used on the collapse button when sidebar is EXPANDED (click to collapse)
|
|
776
847
|
// Token: Foreground/Action/Secondary/Rest (#6b6b6b)
|
|
777
848
|
// Figma component: SideBar Expand/Collapse, Type=Collapse, node 40006793:3783
|
|
778
|
-
function RightPanelOpenIcon({ size = 12, color = T.
|
|
849
|
+
function RightPanelOpenIcon({ size = 12, color = T.foreground.actionSecondary }) {
|
|
779
850
|
return (
|
|
780
851
|
<svg width={size} height={size} viewBox="0 0 12 12" fill="none">
|
|
781
852
|
<path d="M5.66667 7.86667V4.13333C5.66667 3.97778 5.6 3.87222 5.46667 3.81667C5.33333 3.76111 5.21111 3.78889 5.1 3.9L3.46667 5.53333C3.33333 5.66667 3.26667 5.82222 3.26667 6C3.26667 6.17778 3.33333 6.33333 3.46667 6.46667L5.1 8.1C5.21111 8.21111 5.33333 8.23889 5.46667 8.18333C5.6 8.12778 5.66667 8.02222 5.66667 7.86667ZM1.33333 12C0.966667 12 0.652778 11.8694 0.391667 11.6083C0.130556 11.3472 0 11.0333 0 10.6667V1.33333C0 0.966667 0.130556 0.652778 0.391667 0.391667C0.652778 0.130556 0.966667 0 1.33333 0H10.6667C11.0333 0 11.3472 0.130556 11.6083 0.391667C11.8694 0.652778 12 0.966667 12 1.33333V10.6667C12 11.0333 11.8694 11.3472 11.6083 11.6083C11.3472 11.8694 11.0333 12 10.6667 12H1.33333ZM8.66667 10.6667H10.6667V1.33333H8.66667V10.6667ZM7.33333 10.6667V1.33333H1.33333V10.6667H7.33333Z" fill={color} />
|
|
@@ -786,7 +857,7 @@ function RightPanelOpenIcon({ size = 12, color = T.icon.actionSecondary }) {
|
|
|
786
857
|
// left_panel_open — used on the collapse button when sidebar is COLLAPSED (click to expand)
|
|
787
858
|
// Token: Foreground/Action/Secondary/Rest (#6b6b6b)
|
|
788
859
|
// Figma component: SideBar Expand/Collapse, Type=Expand, node 40006793:3783
|
|
789
|
-
function LeftPanelOpenIcon({ size = 12, color = T.
|
|
860
|
+
function LeftPanelOpenIcon({ size = 12, color = T.foreground.actionSecondary }) {
|
|
790
861
|
return (
|
|
791
862
|
<svg width={size} height={size} viewBox="0 0 12 12" fill="none">
|
|
792
863
|
<path d="M6.33333 4.13333V7.86667C6.33333 8.02222 6.4 8.12778 6.53333 8.18333C6.66667 8.23889 6.78889 8.21111 6.9 8.1L8.53333 6.46667C8.66667 6.33333 8.73333 6.17778 8.73333 6C8.73333 5.82222 8.66667 5.66667 8.53333 5.53333L6.9 3.9C6.78889 3.78889 6.66667 3.76111 6.53333 3.81667C6.4 3.87222 6.33333 3.97778 6.33333 4.13333ZM1.33333 12C0.966667 12 0.652778 11.8694 0.391667 11.6083C0.130556 11.3472 0 11.0333 0 10.6667V1.33333C0 0.966667 0.130556 0.652778 0.391667 0.391667C0.652778 0.130556 0.966667 0 1.33333 0H10.6667C11.0333 0 11.3472 0.130556 11.6083 0.391667C11.8694 0.652778 12 0.966667 12 1.33333V10.6667C12 11.0333 11.8694 11.3472 11.6083 11.6083C11.3472 11.8694 11.0333 12 10.6667 12H1.33333ZM3.33333 10.6667V1.33333H1.33333V10.6667H3.33333ZM4.66667 10.6667H10.6667V1.33333H4.66667V10.6667Z" fill={color} />
|
package/dist/breakpoints.css
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* :root is the desktop value. Narrower breakpoints override only what differs.
|
|
6
6
|
*/
|
|
7
7
|
:root {
|
|
8
|
-
--contextual-layout-units-button-border-width-
|
|
9
|
-
--contextual-layout-units-button-border-width-
|
|
10
|
-
--contextual-layout-units-button-
|
|
8
|
+
--contextual-layout-units-button-border-width-hover: 1px;
|
|
9
|
+
--contextual-layout-units-button-border-width-rest: 0.75px;
|
|
10
|
+
--contextual-layout-units-button-corner-radius-radius: 8px;
|
|
11
11
|
--contextual-layout-units-button-gap-horizontal: 8px;
|
|
12
12
|
--contextual-layout-units-button-padding-large-horizontal: 14px;
|
|
13
13
|
--contextual-layout-units-button-padding-large-vertical: 12px;
|
|
@@ -17,36 +17,20 @@
|
|
|
17
17
|
--contextual-layout-units-button-padding-small-vertical: 6px;
|
|
18
18
|
--contextual-layout-units-button-padding-xsmall-horizontal: 8px;
|
|
19
19
|
--contextual-layout-units-button-padding-xsmall-vertical: 6px;
|
|
20
|
-
--contextual-layout-units-button-radius
|
|
21
|
-
--contextual-layout-units-card-border-width-
|
|
22
|
-
--contextual-layout-units-card-border-width-
|
|
23
|
-
--contextual-layout-units-card-cornerradius
|
|
24
|
-
--contextual-layout-units-card-gap
|
|
20
|
+
--contextual-layout-units-button-radius: 8px;
|
|
21
|
+
--contextual-layout-units-card-border-width-hover: 0.75px;
|
|
22
|
+
--contextual-layout-units-card-border-width-rest: 0.5px;
|
|
23
|
+
--contextual-layout-units-card-cornerradius: 12px;
|
|
24
|
+
--contextual-layout-units-card-gap: 8px;
|
|
25
25
|
--contextual-layout-units-card-padding-medium-horizontal: 16px;
|
|
26
26
|
--contextual-layout-units-card-padding-medium-vertical: 16px;
|
|
27
27
|
--contextual-layout-units-card-padding-small-horizontal: 14px;
|
|
28
28
|
--contextual-layout-units-card-padding-small-vertical: 14px;
|
|
29
|
-
--contextual-layout-units-
|
|
30
|
-
--contextual-layout-units-
|
|
31
|
-
--contextual-layout-units-
|
|
32
|
-
--contextual-layout-units-navitem-
|
|
33
|
-
--contextual-layout-units-navitem-
|
|
34
|
-
--contextual-layout-units-navitem-
|
|
35
|
-
--contextual-layout-units-
|
|
36
|
-
--contextual-layout-units-page-padding-horizontal: 36px;
|
|
37
|
-
--contextual-layout-units-page-padding-top: 16px;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@media (max-width: 1023px) {
|
|
41
|
-
:root {
|
|
42
|
-
--contextual-layout-units-page-padding-horizontal: 24px;
|
|
43
|
-
--contextual-layout-units-page-padding-top: 14px;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@media (max-width: 767px) {
|
|
48
|
-
:root {
|
|
49
|
-
--contextual-layout-units-page-padding-horizontal: 16px;
|
|
50
|
-
--contextual-layout-units-page-padding-top: 12px;
|
|
51
|
-
}
|
|
29
|
+
--contextual-layout-units-field-borderwidth: 1px;
|
|
30
|
+
--contextual-layout-units-focus-ring-offset: 2px;
|
|
31
|
+
--contextual-layout-units-focus-ring-width: 2px;
|
|
32
|
+
--contextual-layout-units-navitem-corner-radius-radius: 8px;
|
|
33
|
+
--contextual-layout-units-navitem-padding-horizontal: 14px;
|
|
34
|
+
--contextual-layout-units-navitem-padding-vertical: 12px;
|
|
35
|
+
--contextual-layout-units-selector-borderwidth: 1px;
|
|
52
36
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* shell-layout — one name per token, breakpoint resolved by media query.
|
|
3
|
+
* Generated by style-dictionary.config.js. Do not edit.
|
|
4
|
+
*
|
|
5
|
+
* :root is the desktop value. Narrower breakpoints override only what differs.
|
|
6
|
+
*/
|
|
7
|
+
:root {
|
|
8
|
+
--shell-layout-sheet-padding-bottom: 64px;
|
|
9
|
+
--shell-layout-sheet-padding-horizontal: 36px;
|
|
10
|
+
--shell-layout-sheet-padding-top: 16px;
|
|
11
|
+
--shell-layout-topnav-height: 56px;
|
|
12
|
+
--shell-layout-topnav-padding-horizontal: 16px;
|
|
13
|
+
--shell-layout-topnav-padding-vertical: 6px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@media (max-width: 1023px) {
|
|
17
|
+
:root {
|
|
18
|
+
--shell-layout-sheet-padding-bottom: 48px;
|
|
19
|
+
--shell-layout-sheet-padding-horizontal: 24px;
|
|
20
|
+
--shell-layout-sheet-padding-top: 14px;
|
|
21
|
+
--shell-layout-topnav-padding-horizontal: 12px;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@media (max-width: 767px) {
|
|
26
|
+
:root {
|
|
27
|
+
--shell-layout-sheet-padding-bottom: 36px;
|
|
28
|
+
--shell-layout-sheet-padding-horizontal: 16px;
|
|
29
|
+
--shell-layout-sheet-padding-top: 12px;
|
|
30
|
+
--shell-layout-topnav-padding-horizontal: 8px;
|
|
31
|
+
}
|
|
32
|
+
}
|
package/dist/layout.css
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
--semantic-layout-units-borderwidth-xthick: 4px;
|
|
19
19
|
--semantic-layout-units-borderwidth-xthin: 0.5px;
|
|
20
20
|
--semantic-layout-units-borderwidth-xxthick: 6px;
|
|
21
|
+
--semantic-layout-units-cornerradius-base: 8px;
|
|
21
22
|
--semantic-layout-units-cornerradius-full: 64px;
|
|
22
23
|
--semantic-layout-units-cornerradius-large: 12px;
|
|
23
24
|
--semantic-layout-units-cornerradius-medium: 8px;
|
|
@@ -45,7 +46,3 @@
|
|
|
45
46
|
--semantic-layout-units-padding-xxwide: 56px;
|
|
46
47
|
--semantic-layout-units-padding-xxxtight: 2px;
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
-
/* tablet-798pt: identical to desktop, nothing to override */
|
|
50
|
-
|
|
51
|
-
/* mobile-393pt: identical to desktop, nothing to override */
|