@hirobius/design-system 0.14.0 → 0.16.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.
Files changed (65) hide show
  1. package/README.md +4 -4
  2. package/dist/chunks/TokenDisplayContext-B3gxyQN7.js +1 -0
  3. package/dist/chunks/form-DnGRy27o.js +1 -0
  4. package/dist/contexts.js +1 -0
  5. package/dist/form.js +1 -0
  6. package/dist/hirobius-ui.js +5884 -4425
  7. package/dist/manifest.js +8 -8
  8. package/dist/scroll.js +1 -0
  9. package/dist/styles.css +1 -1
  10. package/dist/tokens.css +1 -1
  11. package/dist/tokens.js +40 -22
  12. package/dist/types/src/app/components/alert.d.ts +1 -1
  13. package/dist/types/src/app/components/asset-img.d.ts +1 -1
  14. package/dist/types/src/app/components/bleed.d.ts +1 -1
  15. package/dist/types/src/app/components/card.d.ts +3 -3
  16. package/dist/types/src/app/components/center.d.ts +1 -1
  17. package/dist/types/src/app/components/checkbox.d.ts +1 -2
  18. package/dist/types/src/app/components/cinematic-link.d.ts +8 -3
  19. package/dist/types/src/app/components/cluster.d.ts +1 -1
  20. package/dist/types/src/app/components/code-block.d.ts +1 -1
  21. package/dist/types/src/app/components/component-instance-matrix.d.ts +7 -1
  22. package/dist/types/src/app/components/container.d.ts +1 -1
  23. package/dist/types/src/app/components/cover.d.ts +1 -1
  24. package/dist/types/src/app/components/disclosure.d.ts +1 -1
  25. package/dist/types/src/app/components/doc-link-card.d.ts +1 -1
  26. package/dist/types/src/app/components/error-boundary.d.ts +1 -1
  27. package/dist/types/src/app/components/error-pattern.d.ts +1 -2
  28. package/dist/types/src/app/components/foundation-swatch.d.ts +6 -0
  29. package/dist/types/src/app/components/frame.d.ts +1 -1
  30. package/dist/types/src/app/components/grid.d.ts +2 -2
  31. package/dist/types/src/app/components/heading-stack.d.ts +1 -1
  32. package/dist/types/src/app/components/icon-button.d.ts +1 -2
  33. package/dist/types/src/app/components/image-lightbox.d.ts +1 -2
  34. package/dist/types/src/app/components/inline-code.d.ts +1 -1
  35. package/dist/types/src/app/components/inline-link.d.ts +1 -2
  36. package/dist/types/src/app/components/nav-group.d.ts +1 -1
  37. package/dist/types/src/app/components/nav-item.d.ts +1 -1
  38. package/dist/types/src/app/components/page.d.ts +1 -1
  39. package/dist/types/src/app/components/pin.d.ts +1 -2
  40. package/dist/types/src/app/components/radio.d.ts +1 -2
  41. package/dist/types/src/app/components/reveal.d.ts +1 -2
  42. package/dist/types/src/app/components/segmented-control.d.ts +1 -1
  43. package/dist/types/src/app/components/select.d.ts +29 -0
  44. package/dist/types/src/app/components/sidebar.d.ts +1 -1
  45. package/dist/types/src/app/components/sketch.d.ts +6 -0
  46. package/dist/types/src/app/components/slider.d.ts +1 -2
  47. package/dist/types/src/app/components/stack.d.ts +1 -1
  48. package/dist/types/src/app/components/stepper-field.d.ts +1 -2
  49. package/dist/types/src/app/components/surface.d.ts +1 -1
  50. package/dist/types/src/app/components/switcher.d.ts +1 -1
  51. package/dist/types/src/app/components/toggle.d.ts +1 -2
  52. package/dist/types/src/app/components/token.d.ts +8 -2
  53. package/dist/types/src/app/design-system/generated-token-refs.d.ts +3 -6
  54. package/dist/types/src/app/design-system/generated-token-values.d.ts +2 -6
  55. package/dist/types/src/app/design-system/tokens.d.ts +0 -5
  56. package/dist/types/src/app/layouts/CaseStudyLayout.d.ts +2 -3
  57. package/dist/types/src/app/layouts/DocLayout.d.ts +0 -2
  58. package/dist/types/src/app/layouts/HdsDocsShell.d.ts +72 -0
  59. package/dist/types/src/app/layouts/HdsSystemDocLayout.d.ts +8 -1
  60. package/dist/types/src/index.d.ts +23 -31
  61. package/dist/variables.css +58 -6
  62. package/hirobius.tokens.json +21 -31
  63. package/package.json +34 -22
  64. package/public/hds-manifest.json +1466 -179
  65. /package/dist/types/src/app/components/{lab/tokenUtils.d.ts → tokenUtils.d.ts} +0 -0
@@ -20,7 +20,7 @@
20
20
  */
21
21
  import React from 'react';
22
22
  type LayoutGap = 'tight' | 'normal' | 'inset' | 'spacious';
23
- interface SwitcherProps {
23
+ export interface SwitcherProps {
24
24
  /** Switcher content — peer items that flip between row and column as a unit. */
25
25
  children: React.ReactNode;
26
26
  /** Container width below which items stack vertically (CSS length, e.g. '30rem'). Defaults to '30rem'. */
@@ -7,7 +7,7 @@
7
7
  import type { InputHTMLAttributes } from 'react';
8
8
  /** HdsToggle — boolean on/off toggle with animated thumb. */
9
9
  export type HdsToggleDemoState = 'rest' | 'hover' | 'focused' | 'pressed' | 'disabled';
10
- interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
10
+ export interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'onChange'> {
11
11
  /** Toggle label displayed next to the control. */
12
12
  label: string;
13
13
  /** Current checked state. */
@@ -16,4 +16,3 @@ interface ToggleProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'
16
16
  onChange: (v: boolean) => void;
17
17
  }
18
18
  export declare const HdsToggle: import("react").ForwardRefExoticComponent<ToggleProps & import("react").RefAttributes<HTMLInputElement>>;
19
- export {};
@@ -69,7 +69,7 @@ type TokenDiagramProps = TokenBaseProps & {
69
69
  rawValue?: React.ReactNode;
70
70
  onClick?: () => void;
71
71
  };
72
- type TokenProps = TokenNodeSurfaceProps | TokenDiagramProps;
72
+ export type TokenProps = TokenNodeSurfaceProps | TokenDiagramProps;
73
73
  /**
74
74
  * Token - unified token component.
75
75
  *
@@ -78,7 +78,13 @@ type TokenProps = TokenNodeSurfaceProps | TokenDiagramProps;
78
78
  * @removeIn 1.0.0) that now resolves to the same node treatment.
79
79
  * Node content can use a left-side slot for swatches or other compact previews.
80
80
  */
81
- /** @public */
81
+ /**
82
+ * Token - reflective token specimen for unified node-based token views. The `variant` axis (node | diagram — diagram is a deprecated alias that resolves to the same node treatment) plus the `selected` / `fullWidth` / `asButton` / `nowrap` / `sourceNode` states used to be a Token.module.css `[data-*]` attribute stylesheet, with a duplicate `isSelected` branch re-painted inline on top of it. Both now live as one `cva` variant set — same `--semantic-*`/`--component-*`/`--primitive-*` custom properties, same pixels, no CSS module.
83
+ *
84
+ * @public
85
+ * @deprecated Token is an HDS docs/lab internal (reflective token specimen for the token/foundation doc pages), not a consumer-facing HDS surface. It will be retiered to `utility` (dropped from the published barrel) at the named major.
86
+ * @removeIn 1.0.0
87
+ */
82
88
  export declare function Token(props: TokenProps): import("react/jsx-runtime").JSX.Element;
83
89
  /** @internal — CVA variant helpers; compose via Token props instead. */
84
90
  export { tokenShellVariants, tokenNodeInlineVariants, tokenLabelVariants };
@@ -138,7 +138,6 @@ export declare const tokenRefs: {
138
138
  readonly mono: "var(--primitive-typography-family-mono)";
139
139
  };
140
140
  readonly size: {
141
- readonly "2xs": "var(--primitive-typography-size-2xs)";
142
141
  readonly xs: "var(--primitive-typography-size-xs)";
143
142
  readonly sm: "var(--primitive-typography-size-sm)";
144
143
  readonly base: "var(--primitive-typography-size-base)";
@@ -151,10 +150,8 @@ export declare const tokenRefs: {
151
150
  readonly "6xl": "var(--primitive-typography-size-6xl)";
152
151
  };
153
152
  readonly weight: {
154
- readonly light: "var(--primitive-typography-weight-light)";
155
153
  readonly regular: "var(--primitive-typography-weight-regular)";
156
154
  readonly medium: "var(--primitive-typography-weight-medium)";
157
- readonly semibold: "var(--primitive-typography-weight-semibold)";
158
155
  readonly bold: "var(--primitive-typography-weight-bold)";
159
156
  };
160
157
  readonly lineHeight: {
@@ -166,11 +163,8 @@ export declare const tokenRefs: {
166
163
  readonly relaxed: "var(--primitive-typography-lineHeight-relaxed)";
167
164
  };
168
165
  readonly letterSpacing: {
169
- readonly tighter: "var(--primitive-typography-letterSpacing-tighter)";
170
166
  readonly tight: "var(--primitive-typography-letterSpacing-tight)";
171
167
  readonly normal: "var(--primitive-typography-letterSpacing-normal)";
172
- readonly wide: "var(--primitive-typography-letterSpacing-wide)";
173
- readonly wider: "var(--primitive-typography-letterSpacing-wider)";
174
168
  readonly caps: "var(--primitive-typography-letterSpacing-caps)";
175
169
  };
176
170
  };
@@ -211,9 +205,11 @@ export declare const tokenRefs: {
211
205
  readonly "96": "var(--primitive-size-96)";
212
206
  readonly interactive: {
213
207
  readonly min: "var(--primitive-size-interactive-min)";
208
+ readonly minCompact: "var(--primitive-size-interactive-minCompact)";
214
209
  };
215
210
  readonly width: {
216
211
  readonly "96": "var(--primitive-size-width-96)";
212
+ readonly "280": "var(--primitive-size-width-280)";
217
213
  readonly "760": "var(--primitive-size-width-760)";
218
214
  readonly "1200": "var(--primitive-size-width-1200)";
219
215
  readonly "50ch": "var(--primitive-size-width-50ch)";
@@ -335,6 +331,7 @@ export declare const tokenRefs: {
335
331
  readonly gap: "var(--semantic-space-sidebar-gap)";
336
332
  readonly sectionGap: "var(--semantic-space-sidebar-sectionGap)";
337
333
  readonly railPadding: "var(--semantic-space-sidebar-railPadding)";
334
+ readonly railWidth: "var(--semantic-space-sidebar-railWidth)";
338
335
  };
339
336
  };
340
337
  readonly layout: {
@@ -139,7 +139,6 @@ export declare const tokenValues: {
139
139
  readonly mono: readonly ["Geist Mono", "Courier New", "monospace"];
140
140
  };
141
141
  readonly size: {
142
- readonly "2xs": "10px";
143
142
  readonly xs: "13px";
144
143
  readonly sm: "15px";
145
144
  readonly base: "17px";
@@ -152,10 +151,8 @@ export declare const tokenValues: {
152
151
  readonly "6xl": "80px";
153
152
  };
154
153
  readonly weight: {
155
- readonly light: "300";
156
154
  readonly regular: "400";
157
155
  readonly medium: "500";
158
- readonly semibold: "600";
159
156
  readonly bold: "700";
160
157
  };
161
158
  readonly lineHeight: {
@@ -167,11 +164,8 @@ export declare const tokenValues: {
167
164
  readonly relaxed: "1.625";
168
165
  };
169
166
  readonly letterSpacing: {
170
- readonly tighter: "-0.02em";
171
167
  readonly tight: "-0.01em";
172
168
  readonly normal: "0em";
173
- readonly wide: "0.01em";
174
- readonly wider: "0.02em";
175
169
  readonly caps: "0.06em";
176
170
  };
177
171
  };
@@ -212,9 +206,11 @@ export declare const tokenValues: {
212
206
  readonly "96": "96px";
213
207
  readonly interactive: {
214
208
  readonly min: "44px";
209
+ readonly minCompact: "24px";
215
210
  };
216
211
  readonly width: {
217
212
  readonly "96": "96px";
213
+ readonly "280": "280px";
218
214
  readonly "760": "760px";
219
215
  readonly "1200": "1200px";
220
216
  readonly "50ch": "50ch";
@@ -67,7 +67,6 @@ declare const hds: {
67
67
  fontFamily: string;
68
68
  monoFamily: string;
69
69
  fontSize: {
70
- '2xs': string;
71
70
  xs: string;
72
71
  sm: string;
73
72
  base: string;
@@ -81,7 +80,6 @@ declare const hds: {
81
80
  fontWeight: {
82
81
  regular: string;
83
82
  medium: string;
84
- semibold: string;
85
83
  bold: string;
86
84
  };
87
85
  lineHeight: {
@@ -93,11 +91,8 @@ declare const hds: {
93
91
  relaxed: string;
94
92
  };
95
93
  letterSpacing: {
96
- tighter: string;
97
94
  tight: string;
98
95
  normal: string;
99
- wide: string;
100
- wider: string;
101
96
  };
102
97
  semantic: {
103
98
  color: {
@@ -10,12 +10,11 @@
10
10
  * contentSlot → full-width (maxWidth="max") — chapters, galleries, learnings
11
11
  */
12
12
  import type { ReactNode } from 'react';
13
- interface CaseStudyLayoutProps {
13
+ export interface CaseStudyLayoutProps {
14
14
  heroSlot: ReactNode;
15
15
  introSlot: ReactNode;
16
16
  metricsSlot?: ReactNode;
17
17
  contentSlot: ReactNode;
18
18
  }
19
19
  /** @public */
20
- export declare function CaseStudyLayout({ heroSlot, introSlot, metricsSlot, contentSlot }: CaseStudyLayoutProps): import("react/jsx-runtime").JSX.Element;
21
- export {};
20
+ export declare function CaseStudyLayout({ heroSlot, introSlot, metricsSlot, contentSlot, }: CaseStudyLayoutProps): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,4 @@
1
1
  import { type ReactNode } from 'react';
2
- export declare const DOC_LAYOUT_STICKY_OFFSET: string;
3
- export declare const DOC_LAYOUT_STICKY_VIEWPORT_HEIGHT: string;
4
2
  declare const DOC_LAYOUT_CONTENT_WIDTHS: {
5
3
  readonly content: "var(--semantic-layout-width-content)";
6
4
  readonly max: "var(--semantic-layout-width-max)";
@@ -0,0 +1,72 @@
1
+ /**
2
+ * HdsDocsShell — three-region docs shell (left nav rail, content, right TOC
3
+ * rail), driven by grid columns that default to 0 and are set per breakpoint.
4
+ * @category Layout
5
+ * @tier pattern
6
+ * @public
7
+ *
8
+ * hds#280 slice: this is the SHELL MECHANICS ONLY — the smallest shippable
9
+ * piece of the docs-shell epic. It ships:
10
+ *
11
+ * - A 3-column grid (`leftRail | content | rightRail`), both rail columns
12
+ * defaulting to `0px` and set to `semantic.space.sidebar.railWidth`
13
+ * (hds#280 token, our own 280px — not HeroUI's 268px) per breakpoint via
14
+ * Tailwind's arbitrary-property + responsive-variant syntax, the same
15
+ * technique Fumadocs/HeroUI uses. `md768:` brings in the left rail,
16
+ * `xl1280:` brings in the right rail — matching the three-stage table in
17
+ * hds#280.
18
+ * - Each rail is `position: sticky` and scrolls independently of content
19
+ * and of the other rail, clipped to the viewport minus `topOffset`.
20
+ * - `topOffset` composes (it is one CSS length a caller supplies, e.g. its
21
+ * own sticky header's height token) rather than a hardcoded pixel value —
22
+ * the first stage of the row-cascade pattern hds#280 asks for. A second
23
+ * region (a tabs row, hds#280's PR-comment addendum) would extend this by
24
+ * adding its own height into the same `calc()` chain, not by hardcoding a
25
+ * second offset.
26
+ *
27
+ * Deliberately NOT in this slice (tracked as proposed follow-up issues, not
28
+ * filed — see the PR/commit this ships in):
29
+ * - Below the TOC breakpoint, `rightRail` is omitted from the grid rather
30
+ * than becoming a reachable popover. The DoD explicitly wants a popover,
31
+ * not "merely hidden" — that is real, separate UI work (a sticky
32
+ * current-section breadcrumb bar), not shell mechanics.
33
+ * - Left-rail collapsible groups (chevron, active-section pill) and
34
+ * right-rail active-anchor styling (vertical rule, filled pill) are
35
+ * content the caller supplies via `leftRail`/`rightRail` — this shell
36
+ * does not build SideNav/Disclosure/NavItem composition for the caller.
37
+ * - `check-rendered-geometry` verification at every breakpoint in the DoD's
38
+ * table (needs a built Storybook + a live run, not exercised here).
39
+ * - Named CSS `grid-template-areas` (the DoD's literal ask) — this ships a
40
+ * 3-column grid with DOM order instead, which is behaviorally identical
41
+ * for a single linear row of regions and needs no separate stylesheet.
42
+ * Areas earn their keep once a 4th region (a tabs row spanning full
43
+ * width) is added — call out then, not before.
44
+ */
45
+ import * as React from 'react';
46
+ /** @public */
47
+ export interface HdsDocsShellProps {
48
+ /** Left nav rail. Hidden below the `md768` breakpoint (grid column width 0). */
49
+ leftRail?: React.ReactNode;
50
+ /** Main content column. Always rendered, always fluid. */
51
+ children: React.ReactNode;
52
+ /**
53
+ * Right "on this page" rail. Hidden below the `xl1280` breakpoint (grid
54
+ * column width 0) — see the deferred-popover note above; it is REMOVED
55
+ * from the grid at that breakpoint, not merely visually hidden, so no
56
+ * hidden interactive content sits in the DOM unreachable.
57
+ */
58
+ rightRail?: React.ReactNode;
59
+ /**
60
+ * CSS length a caller supplies for a sticky header ABOVE this shell (e.g.
61
+ * TopNav's height token), so each rail's sticky offset and scrollable
62
+ * height compose against it instead of assuming the shell owns the whole
63
+ * viewport. Defaults to `'0px'`.
64
+ */
65
+ topOffset?: string;
66
+ /** Escape hatch: only for narrow layout adjustments that don't belong in the primitive API. */
67
+ className?: string;
68
+ /** Escape hatch: only for narrow layout adjustments that don't belong in the primitive API. */
69
+ style?: React.CSSProperties;
70
+ }
71
+ /** @public */
72
+ export declare const HdsDocsShell: React.ForwardRefExoticComponent<HdsDocsShellProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,6 +1,13 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { type DocLayoutContentMaxWidth } from './DocLayout.js';
3
- /** @public */
3
+ /**
4
+ * HdsSystemDocLayout — single centered content column for documentation pages.
5
+ * Thin wrapper around DocLayout: takes only `contentSlot` and `contentMaxWidth`,
6
+ * with no sidebar or nav region to pass one into. Not the three-column docs
7
+ * shell (left rail + content + right rail) — that is tracked as its own shell
8
+ * component (hds#280).
9
+ * @public
10
+ */
4
11
  export declare function HdsSystemDocLayout({ contentSlot, contentMaxWidth, }: {
5
12
  contentSlot: ReactNode;
6
13
  contentMaxWidth?: DocLayoutContentMaxWidth;
@@ -36,6 +36,7 @@ export * from './app/components/progress.js';
36
36
  export * from './app/components/skeleton.js';
37
37
  export * from './app/components/spinner.js';
38
38
  export * from './app/components/segmented-control.js';
39
+ export * from './app/components/select.js';
39
40
  export * from './app/components/stack.js';
40
41
  export * from './app/components/surface.js';
41
42
  export * from './app/components/table.js';
@@ -108,6 +109,7 @@ export * from './app/components/toast.js';
108
109
  export * from './app/layouts/CaseStudyLayout.js';
109
110
  export * from './app/components/error-pattern.js';
110
111
  export * from './app/layouts/HdsSystemDocLayout.js';
112
+ export * from './app/layouts/HdsDocsShell.js';
111
113
  export { default as hds } from './app/design-system/tokens.js';
112
114
  /** Raw DTCG design tokens (the contents of `hirobius.tokens.json`). */
113
115
  export declare const tokens: {
@@ -593,12 +595,6 @@ export declare const tokens: {
593
595
  };
594
596
  size: {
595
597
  $type: string;
596
- "2xs": {
597
- $value: {
598
- value: number;
599
- unit: string;
600
- };
601
- };
602
598
  xs: {
603
599
  $value: {
604
600
  value: number;
@@ -663,19 +659,12 @@ export declare const tokens: {
663
659
  };
664
660
  weight: {
665
661
  $type: string;
666
- light: {
667
- $value: number;
668
- $description: string;
669
- };
670
662
  regular: {
671
663
  $value: number;
672
664
  };
673
665
  medium: {
674
666
  $value: number;
675
667
  };
676
- semibold: {
677
- $value: number;
678
- };
679
668
  bold: {
680
669
  $value: number;
681
670
  };
@@ -705,12 +694,6 @@ export declare const tokens: {
705
694
  };
706
695
  letterSpacing: {
707
696
  $type: string;
708
- tighter: {
709
- $value: {
710
- value: number;
711
- unit: string;
712
- };
713
- };
714
697
  tight: {
715
698
  $value: {
716
699
  value: number;
@@ -723,18 +706,6 @@ export declare const tokens: {
723
706
  unit: string;
724
707
  };
725
708
  };
726
- wide: {
727
- $value: {
728
- value: number;
729
- unit: string;
730
- };
731
- };
732
- wider: {
733
- $value: {
734
- value: number;
735
- unit: string;
736
- };
737
- };
738
709
  caps: {
739
710
  $value: {
740
711
  value: number;
@@ -961,6 +932,14 @@ export declare const tokens: {
961
932
  };
962
933
  $description: string;
963
934
  };
935
+ minCompact: {
936
+ $type: string;
937
+ $value: {
938
+ value: number;
939
+ unit: string;
940
+ };
941
+ $description: string;
942
+ };
964
943
  };
965
944
  width: {
966
945
  "96": {
@@ -992,6 +971,14 @@ export declare const tokens: {
992
971
  unit: string;
993
972
  };
994
973
  };
974
+ "280": {
975
+ $type: string;
976
+ $value: {
977
+ value: number;
978
+ unit: string;
979
+ };
980
+ $description: string;
981
+ };
995
982
  };
996
983
  };
997
984
  grid: {
@@ -1629,6 +1616,11 @@ export declare const tokens: {
1629
1616
  $value: string;
1630
1617
  $description: string;
1631
1618
  };
1619
+ railWidth: {
1620
+ $type: string;
1621
+ $value: string;
1622
+ $description: string;
1623
+ };
1632
1624
  };
1633
1625
  };
1634
1626
  layout: {
@@ -108,7 +108,6 @@
108
108
  --primitive-typography-family-primary: Satoshi, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
109
109
  --primitive-typography-family-display: Satoshi, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
110
110
  --primitive-typography-family-mono: "Geist Mono", "Courier New", monospace;
111
- --primitive-typography-size-2xs: 10px;
112
111
  --primitive-typography-size-xs: 13px;
113
112
  --primitive-typography-size-sm: 15px;
114
113
  --primitive-typography-size-base: 17px;
@@ -119,10 +118,8 @@
119
118
  --primitive-typography-size-4xl: 48px;
120
119
  --primitive-typography-size-5xl: 72px;
121
120
  --primitive-typography-size-6xl: 80px;
122
- --primitive-typography-weight-light: 300;
123
121
  --primitive-typography-weight-regular: 400;
124
122
  --primitive-typography-weight-medium: 500;
125
- --primitive-typography-weight-semibold: 600;
126
123
  --primitive-typography-weight-bold: 700;
127
124
  --primitive-typography-lineHeight-compact: 0.95;
128
125
  --primitive-typography-lineHeight-none: 1;
@@ -130,11 +127,8 @@
130
127
  --primitive-typography-lineHeight-snug: 1.375;
131
128
  --primitive-typography-lineHeight-normal: 1.5;
132
129
  --primitive-typography-lineHeight-relaxed: 1.625;
133
- --primitive-typography-letterSpacing-tighter: -0.02em;
134
130
  --primitive-typography-letterSpacing-tight: -0.01em;
135
131
  --primitive-typography-letterSpacing-normal: 0em;
136
- --primitive-typography-letterSpacing-wide: 0.01em;
137
- --primitive-typography-letterSpacing-wider: 0.02em;
138
132
  --primitive-typography-letterSpacing-caps: 0.06em;
139
133
  --primitive-duration-instant: 100ms;
140
134
  --primitive-duration-short: 150ms;
@@ -163,7 +157,9 @@
163
157
  --primitive-size-80: 80px;
164
158
  --primitive-size-96: 96px;
165
159
  --primitive-size-interactive-min: 44px;
160
+ --primitive-size-interactive-minCompact: 24px;
166
161
  --primitive-size-width-96: 96px;
162
+ --primitive-size-width-280: 280px;
167
163
  --primitive-size-width-760: 760px;
168
164
  --primitive-size-width-1200: 1200px;
169
165
  --primitive-size-width-50ch: 50ch;
@@ -247,6 +243,7 @@
247
243
  --semantic-space-sidebar-gap: var(--primitive-space-4);
248
244
  --semantic-space-sidebar-sectionGap: var(--primitive-space-3);
249
245
  --semantic-space-sidebar-railPadding: var(--primitive-space-5);
246
+ --semantic-space-sidebar-railWidth: var(--primitive-size-width-280);
250
247
  --semantic-layout-width-content: var(--primitive-size-width-760);
251
248
  --semantic-layout-width-max: var(--primitive-size-width-1200);
252
249
  --semantic-layout-container-maxWidth: var(--primitive-size-width-1200);
@@ -505,4 +502,59 @@
505
502
  --semantic-accent-subtle: var(--primitive-color-neutral-800);
506
503
  --component-badge-bg: var(--semantic-color-feedback-bg-info);
507
504
  --component-button-primary-textDisabled: var(--semantic-color-content-disabled);
505
+ --semantic-elevation-flat-surface: var(--semantic-color-surface-page);
506
+ --semantic-elevation-flat-border: var(--semantic-color-border-subtle);
507
+ --semantic-elevation-raised-surface: var(--semantic-color-surface-raised);
508
+ --semantic-elevation-floating-surface: var(--semantic-color-surface-raised);
509
+ --semantic-elevation-overlay-surface: var(--semantic-color-surface-overlay);
510
+ --component-nav-bg: var(--semantic-color-surface-page);
511
+ --component-nav-bgActive: var(--semantic-accent-subtle);
512
+ --component-nav-borderActive: var(--semantic-color-surface-accent);
513
+ --component-nav-text: var(--semantic-color-content-secondary);
514
+ --component-nav-textActive: var(--semantic-color-content-primary);
515
+ --component-tag-background: var(--semantic-accent-subtle);
516
+ --component-tag-text: var(--semantic-color-content-primary);
517
+ --component-tag-border: var(--semantic-color-border-default);
518
+ --component-tag-activeText: var(--semantic-color-content-onAccent);
519
+ --component-tag-activeBackground: var(--semantic-accent-rest);
520
+ --component-tag-activeBorder: var(--semantic-accent-rest);
521
+ --component-tag-activeHover: var(--semantic-accent-hover);
522
+ --component-badge-text: var(--semantic-color-content-primary);
523
+ --component-button-bg: var(--semantic-color-surface-accent);
524
+ --component-button-bgHover: var(--semantic-accent-hover);
525
+ --component-button-text: var(--semantic-color-content-onAccent);
526
+ --component-button-primary-bgDisabled: var(--semantic-color-surface-accentSubtle);
527
+ --component-button-secondary-bg-rest: var(--semantic-color-surface-page);
528
+ --component-button-secondary-bg-hover: var(--semantic-color-surface-raised);
529
+ --component-button-secondary-bg-pressed: var(--semantic-color-surface-overlay);
530
+ --component-button-secondary-border-rest: var(--semantic-color-border-interactive);
531
+ --component-button-secondary-border-hover: var(--semantic-color-border-interactive);
532
+ --component-button-secondary-border-pressed: var(--semantic-color-border-interactive);
533
+ --component-button-secondary-border-disabled: var(--semantic-color-border-subdued);
534
+ --component-button-secondary-text: var(--semantic-color-content-primary);
535
+ --component-input-bg: var(--semantic-color-surface-raised);
536
+ --component-input-text: var(--semantic-color-content-primary);
537
+ --component-input-border: var(--semantic-color-border-interactive);
538
+ --component-input-borderError: var(--semantic-color-feedback-error);
539
+ --component-card-bg: var(--semantic-color-surface-raised);
540
+ --component-card-border: var(--semantic-color-border-default);
541
+ --role-background: var(--semantic-color-surface-page);
542
+ --role-foreground: var(--semantic-color-content-primary);
543
+ --role-card: var(--semantic-color-surface-raised);
544
+ --role-card-foreground: var(--semantic-color-content-primary);
545
+ --role-popover: var(--semantic-color-surface-overlay);
546
+ --role-popover-foreground: var(--semantic-color-content-primary);
547
+ --role-primary: var(--semantic-color-surface-accent);
548
+ --role-primary-foreground: var(--semantic-color-content-onAccent);
549
+ --role-secondary: var(--semantic-color-surface-raised);
550
+ --role-secondary-foreground: var(--semantic-color-content-primary);
551
+ --role-muted: var(--semantic-color-surface-overlay);
552
+ --role-muted-foreground: var(--semantic-color-content-secondary);
553
+ --role-accent: var(--semantic-color-surface-accentSubtle);
554
+ --role-accent-foreground: var(--semantic-color-content-accent);
555
+ --role-destructive: var(--semantic-color-feedback-error);
556
+ --role-destructive-foreground: var(--semantic-color-content-inverse);
557
+ --role-border: var(--semantic-color-border-default);
558
+ --role-input: var(--semantic-color-border-interactive);
559
+ --role-ring: var(--semantic-color-border-accent);
508
560
  }
@@ -495,12 +495,6 @@
495
495
  },
496
496
  "size": {
497
497
  "$type": "dimension",
498
- "2xs": {
499
- "$value": {
500
- "value": 10,
501
- "unit": "px"
502
- }
503
- },
504
498
  "xs": {
505
499
  "$value": {
506
500
  "value": 13,
@@ -565,19 +559,12 @@
565
559
  },
566
560
  "weight": {
567
561
  "$type": "fontWeight",
568
- "light": {
569
- "$value": 300,
570
- "$description": "Swiss-canon heading weight. Display and h1/h2 composites only."
571
- },
572
562
  "regular": {
573
563
  "$value": 400
574
564
  },
575
565
  "medium": {
576
566
  "$value": 500
577
567
  },
578
- "semibold": {
579
- "$value": 600
580
- },
581
568
  "bold": {
582
569
  "$value": 700
583
570
  }
@@ -607,12 +594,6 @@
607
594
  },
608
595
  "letterSpacing": {
609
596
  "$type": "dimension",
610
- "tighter": {
611
- "$value": {
612
- "value": -0.02,
613
- "unit": "em"
614
- }
615
- },
616
597
  "tight": {
617
598
  "$value": {
618
599
  "value": -0.01,
@@ -625,18 +606,6 @@
625
606
  "unit": "em"
626
607
  }
627
608
  },
628
- "wide": {
629
- "$value": {
630
- "value": 0.01,
631
- "unit": "em"
632
- }
633
- },
634
- "wider": {
635
- "$value": {
636
- "value": 0.02,
637
- "unit": "em"
638
- }
639
- },
640
609
  "caps": {
641
610
  "$value": {
642
611
  "value": 0.06,
@@ -862,6 +831,14 @@
862
831
  "unit": "px"
863
832
  },
864
833
  "$description": "Minimum interactive hit target size."
834
+ },
835
+ "minCompact": {
836
+ "$type": "dimension",
837
+ "$value": {
838
+ "value": 24,
839
+ "unit": "px"
840
+ },
841
+ "$description": "WCAG 2.2 AA (2.5.8) minimum target size for a compact inline control, such as a tokenizer chip's remove button, where the 44px AAA floor (2.5.5) does not apply."
865
842
  }
866
843
  },
867
844
  "width": {
@@ -893,6 +870,14 @@
893
870
  "value": 50,
894
871
  "unit": "ch"
895
872
  }
873
+ },
874
+ "280": {
875
+ "$type": "dimension",
876
+ "$value": {
877
+ "value": 280,
878
+ "unit": "px"
879
+ },
880
+ "$description": "Docs-shell rail width (hds#280). Our own number, not HeroUI's 268px — wide enough for the longest top-level nav label at the default type ramp with room to spare."
896
881
  }
897
882
  }
898
883
  },
@@ -1530,6 +1515,11 @@
1530
1515
  "railPadding": {
1531
1516
  "$value": "{primitive.space.5}",
1532
1517
  "$description": "20px outer padding for sidebar and TOC rails."
1518
+ },
1519
+ "railWidth": {
1520
+ "$type": "dimension",
1521
+ "$value": "{primitive.size.width.280}",
1522
+ "$description": "Docs-shell left nav rail and right TOC rail width (hds#280). Both rails share one width token; default 0 below their breakpoint (see HdsDocsShell)."
1533
1523
  }
1534
1524
  }
1535
1525
  },