@hirobius/design-system 0.13.1 → 0.14.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 (67) hide show
  1. package/README.md +49 -6
  2. package/dist/contexts.js +62 -60
  3. package/dist/hirobius-ui.js +4040 -3347
  4. package/dist/manifest.js +7 -7
  5. package/dist/styles.css +1 -1
  6. package/dist/tokens.css +1 -1
  7. package/dist/types/src/app/components/activity-feed.d.ts +6 -0
  8. package/dist/types/src/app/components/avatar.d.ts +1 -0
  9. package/dist/types/src/app/components/badge.d.ts +1 -0
  10. package/dist/types/src/app/components/box.d.ts +2 -2
  11. package/dist/types/src/app/components/breadcrumb.d.ts +1 -0
  12. package/dist/types/src/app/components/button.d.ts +1 -0
  13. package/dist/types/src/app/components/callout.d.ts +1 -0
  14. package/dist/types/src/app/components/card.d.ts +7 -2
  15. package/dist/types/src/app/components/checkbox.d.ts +1 -0
  16. package/dist/types/src/app/components/code-block.d.ts +1 -0
  17. package/dist/types/src/app/components/combobox.d.ts +1 -0
  18. package/dist/types/src/app/components/dialog.d.ts +5 -0
  19. package/dist/types/src/app/components/disclosure.d.ts +1 -0
  20. package/dist/types/src/app/components/divider.d.ts +4 -0
  21. package/dist/types/src/app/components/empty-state.d.ts +1 -0
  22. package/dist/types/src/app/components/field.d.ts +1 -0
  23. package/dist/types/src/app/components/form.d.ts +7 -1
  24. package/dist/types/src/app/components/icon-button.d.ts +2 -2
  25. package/dist/types/src/app/components/icon.d.ts +1 -1
  26. package/dist/types/src/app/components/inline-code.d.ts +3 -0
  27. package/dist/types/src/app/components/inline-link.d.ts +1 -0
  28. package/dist/types/src/app/components/input.d.ts +1 -0
  29. package/dist/types/src/app/components/menu.d.ts +1 -0
  30. package/dist/types/src/app/components/nav-group.d.ts +2 -2
  31. package/dist/types/src/app/components/nav-item.d.ts +1 -1
  32. package/dist/types/src/app/components/pagination.d.ts +1 -0
  33. package/dist/types/src/app/components/popover.d.ts +1 -0
  34. package/dist/types/src/app/components/progress.d.ts +1 -0
  35. package/dist/types/src/app/components/radio.d.ts +1 -0
  36. package/dist/types/src/app/components/skeleton.d.ts +1 -0
  37. package/dist/types/src/app/components/slider.d.ts +1 -0
  38. package/dist/types/src/app/components/spinner.d.ts +1 -0
  39. package/dist/types/src/app/components/stack.d.ts +1 -1
  40. package/dist/types/src/app/components/stat.d.ts +1 -0
  41. package/dist/types/src/app/components/status-list-item.d.ts +1 -0
  42. package/dist/types/src/app/components/status-tile.d.ts +1 -0
  43. package/dist/types/src/app/components/surface.d.ts +1 -1
  44. package/dist/types/src/app/components/table.d.ts +1 -0
  45. package/dist/types/src/app/components/tabs.d.ts +6 -0
  46. package/dist/types/src/app/components/tag.d.ts +1 -0
  47. package/dist/types/src/app/components/textarea.d.ts +1 -0
  48. package/dist/types/src/app/components/toast.d.ts +1 -0
  49. package/dist/types/src/app/components/toggle.d.ts +1 -0
  50. package/dist/types/src/app/context/TenantContext.d.ts +19 -5
  51. package/dist/types/src/app/context/index.d.ts +7 -7
  52. package/dist/types/src/app/design-system/generated-token-refs.d.ts +1 -1
  53. package/dist/types/src/app/design-system/generated-token-values.d.ts +1 -1
  54. package/dist/types/src/app/design-system/theme.d.ts +1 -1
  55. package/dist/types/src/app/design-system/tokens.d.ts +2 -2
  56. package/dist/types/src/app/hooks/useHdsMotion.d.ts +1 -1
  57. package/dist/types/src/app/layouts/HdsSystemDocLayout.d.ts +1 -1
  58. package/dist/types/src/app/lib/hds-search.d.ts +1 -1
  59. package/dist/types/src/brand/index.d.ts +1 -1
  60. package/dist/types/src/form/index.d.ts +3 -3
  61. package/dist/types/src/index.d.ts +116 -116
  62. package/dist/types/src/lib/env.d.ts +31 -0
  63. package/dist/types/src/lib/manifest-entry.d.ts +1 -1
  64. package/dist/types/src/scroll/index.d.ts +2 -2
  65. package/hirobius.tokens.json +3 -3
  66. package/package.json +8 -5
  67. package/public/hds-manifest.json +783 -90
@@ -2,7 +2,7 @@
2
2
  "name": "Hirobius Design System",
3
3
  "description": "Three-tier design token system for Adrian Milsap's portfolio site. Tokens flow primitive → semantic → component. All visual decisions trace back to hirobius.tokens.json.",
4
4
  "version": "1",
5
- "generated": "2026-09-19T21:10:47.474Z",
5
+ "generated": "2026-09-21T02:18:05.720Z",
6
6
  "source": "hirobius.tokens.json",
7
7
  "format": "W3C DTCG 2025.10",
8
8
  "docs": "https://adrianmilsap.com/hds",
@@ -55,6 +55,13 @@
55
55
  "Calendar",
56
56
  "Callout",
57
57
  "Card",
58
+ "CardBody",
59
+ "CardDescription",
60
+ "CardFooter",
61
+ "CardHeader",
62
+ "CardMetric",
63
+ "CardProgress",
64
+ "CardTitle",
58
65
  "Carousel",
59
66
  "Center",
60
67
  "CinematicLink",
@@ -71,6 +78,15 @@
71
78
  "DateRangeInput",
72
79
  "DateTimeInput",
73
80
  "Dialog",
81
+ "DialogClose",
82
+ "DialogContent",
83
+ "DialogDescription",
84
+ "DialogFooter",
85
+ "DialogHeader",
86
+ "DialogOverlay",
87
+ "DialogPortal",
88
+ "DialogTitle",
89
+ "DialogTrigger",
74
90
  "Disclosure",
75
91
  "Divider",
76
92
  "DocLinkCard",
@@ -89,6 +105,7 @@
89
105
  "HdsSlider",
90
106
  "HdsThemeProvider",
91
107
  "HdsToggle",
108
+ "HdsTooltip",
92
109
  "HeadingStack",
93
110
  "HoverCard",
94
111
  "Icon",
@@ -99,6 +116,7 @@
99
116
  "InputGroup",
100
117
  "Kbd",
101
118
  "Lightbox",
119
+ "Menu",
102
120
  "MetadataList",
103
121
  "MultiSelector",
104
122
  "NavGroup",
@@ -107,6 +125,7 @@
107
125
  "Page",
108
126
  "Pagination",
109
127
  "Pin",
128
+ "Popover",
110
129
  "Progress",
111
130
  "Reveal",
112
131
  "SegmentedControl",
@@ -573,10 +592,18 @@
573
592
  "name": "HdsMobileTopBar",
574
593
  "filePath": "src/app/components/shell-controls.tsx"
575
594
  },
595
+ {
596
+ "name": "HdsRadio",
597
+ "filePath": "src/app/components/controls.tsx"
598
+ },
576
599
  {
577
600
  "name": "HdsRadio",
578
601
  "filePath": "src/app/components/radio.tsx"
579
602
  },
603
+ {
604
+ "name": "HdsSelect",
605
+ "filePath": "src/app/components/controls.tsx"
606
+ },
580
607
  {
581
608
  "name": "HdsSelect",
582
609
  "filePath": "src/app/components/select.tsx"
@@ -585,13 +612,25 @@
585
612
  "name": "HdsSidebarUtilityButton",
586
613
  "filePath": "src/app/components/shell-controls.tsx"
587
614
  },
615
+ {
616
+ "name": "HdsSlider",
617
+ "filePath": "src/app/components/controls.tsx"
618
+ },
588
619
  {
589
620
  "name": "HdsSlider",
590
621
  "filePath": "src/app/components/slider.tsx"
591
622
  },
623
+ {
624
+ "name": "HdsToggle",
625
+ "filePath": "src/app/components/controls.tsx"
626
+ },
592
627
  {
593
628
  "name": "HdsToggle",
594
629
  "filePath": "src/app/components/toggle.tsx"
630
+ },
631
+ {
632
+ "name": "HdsTooltip",
633
+ "filePath": "src/app/components/hds-tooltip.tsx"
595
634
  }
596
635
  ]
597
636
  },
@@ -863,7 +902,7 @@
863
902
  "hidden": false,
864
903
  "filePath": "src/app/components/code-block.tsx",
865
904
  "description": "CodeBlock - code display with copy button and optional collapsible toggle.",
866
- "figmaUrl": null,
905
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-154",
867
906
  "figmaId": null,
868
907
  "preview": {
869
908
  "exportName": "CodeBlock",
@@ -922,7 +961,7 @@
922
961
  "tier": "primitive",
923
962
  "docExempt": false,
924
963
  "sourcePath": "src/app/components/CodeBlock.tsx",
925
- "figmaLink": null
964
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-154"
926
965
  },
927
966
  "Container": {
928
967
  "category": "Layout",
@@ -996,7 +1035,7 @@
996
1035
  "hidden": false,
997
1036
  "filePath": "src/app/components/disclosure.tsx",
998
1037
  "description": "Disclosure - compact disclosure surface for optional explanatory content.",
999
- "figmaUrl": null,
1038
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-453",
1000
1039
  "figmaId": null,
1001
1040
  "preview": {
1002
1041
  "exportName": "Disclosure",
@@ -1102,7 +1141,7 @@
1102
1141
  }
1103
1142
  ],
1104
1143
  "sourcePath": "src/app/components/Disclosure.tsx",
1105
- "figmaLink": null
1144
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-453"
1106
1145
  },
1107
1146
  "Divider": {
1108
1147
  "category": "Layout",
@@ -1111,7 +1150,7 @@
1111
1150
  "hidden": false,
1112
1151
  "filePath": "src/app/components/divider.tsx",
1113
1152
  "description": "Divider — semantic separator between content regions.",
1114
- "figmaUrl": null,
1153
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-26",
1115
1154
  "figmaId": null,
1116
1155
  "preview": {
1117
1156
  "exportName": "Divider",
@@ -1152,7 +1191,7 @@
1152
1191
  "tier": "primitive",
1153
1192
  "docExempt": false,
1154
1193
  "sourcePath": "src/app/components/Divider.tsx",
1155
- "figmaLink": null,
1194
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-26",
1156
1195
  "props": {
1157
1196
  "orientation": {
1158
1197
  "type": "enum",
@@ -1741,7 +1780,7 @@
1741
1780
  "hidden": false,
1742
1781
  "filePath": "src/app/components/icon-button.tsx",
1743
1782
  "description": "IconButton ” icon-only action trigger built on the shared Button primitive.",
1744
- "figmaUrl": null,
1783
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=40-39",
1745
1784
  "figmaId": null,
1746
1785
  "preview": {
1747
1786
  "exportName": "IconButton",
@@ -1862,7 +1901,7 @@
1862
1901
  }
1863
1902
  ],
1864
1903
  "sourcePath": "src/app/components/IconButton.tsx",
1865
- "figmaLink": null
1904
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=40-39"
1866
1905
  },
1867
1906
  "InlineCode": {
1868
1907
  "category": "Display",
@@ -1871,7 +1910,7 @@
1871
1910
  "hidden": false,
1872
1911
  "filePath": "src/app/components/inline-code.tsx",
1873
1912
  "description": "InlineCode — inline code chip for token paths, file paths, and code-adjacent prose.",
1874
- "figmaUrl": null,
1913
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-155",
1875
1914
  "figmaId": null,
1876
1915
  "preview": {
1877
1916
  "exportName": "InlineCode",
@@ -1917,7 +1956,7 @@
1917
1956
  "tier": "primitive",
1918
1957
  "docExempt": false,
1919
1958
  "sourcePath": "src/app/components/InlineCode.tsx",
1920
- "figmaLink": null
1959
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-155"
1921
1960
  },
1922
1961
  "InlineLink": {
1923
1962
  "category": "Navigation",
@@ -1926,7 +1965,7 @@
1926
1965
  "hidden": false,
1927
1966
  "filePath": "src/app/components/inline-link.tsx",
1928
1967
  "description": "InlineLink ” inline navigation and external-link primitive for body copy.",
1929
- "figmaUrl": null,
1968
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-161",
1930
1969
  "figmaId": null,
1931
1970
  "preview": {
1932
1971
  "exportName": "InlineLink",
@@ -1976,7 +2015,7 @@
1976
2015
  "tier": "primitive",
1977
2016
  "docExempt": false,
1978
2017
  "sourcePath": "src/app/components/InlineLink.tsx",
1979
- "figmaLink": null
2018
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-161"
1980
2019
  },
1981
2020
  "Input": {
1982
2021
  "category": "Inputs",
@@ -1985,7 +2024,7 @@
1985
2024
  "hidden": false,
1986
2025
  "filePath": "src/app/components/input.tsx",
1987
2026
  "description": "Input — text field primitive with label, helper, and error slots.",
1988
- "figmaUrl": null,
2027
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=38-20",
1989
2028
  "figmaId": null,
1990
2029
  "preview": {
1991
2030
  "exportName": "Input",
@@ -2219,7 +2258,7 @@
2219
2258
  ],
2220
2259
  "tier": "primitive",
2221
2260
  "docExempt": false,
2222
- "figmaLink": null
2261
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=38-20"
2223
2262
  },
2224
2263
  "NavGroup": {
2225
2264
  "category": "Navigation",
@@ -2228,7 +2267,7 @@
2228
2267
  "hidden": false,
2229
2268
  "filePath": "src/app/components/nav-group.tsx",
2230
2269
  "description": "NavGroup - labeled navigation group for stacks of nav items.",
2231
- "figmaUrl": null,
2270
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-304",
2232
2271
  "figmaId": null,
2233
2272
  "preview": {
2234
2273
  "exportName": "NavGroup",
@@ -2327,7 +2366,7 @@
2327
2366
  }
2328
2367
  ],
2329
2368
  "sourcePath": "src/app/components/NavGroup.tsx",
2330
- "figmaLink": null
2369
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-304"
2331
2370
  },
2332
2371
  "NavItem": {
2333
2372
  "category": "Navigation",
@@ -2336,7 +2375,7 @@
2336
2375
  "hidden": false,
2337
2376
  "filePath": "src/app/components/nav-item.tsx",
2338
2377
  "description": "NavItem - navigation row primitive for sidebars, table of contents, and list navigation.",
2339
- "figmaUrl": null,
2378
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-258",
2340
2379
  "figmaId": null,
2341
2380
  "preview": {
2342
2381
  "exportName": "NavItem",
@@ -2401,7 +2440,7 @@
2401
2440
  "tier": "primitive",
2402
2441
  "docExempt": false,
2403
2442
  "sourcePath": "src/app/components/NavItem.tsx",
2404
- "figmaLink": null
2443
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-258"
2405
2444
  },
2406
2445
  "SegmentedControl": {
2407
2446
  "category": "Inputs",
@@ -2410,7 +2449,7 @@
2410
2449
  "hidden": false,
2411
2450
  "filePath": "src/app/components/segmented-control.tsx",
2412
2451
  "description": "SegmentedControl \" segmented selection input for compact mutually-exclusive choices. The active×hover×pressed×disabled×secondary state matrix is expressed through `cva` compound variants keyed by `active` / `interaction` (the live-or-frozen-demo hover/pressed/rest sub-state) / `variant` / `disabled`, each resolving to the same `--semantic-*` custom properties the pre-Tailwind inline styles referenced — same tokens, same pixels, just Tailwind classes instead of a `style` object. Per ADR-015 this control keeps its own hover/focus tracking (per-segment `string | null` cardinality) rather than the shared `useInteractionState` single-element machine; only the class composition changed, not the state machine feeding it.",
2413
- "figmaUrl": null,
2452
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-334",
2414
2453
  "figmaId": null,
2415
2454
  "preview": {
2416
2455
  "exportName": "SegmentedControl",
@@ -2500,7 +2539,7 @@
2500
2539
  "tier": "primitive",
2501
2540
  "docExempt": false,
2502
2541
  "sourcePath": "src/app/components/SegmentedControl.tsx",
2503
- "figmaLink": null
2542
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-334"
2504
2543
  },
2505
2544
  "Sketch": {
2506
2545
  "category": "Layout",
@@ -2768,7 +2807,7 @@
2768
2807
  "hidden": false,
2769
2808
  "filePath": "src/app/components/stepper-field.tsx",
2770
2809
  "description": "StepperField ” numeric input with decrement/increment controls. Classification baseline: Material Design, Chakra UI, and Ant Design treat steppers as numeric input controls rather than page-specific controls. This lives in shared components so sketches and docs consume the same primitive.",
2771
- "figmaUrl": null,
2810
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-425",
2772
2811
  "figmaId": null,
2773
2812
  "preview": {
2774
2813
  "exportName": "StepperField",
@@ -2850,7 +2889,7 @@
2850
2889
  }
2851
2890
  ],
2852
2891
  "sourcePath": "src/app/components/StepperField.tsx",
2853
- "figmaLink": null
2892
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-425"
2854
2893
  },
2855
2894
  "Table": {
2856
2895
  "category": "Display",
@@ -2859,7 +2898,7 @@
2859
2898
  "hidden": false,
2860
2899
  "filePath": "src/app/components/table.tsx",
2861
2900
  "description": "Table - structured data table primitive for documentation and compact UI matrices.",
2862
- "figmaUrl": null,
2901
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-300",
2863
2902
  "figmaId": null,
2864
2903
  "preview": {
2865
2904
  "exportName": "Table",
@@ -2936,7 +2975,7 @@
2936
2975
  "tier": "primitive",
2937
2976
  "docExempt": false,
2938
2977
  "sourcePath": "src/app/components/Table.tsx",
2939
- "figmaLink": null
2978
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-300"
2940
2979
  },
2941
2980
  "Tag": {
2942
2981
  "category": "Inputs",
@@ -2945,7 +2984,7 @@
2945
2984
  "hidden": false,
2946
2985
  "filePath": "src/app/components/tag.tsx",
2947
2986
  "description": "Tag — interactive filter and category chip. The outer <button> carries the accessible 44px hit target directly via the size token while the inner pill keeps the visible surface compact. Colors (background, border-color, color) live in the pill's cva variants, painted through `group-hover`/`group-active` so the pill reacts to interaction on the shared outer button (converted off the former .hds-tag-btn/.hds-tag-pill theme.css rules for #60 — same behavior, now token-driven Tailwind classes). The `active` prop (aria-pressed selected state) is not one of the variant contract's four axes — it's expressed as the pill's `selected` cva variant, carrying the same rest → hover → pressed → focus-visible state matrix the contract expects, just keyed by selection instead of tone/size/density.",
2948
- "figmaUrl": null,
2987
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=32-11",
2949
2988
  "figmaId": null,
2950
2989
  "preview": {
2951
2990
  "exportName": "Tag",
@@ -3095,7 +3134,7 @@
3095
3134
  "tier": "primitive",
3096
3135
  "docExempt": false,
3097
3136
  "sourcePath": "src/app/components/Tag.tsx",
3098
- "figmaLink": null
3137
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=32-11"
3099
3138
  },
3100
3139
  "Token": {
3101
3140
  "category": "Display",
@@ -3134,6 +3173,7 @@
3134
3173
  "src/stories/heading-stack.stories.tsx",
3135
3174
  "src/stories/input.stories.tsx",
3136
3175
  "src/stories/patterns-layout.stories.tsx",
3176
+ "src/stories/stacked-card-rail.stories.tsx",
3137
3177
  "src/stories/status-list-item.stories.tsx",
3138
3178
  "src/stories/table.stories.tsx",
3139
3179
  "src/stories/tabs.stories.tsx",
@@ -3262,7 +3302,7 @@
3262
3302
  "hidden": false,
3263
3303
  "filePath": "src/app/components/surface.tsx",
3264
3304
  "description": "Surface — governed inset surface primitive. Enforces the \"Surface Inset\" rule: backgrounds MUST have internal padding. - Default padding: px24 (cards) | px16 (items) - Default border: none (elevation model — use shadow for lift) - Fixed radius: var(--component-card-radius) - shadow prop: applies a two-layer elevation shadow for card lift Usage: <Surface>Card content</Surface> <Surface padding=\"item\">Compact item</Surface> <Surface shadow>Lifted card with elevation shadow.</Surface>",
3265
- "figmaUrl": null,
3305
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-27",
3266
3306
  "figmaId": null,
3267
3307
  "preview": {
3268
3308
  "exportName": "Surface",
@@ -3341,7 +3381,7 @@
3341
3381
  "tier": "primitive",
3342
3382
  "docExempt": true,
3343
3383
  "sourcePath": "src/app/components/Surface.tsx",
3344
- "figmaLink": null,
3384
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=89-27",
3345
3385
  "states": [
3346
3386
  "default"
3347
3387
  ]
@@ -3352,8 +3392,8 @@
3352
3392
  "governedCategory": true,
3353
3393
  "hidden": false,
3354
3394
  "filePath": "src/app/components/card.tsx",
3355
- "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
3356
- "figmaUrl": null,
3395
+ "description": "Tagged per-export, not on the file block: this module exports eight components and a file-level @figma would hand all eight this one node.",
3396
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=39-11",
3357
3397
  "figmaId": null,
3358
3398
  "consumers": [
3359
3399
  "src/app/components/doc-link-card.tsx",
@@ -3527,7 +3567,7 @@
3527
3567
  "Body",
3528
3568
  "Footer"
3529
3569
  ],
3530
- "figmaLink": null,
3570
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=39-11",
3531
3571
  "propConstraints": {
3532
3572
  "as": {
3533
3573
  "type": "string"
@@ -3995,8 +4035,8 @@
3995
4035
  "hidden": false,
3996
4036
  "docExempt": true,
3997
4037
  "filePath": "src/app/components/dialog.tsx",
3998
- "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
3999
- "figmaUrl": null,
4038
+ "description": "Tagged per-export, not on the file block: this module exports ten components and a file-level @figma would hand all ten this one node.",
4039
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-27",
4000
4040
  "figmaId": null,
4001
4041
  "tier": "primitive",
4002
4042
  "preview": {
@@ -4171,7 +4211,7 @@
4171
4211
  "Description",
4172
4212
  "Close"
4173
4213
  ],
4174
- "figmaLink": null,
4214
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-27",
4175
4215
  "propConstraints": {
4176
4216
  "open": {
4177
4217
  "type": "boolean"
@@ -4200,7 +4240,9 @@
4200
4240
  "exportName": "StackedCardRail",
4201
4241
  "sizing": "panel"
4202
4242
  },
4203
- "consumers": [],
4243
+ "consumers": [
4244
+ "src/stories/stacked-card-rail.stories.tsx"
4245
+ ],
4204
4246
  "tokenMapping": {},
4205
4247
  "variantAxes": [],
4206
4248
  "componentProperties": [],
@@ -4225,9 +4267,9 @@
4225
4267
  "docExempt": false,
4226
4268
  "filePath": "src/app/components/button.tsx",
4227
4269
  "description": "Triggers an action when activated.",
4228
- "figmaUrl": null,
4270
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=28-138",
4229
4271
  "figmaId": null,
4230
- "figmaLink": null,
4272
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=28-138",
4231
4273
  "tier": "primitive",
4232
4274
  "preview": {
4233
4275
  "exportName": "Button",
@@ -4459,9 +4501,9 @@
4459
4501
  "docExempt": false,
4460
4502
  "filePath": "src/app/components/callout.tsx",
4461
4503
  "description": "Tone-driven side-rule callout for status, quotes, hypotheses.",
4462
- "figmaUrl": null,
4504
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-85",
4463
4505
  "figmaId": null,
4464
- "figmaLink": null,
4506
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-85",
4465
4507
  "tier": "primitive",
4466
4508
  "preview": {
4467
4509
  "exportName": "Callout",
@@ -4524,9 +4566,9 @@
4524
4566
  "docExempt": false,
4525
4567
  "filePath": "src/app/components/empty-state.tsx",
4526
4568
  "description": "EmptyState — consistent no-data placeholder for lists, grids, and sections. communicate \"no data yet\" with consistent muted typography instead of agents inventing one-off `<p>No items.</p>` lines. use for full-page errors (use ErrorPage) or for loading states (use a skeleton). Do NOT wrap in Surface or Card — the empty state is a typographic message, not a chrome-bearing container.",
4527
- "figmaUrl": null,
4569
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-352",
4528
4570
  "figmaId": null,
4529
- "figmaLink": null,
4571
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-352",
4530
4572
  "tier": "primitive",
4531
4573
  "preview": {
4532
4574
  "exportName": "EmptyState",
@@ -4568,9 +4610,9 @@
4568
4610
  "docExempt": false,
4569
4611
  "filePath": "src/app/components/field.tsx",
4570
4612
  "description": "Caption label paired with a value — used in metadata grids and read-only forms.",
4571
- "figmaUrl": null,
4613
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=85-81",
4572
4614
  "figmaId": null,
4573
- "figmaLink": null,
4615
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=85-81",
4574
4616
  "tier": "primitive",
4575
4617
  "preview": {
4576
4618
  "exportName": "Field",
@@ -4719,9 +4761,9 @@
4719
4761
  "docExempt": false,
4720
4762
  "filePath": "src/app/components/stat.tsx",
4721
4763
  "description": "Headline metric — large value, uppercase caption label, optional sub-line.",
4722
- "figmaUrl": null,
4764
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-247",
4723
4765
  "figmaId": null,
4724
- "figmaLink": null,
4766
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-247",
4725
4767
  "tier": "primitive",
4726
4768
  "preview": {
4727
4769
  "exportName": "Stat",
@@ -4789,9 +4831,9 @@
4789
4831
  "docExempt": false,
4790
4832
  "filePath": "src/app/components/status-list-item.tsx",
4791
4833
  "description": "Status dot + title row with optional muted notes and trailing slot (e.g. badge).",
4792
- "figmaUrl": null,
4834
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-350",
4793
4835
  "figmaId": null,
4794
- "figmaLink": null,
4836
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-350",
4795
4837
  "tier": "pattern",
4796
4838
  "preview": {
4797
4839
  "exportName": "StatusListItem",
@@ -4859,9 +4901,9 @@
4859
4901
  "docExempt": false,
4860
4902
  "filePath": "src/app/components/status-tile.tsx",
4861
4903
  "description": "Block-layout sibling of StatusListItem. Renders a raised surface tile with title, optional muted notes, and a trailing slot for a badge or affordance. Status colour belongs in the trailing slot, never as a left rule on the tile — every tile should look the same so feedback signals stay reserved for genuinely interrupting states.",
4862
- "figmaUrl": null,
4904
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-292",
4863
4905
  "figmaId": null,
4864
- "figmaLink": null,
4906
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-292",
4865
4907
  "tier": "pattern",
4866
4908
  "preview": {
4867
4909
  "exportName": "StatusTile",
@@ -4979,9 +5021,9 @@
4979
5021
  "governedCategory": true,
4980
5022
  "hidden": false,
4981
5023
  "docExempt": false,
4982
- "figmaUrl": null,
5024
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=31-15",
4983
5025
  "figmaId": null,
4984
- "figmaLink": null,
5026
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=31-15",
4985
5027
  "tier": "primitive",
4986
5028
  "preview": {
4987
5029
  "exportName": "Badge",
@@ -5237,10 +5279,10 @@
5237
5279
  "hidden": false,
5238
5280
  "docExempt": false,
5239
5281
  "filePath": "src/app/components/tabs.tsx",
5240
- "description": "Tabs — Radix-backed underline tabs (Root, List, Trigger, Content). Underline pattern math: - TabsList carries `border-b border-border/40` (the divider, half-strength so it anchors the strip without competing with content). - TabsTrigger has `border-b-2 border-transparent -mb-px` at rest. The `-mb-px` offsets the trigger DOWN by 1px so the trigger sits on top of the list divider; the active 2px bottom border visually REPLACES that 1px segment instead of stacking on it. - Active state pairs the underline with a soft `bg-accent/5` tint that extends down into TabsContent — the active tab visually \"claims\" its content panel (folder-tab affordance, modern-soft). Overflow: TabsList is horizontally scrollable (`overflow-x-auto whitespace-nowrap`) for cases like /ops/atlas with 8 tabs at narrow viewports. Scrollbar chrome is hidden cross-browser (-webkit / firefox / IE).",
5241
- "figmaUrl": null,
5282
+ "description": "The tab set itself. Tagged here rather than in the file block because TabsList and TabsContent share this module and have no Figma node of their own — a file-level @figma would silently claim this node for all four.",
5283
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-89",
5242
5284
  "figmaId": null,
5243
- "figmaLink": null,
5285
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-89",
5244
5286
  "tier": "primitive",
5245
5287
  "preview": {
5246
5288
  "exportName": "Tabs",
@@ -5378,7 +5420,7 @@
5378
5420
  "hidden": false,
5379
5421
  "filePath": "src/app/components/radio.tsx",
5380
5422
  "description": "HdsRadio — radio button with animated selection indicator.",
5381
- "figmaUrl": null,
5423
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=36-17",
5382
5424
  "figmaId": null,
5383
5425
  "preview": {
5384
5426
  "exportName": "HdsRadio",
@@ -5427,7 +5469,7 @@
5427
5469
  "componentProperties": [],
5428
5470
  "tier": "primitive",
5429
5471
  "docExempt": false,
5430
- "figmaLink": null
5472
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=36-17"
5431
5473
  },
5432
5474
  "HdsSelect": {
5433
5475
  "category": "Inputs",
@@ -5436,7 +5478,7 @@
5436
5478
  "hidden": false,
5437
5479
  "filePath": "src/app/components/select.tsx",
5438
5480
  "description": "HdsSelect — dropdown selector built on Radix Select.",
5439
- "figmaUrl": null,
5481
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-49",
5440
5482
  "figmaId": null,
5441
5483
  "preview": {
5442
5484
  "exportName": "HdsSelect",
@@ -5485,7 +5527,7 @@
5485
5527
  "componentProperties": [],
5486
5528
  "tier": "primitive",
5487
5529
  "docExempt": false,
5488
- "figmaLink": null
5530
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-49"
5489
5531
  },
5490
5532
  "HdsSlider": {
5491
5533
  "category": "Inputs",
@@ -5494,7 +5536,7 @@
5494
5536
  "hidden": false,
5495
5537
  "filePath": "src/app/components/slider.tsx",
5496
5538
  "description": "HdsSlider — range slider with label and value display.",
5497
- "figmaUrl": null,
5539
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-265",
5498
5540
  "figmaId": null,
5499
5541
  "preview": {
5500
5542
  "exportName": "HdsSlider",
@@ -5543,7 +5585,7 @@
5543
5585
  "componentProperties": [],
5544
5586
  "tier": "primitive",
5545
5587
  "docExempt": false,
5546
- "figmaLink": null
5588
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-265"
5547
5589
  },
5548
5590
  "HdsToggle": {
5549
5591
  "category": "Inputs",
@@ -5552,7 +5594,7 @@
5552
5594
  "hidden": false,
5553
5595
  "filePath": "src/app/components/toggle.tsx",
5554
5596
  "description": "HdsToggle — boolean on/off toggle with animated thumb.",
5555
- "figmaUrl": null,
5597
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=37-19",
5556
5598
  "figmaId": null,
5557
5599
  "preview": {
5558
5600
  "exportName": "HdsToggle",
@@ -5603,7 +5645,7 @@
5603
5645
  "componentProperties": [],
5604
5646
  "tier": "primitive",
5605
5647
  "docExempt": false,
5606
- "figmaLink": null
5648
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=37-19"
5607
5649
  },
5608
5650
  "Avatar": {
5609
5651
  "category": "Display",
@@ -5613,9 +5655,9 @@
5613
5655
  "docExempt": false,
5614
5656
  "filePath": "src/app/components/avatar.tsx",
5615
5657
  "description": "Circular avatar. Renders the image when available, else initials from `alt`.",
5616
- "figmaUrl": null,
5658
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=34-18",
5617
5659
  "figmaId": null,
5618
- "figmaLink": null,
5660
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=34-18",
5619
5661
  "tier": "primitive",
5620
5662
  "preview": {
5621
5663
  "exportName": "Avatar",
@@ -5670,9 +5712,9 @@
5670
5712
  "docExempt": false,
5671
5713
  "filePath": "src/app/components/progress.tsx",
5672
5714
  "description": "Linear progress. Determinate when `value` is a number, else indeterminate.",
5673
- "figmaUrl": null,
5715
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-91",
5674
5716
  "figmaId": null,
5675
- "figmaLink": null,
5717
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-91",
5676
5718
  "tier": "primitive",
5677
5719
  "preview": {
5678
5720
  "exportName": "Progress",
@@ -5681,6 +5723,7 @@
5681
5723
  "consumers": [
5682
5724
  "src/app/components/card.tsx",
5683
5725
  "src/app/components/progress.test.tsx",
5726
+ "src/stories/card.stories.tsx",
5684
5727
  "src/stories/circular-progress.stories.tsx",
5685
5728
  "src/stories/progress.stories.tsx",
5686
5729
  "src/stories/table.stories.tsx"
@@ -5722,9 +5765,9 @@
5722
5765
  "docExempt": false,
5723
5766
  "filePath": "src/app/components/skeleton.tsx",
5724
5767
  "description": "Decorative loading placeholder. Marked aria-hidden — announce the loading state on the surrounding region (e.g. aria-busy) rather than per skeleton.",
5725
- "figmaUrl": null,
5768
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-95",
5726
5769
  "figmaId": null,
5727
- "figmaLink": null,
5770
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-95",
5728
5771
  "tier": "primitive",
5729
5772
  "preview": {
5730
5773
  "exportName": "Skeleton",
@@ -5773,9 +5816,9 @@
5773
5816
  "docExempt": false,
5774
5817
  "filePath": "src/app/components/spinner.tsx",
5775
5818
  "description": "Indeterminate spinner. Inherits the surrounding text color via currentColor.",
5776
- "figmaUrl": null,
5819
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-106",
5777
5820
  "figmaId": null,
5778
- "figmaLink": null,
5821
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=88-106",
5779
5822
  "tier": "primitive",
5780
5823
  "preview": {
5781
5824
  "exportName": "Spinner",
@@ -5818,9 +5861,9 @@
5818
5861
  "docExempt": false,
5819
5862
  "filePath": "src/app/components/breadcrumb.tsx",
5820
5863
  "description": "Breadcrumb trail. Links route through the HDS router seam (plain anchors with no router, client-side nav when a router adapter is provided). The final item is marked aria-current=\"page\".",
5821
- "figmaUrl": null,
5864
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-159",
5822
5865
  "figmaId": null,
5823
- "figmaLink": null,
5866
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-159",
5824
5867
  "tier": "pattern",
5825
5868
  "preview": {
5826
5869
  "exportName": "Breadcrumb",
@@ -5858,9 +5901,9 @@
5858
5901
  "docExempt": false,
5859
5902
  "filePath": "src/app/components/pagination.tsx",
5860
5903
  "description": "Paged navigation with first/last anchors, sibling pages, and ellipses.",
5861
- "figmaUrl": null,
5904
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-194",
5862
5905
  "figmaId": null,
5863
- "figmaLink": null,
5906
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-194",
5864
5907
  "tier": "pattern",
5865
5908
  "preview": {
5866
5909
  "exportName": "Pagination",
@@ -5920,9 +5963,9 @@
5920
5963
  "categorySource": "jsdoc",
5921
5964
  "governedCategory": true,
5922
5965
  "docExempt": false,
5923
- "figmaUrl": null,
5966
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=35-29",
5924
5967
  "figmaId": null,
5925
- "figmaLink": null,
5968
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=35-29",
5926
5969
  "consumers": [
5927
5970
  "src/app/components/checkbox.test.tsx",
5928
5971
  "src/app/components/radio.tsx",
@@ -5939,9 +5982,9 @@
5939
5982
  "docExempt": true,
5940
5983
  "filePath": "src/app/components/toast.tsx",
5941
5984
  "description": "Provider + viewport for the toast system. Wrap the app root once.",
5942
- "figmaUrl": null,
5985
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-367",
5943
5986
  "figmaId": null,
5944
- "figmaLink": null,
5987
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-367",
5945
5988
  "tier": "pattern",
5946
5989
  "preview": {
5947
5990
  "exportName": "ToastProvider",
@@ -5979,9 +6022,9 @@
5979
6022
  "docExempt": true,
5980
6023
  "filePath": "src/app/components/combobox.tsx",
5981
6024
  "description": "Combobox — searchable single-select (Popover + filtered listbox). A select-with-search built on the HDS Popover. The trigger shows the current selection; opening reveals a search field that filters the option list. Full keyboard support (↑/↓ to move, Enter to choose, Esc/outside-click to close) and listbox/option ARIA. Controlled via `value` + `onChange`. <Combobox options={[{ value: 'us', label: 'United States' }, …]} value={country} onChange={setCountry} placeholder=\"Select a country\" />",
5982
- "figmaUrl": null,
6025
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-237",
5983
6026
  "figmaId": null,
5984
- "figmaLink": null,
6027
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=82-237",
5985
6028
  "tier": "pattern",
5986
6029
  "preview": {
5987
6030
  "exportName": "Combobox",
@@ -6047,10 +6090,10 @@
6047
6090
  "hidden": false,
6048
6091
  "docExempt": true,
6049
6092
  "filePath": "src/app/components/form.tsx",
6050
- "description": "Styled `<form>` with consistent vertical field rhythm.",
6051
- "figmaUrl": null,
6093
+ "description": "Styled `<form>` with consistent vertical field rhythm. Tagged per-export: FormField and FormFieldShell share this module and have no Figma node, so a file-level @figma would claim this one for all three.",
6094
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=85-94",
6052
6095
  "figmaId": null,
6053
- "figmaLink": null,
6096
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=85-94",
6054
6097
  "tier": "pattern",
6055
6098
  "preview": {
6056
6099
  "exportName": "Form",
@@ -6697,7 +6740,7 @@
6697
6740
  "hidden": false,
6698
6741
  "filePath": "src/app/components/side-nav.tsx",
6699
6742
  "description": "SideNav - sidebar navigation row primitive. Two levels: root — top-level section link. Full-width row using the shared nav label type style. nested — child page link. Keeps the same full-width hit area and label type treatment, with indentation handled via inner padding only. No indicator bar (reserved for HdsTocNav). Idle text = content-secondary → primary on hover/active. Accent surface fill on active state.",
6700
- "figmaUrl": null,
6743
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-332",
6701
6744
  "figmaId": null,
6702
6745
  "consumers": [
6703
6746
  "src/app/components/side-nav.test.tsx",
@@ -6719,7 +6762,7 @@
6719
6762
  "docExempt": false,
6720
6763
  "variantAxes": [],
6721
6764
  "componentProperties": [],
6722
- "figmaLink": null
6765
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=86-332"
6723
6766
  },
6724
6767
  "CommandPalette": {
6725
6768
  "category": "Overlays",
@@ -8477,9 +8520,9 @@
8477
8520
  "docExempt": false,
8478
8521
  "filePath": "src/app/components/textarea.tsx",
8479
8522
  "description": "Textarea — multi-line text field primitive with label, helper, and error slots. Mirrors Input's shell + token skin as a native `<textarea>`. Figma parity: the four states Default / Focus / Error / Disabled map to the focus-ring, `error`, and `disabled` treatments below.",
8480
- "figmaUrl": null,
8523
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=85-14",
8481
8524
  "figmaId": null,
8482
- "figmaLink": null,
8525
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=85-14",
8483
8526
  "tier": "primitive",
8484
8527
  "preview": {
8485
8528
  "exportName": "Textarea",
@@ -8532,6 +8575,656 @@
8532
8575
  "requiredProps": [],
8533
8576
  "a11yRules": []
8534
8577
  },
8578
+ "CardBody": {
8579
+ "category": "Display",
8580
+ "categorySource": "jsdoc",
8581
+ "governedCategory": true,
8582
+ "hidden": false,
8583
+ "docExempt": false,
8584
+ "filePath": "src/app/components/card.tsx",
8585
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8586
+ "figmaUrl": null,
8587
+ "figmaId": null,
8588
+ "figmaLink": null,
8589
+ "tier": "primitive",
8590
+ "preview": {
8591
+ "exportName": "CardBody",
8592
+ "sizing": "panel"
8593
+ },
8594
+ "consumers": [],
8595
+ "tokenMapping": {},
8596
+ "variantAxes": [],
8597
+ "componentProperties": [],
8598
+ "props": {},
8599
+ "allowedChildren": [
8600
+ "*"
8601
+ ],
8602
+ "propConstraints": {},
8603
+ "requiredProps": [],
8604
+ "a11yRules": []
8605
+ },
8606
+ "CardDescription": {
8607
+ "category": "Display",
8608
+ "categorySource": "jsdoc",
8609
+ "governedCategory": true,
8610
+ "hidden": false,
8611
+ "docExempt": false,
8612
+ "filePath": "src/app/components/card.tsx",
8613
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8614
+ "figmaUrl": null,
8615
+ "figmaId": null,
8616
+ "figmaLink": null,
8617
+ "tier": "primitive",
8618
+ "preview": {
8619
+ "exportName": "CardDescription",
8620
+ "sizing": "panel"
8621
+ },
8622
+ "consumers": [],
8623
+ "tokenMapping": {},
8624
+ "variantAxes": [],
8625
+ "componentProperties": [],
8626
+ "props": {},
8627
+ "allowedChildren": [
8628
+ "*"
8629
+ ],
8630
+ "propConstraints": {},
8631
+ "requiredProps": [],
8632
+ "a11yRules": []
8633
+ },
8634
+ "CardFooter": {
8635
+ "category": "Display",
8636
+ "categorySource": "jsdoc",
8637
+ "governedCategory": true,
8638
+ "hidden": false,
8639
+ "docExempt": false,
8640
+ "filePath": "src/app/components/card.tsx",
8641
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8642
+ "figmaUrl": null,
8643
+ "figmaId": null,
8644
+ "figmaLink": null,
8645
+ "tier": "primitive",
8646
+ "preview": {
8647
+ "exportName": "CardFooter",
8648
+ "sizing": "panel"
8649
+ },
8650
+ "consumers": [],
8651
+ "tokenMapping": {},
8652
+ "variantAxes": [],
8653
+ "componentProperties": [],
8654
+ "props": {},
8655
+ "allowedChildren": [
8656
+ "*"
8657
+ ],
8658
+ "propConstraints": {},
8659
+ "requiredProps": [],
8660
+ "a11yRules": []
8661
+ },
8662
+ "CardHeader": {
8663
+ "category": "Display",
8664
+ "categorySource": "jsdoc",
8665
+ "governedCategory": true,
8666
+ "hidden": false,
8667
+ "docExempt": false,
8668
+ "filePath": "src/app/components/card.tsx",
8669
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8670
+ "figmaUrl": null,
8671
+ "figmaId": null,
8672
+ "figmaLink": null,
8673
+ "tier": "primitive",
8674
+ "preview": {
8675
+ "exportName": "CardHeader",
8676
+ "sizing": "panel"
8677
+ },
8678
+ "consumers": [],
8679
+ "tokenMapping": {},
8680
+ "variantAxes": [],
8681
+ "componentProperties": [],
8682
+ "props": {
8683
+ "metadata": {
8684
+ "type": "ReactNode",
8685
+ "optional": true
8686
+ }
8687
+ },
8688
+ "allowedChildren": [
8689
+ "*"
8690
+ ],
8691
+ "propConstraints": {},
8692
+ "requiredProps": [],
8693
+ "a11yRules": []
8694
+ },
8695
+ "CardMetric": {
8696
+ "category": "Display",
8697
+ "categorySource": "jsdoc",
8698
+ "governedCategory": true,
8699
+ "hidden": false,
8700
+ "docExempt": false,
8701
+ "filePath": "src/app/components/card.tsx",
8702
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8703
+ "figmaUrl": null,
8704
+ "figmaId": null,
8705
+ "figmaLink": null,
8706
+ "tier": "primitive",
8707
+ "preview": {
8708
+ "exportName": "CardMetric",
8709
+ "sizing": "panel"
8710
+ },
8711
+ "consumers": [],
8712
+ "tokenMapping": {},
8713
+ "variantAxes": [],
8714
+ "componentProperties": [],
8715
+ "props": {
8716
+ "label": {
8717
+ "type": "ReactNode"
8718
+ },
8719
+ "sub": {
8720
+ "type": "ReactNode",
8721
+ "optional": true
8722
+ },
8723
+ "tone": {
8724
+ "type": "enum",
8725
+ "values": [
8726
+ "neutral",
8727
+ "danger",
8728
+ "success",
8729
+ "warning",
8730
+ "info"
8731
+ ],
8732
+ "default": "neutral"
8733
+ },
8734
+ "value": {
8735
+ "type": "ReactNode"
8736
+ }
8737
+ },
8738
+ "allowedChildren": [
8739
+ "*"
8740
+ ],
8741
+ "propConstraints": {},
8742
+ "requiredProps": [],
8743
+ "a11yRules": []
8744
+ },
8745
+ "CardProgress": {
8746
+ "category": "Display",
8747
+ "categorySource": "jsdoc",
8748
+ "governedCategory": true,
8749
+ "hidden": false,
8750
+ "docExempt": false,
8751
+ "filePath": "src/app/components/card.tsx",
8752
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8753
+ "figmaUrl": null,
8754
+ "figmaId": null,
8755
+ "figmaLink": null,
8756
+ "tier": "primitive",
8757
+ "preview": {
8758
+ "exportName": "CardProgress",
8759
+ "sizing": "panel"
8760
+ },
8761
+ "consumers": [],
8762
+ "tokenMapping": {},
8763
+ "variantAxes": [],
8764
+ "componentProperties": [],
8765
+ "props": {
8766
+ "label": {
8767
+ "type": "ReactNode",
8768
+ "optional": true
8769
+ },
8770
+ "max": {
8771
+ "type": "number",
8772
+ "default": 100
8773
+ },
8774
+ "tone": {
8775
+ "type": "enum",
8776
+ "values": [
8777
+ "neutral",
8778
+ "danger",
8779
+ "success",
8780
+ "warning",
8781
+ "info"
8782
+ ],
8783
+ "default": "neutral"
8784
+ },
8785
+ "value": {
8786
+ "type": "number"
8787
+ }
8788
+ },
8789
+ "allowedChildren": [
8790
+ "*"
8791
+ ],
8792
+ "propConstraints": {},
8793
+ "requiredProps": [],
8794
+ "a11yRules": []
8795
+ },
8796
+ "CardTitle": {
8797
+ "category": "Display",
8798
+ "categorySource": "jsdoc",
8799
+ "governedCategory": true,
8800
+ "hidden": false,
8801
+ "docExempt": false,
8802
+ "filePath": "src/app/components/card.tsx",
8803
+ "description": "Card — surface container with slot anatomy (12d-card-anatomy). Slot anatomy (DESIGN.md §\"Card Anatomy\"). Status, progress, and metadata are layout-bearing — they live in slots, never inline next to prose. <Card variant=\"accent\"> <Card.Header metadata={<Badge tone=\"warning\">in-progress</Badge>}> <Card.Title>Discovery phase</Card.Title> <Card.Description>Stakeholder interviews and audit prep.</Card.Description> </Card.Header> <Card.Progress value={42} max={100} label=\"5 / 12 tasks\" /> <Card.Metric label=\"Retainer\" value=\"$3,500\" sub=\"Active\" /> <Card.Body>…</Card.Body> <Card.Footer>…</Card.Footer> </Card> Slot reservations: - Header: title (h3) + optional description (caption) + optional metadata zone (right-aligned, holds <Badge> / <Tag> for status, never raw spans). - Progress: full-width 4px bar in a reserved 16px vertical rail. Owns its spacing — never crowds adjacent prose. - Metric: single label-uppercase + big value (h2) + optional sub-line. Reserved vertical block. Use multiple side-by-side via flex/grid container. - Body: prose, lists, structured content. NO inline status, progress, or thin colored bars. Group sections via separate <Card.Body> blocks. - Footer: actions, secondary metadata, timestamps. `variant`: 'default' (borderless) | 'accent' (2px accent border) — the structural axis, for highlighted entries like \"recommended package\". `tone`: neutral | danger | success | warning | info — the fixed feedback axis (#60 variant contract), for status-driven cards where the border IS the signal. `variant`/`tone` together replace hand-rolled `pkgHighlight`-style overrides. Legacy props (padding / gap / noPadding / as / style) are retained. Existing callers that pass raw children continue to work; new callers should prefer compound parts + `padding=\"none\"`. Depth comes from semantic.color.border.default (role.border) at rest; elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
8804
+ "figmaUrl": null,
8805
+ "figmaId": null,
8806
+ "figmaLink": null,
8807
+ "tier": "primitive",
8808
+ "preview": {
8809
+ "exportName": "CardTitle",
8810
+ "sizing": "panel"
8811
+ },
8812
+ "consumers": [],
8813
+ "tokenMapping": {},
8814
+ "variantAxes": [],
8815
+ "componentProperties": [],
8816
+ "props": {},
8817
+ "allowedChildren": [
8818
+ "*"
8819
+ ],
8820
+ "propConstraints": {},
8821
+ "requiredProps": [],
8822
+ "a11yRules": []
8823
+ },
8824
+ "DialogClose": {
8825
+ "category": "Overlays",
8826
+ "categorySource": "jsdoc",
8827
+ "governedCategory": true,
8828
+ "hidden": false,
8829
+ "docExempt": true,
8830
+ "filePath": "src/app/components/dialog.tsx",
8831
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
8832
+ "figmaUrl": null,
8833
+ "figmaId": null,
8834
+ "figmaLink": null,
8835
+ "tier": "primitive",
8836
+ "preview": {
8837
+ "exportName": "DialogClose",
8838
+ "sizing": "panel"
8839
+ },
8840
+ "consumers": [],
8841
+ "tokenMapping": {},
8842
+ "variantAxes": [],
8843
+ "componentProperties": [],
8844
+ "props": {
8845
+ "asChild": {
8846
+ "type": "boolean",
8847
+ "optional": true
8848
+ }
8849
+ },
8850
+ "allowedChildren": [
8851
+ "*"
8852
+ ],
8853
+ "propConstraints": {},
8854
+ "requiredProps": [],
8855
+ "a11yRules": []
8856
+ },
8857
+ "DialogContent": {
8858
+ "category": "Overlays",
8859
+ "categorySource": "jsdoc",
8860
+ "governedCategory": true,
8861
+ "hidden": false,
8862
+ "docExempt": true,
8863
+ "filePath": "src/app/components/dialog.tsx",
8864
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
8865
+ "figmaUrl": null,
8866
+ "figmaId": null,
8867
+ "figmaLink": null,
8868
+ "tier": "primitive",
8869
+ "preview": {
8870
+ "exportName": "DialogContent",
8871
+ "sizing": "panel"
8872
+ },
8873
+ "consumers": [],
8874
+ "tokenMapping": {},
8875
+ "variantAxes": [],
8876
+ "componentProperties": [],
8877
+ "props": {
8878
+ "asChild": {
8879
+ "type": "boolean",
8880
+ "optional": true
8881
+ },
8882
+ "hideClose": {
8883
+ "type": "boolean",
8884
+ "default": false
8885
+ }
8886
+ },
8887
+ "allowedChildren": [
8888
+ "*"
8889
+ ],
8890
+ "propConstraints": {},
8891
+ "requiredProps": [],
8892
+ "a11yRules": []
8893
+ },
8894
+ "DialogDescription": {
8895
+ "category": "Overlays",
8896
+ "categorySource": "jsdoc",
8897
+ "governedCategory": true,
8898
+ "hidden": false,
8899
+ "docExempt": true,
8900
+ "filePath": "src/app/components/dialog.tsx",
8901
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
8902
+ "figmaUrl": null,
8903
+ "figmaId": null,
8904
+ "figmaLink": null,
8905
+ "tier": "primitive",
8906
+ "preview": {
8907
+ "exportName": "DialogDescription",
8908
+ "sizing": "panel"
8909
+ },
8910
+ "consumers": [],
8911
+ "tokenMapping": {},
8912
+ "variantAxes": [],
8913
+ "componentProperties": [],
8914
+ "props": {
8915
+ "asChild": {
8916
+ "type": "boolean",
8917
+ "optional": true
8918
+ }
8919
+ },
8920
+ "allowedChildren": [
8921
+ "*"
8922
+ ],
8923
+ "propConstraints": {},
8924
+ "requiredProps": [],
8925
+ "a11yRules": []
8926
+ },
8927
+ "DialogFooter": {
8928
+ "category": "Overlays",
8929
+ "categorySource": "jsdoc",
8930
+ "governedCategory": true,
8931
+ "hidden": false,
8932
+ "docExempt": true,
8933
+ "filePath": "src/app/components/dialog.tsx",
8934
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
8935
+ "figmaUrl": null,
8936
+ "figmaId": null,
8937
+ "figmaLink": null,
8938
+ "tier": "primitive",
8939
+ "preview": {
8940
+ "exportName": "DialogFooter",
8941
+ "sizing": "panel"
8942
+ },
8943
+ "consumers": [],
8944
+ "tokenMapping": {},
8945
+ "variantAxes": [],
8946
+ "componentProperties": [],
8947
+ "props": {},
8948
+ "allowedChildren": [
8949
+ "*"
8950
+ ],
8951
+ "propConstraints": {},
8952
+ "requiredProps": [],
8953
+ "a11yRules": []
8954
+ },
8955
+ "DialogHeader": {
8956
+ "category": "Overlays",
8957
+ "categorySource": "jsdoc",
8958
+ "governedCategory": true,
8959
+ "hidden": false,
8960
+ "docExempt": true,
8961
+ "filePath": "src/app/components/dialog.tsx",
8962
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
8963
+ "figmaUrl": null,
8964
+ "figmaId": null,
8965
+ "figmaLink": null,
8966
+ "tier": "primitive",
8967
+ "preview": {
8968
+ "exportName": "DialogHeader",
8969
+ "sizing": "panel"
8970
+ },
8971
+ "consumers": [],
8972
+ "tokenMapping": {},
8973
+ "variantAxes": [],
8974
+ "componentProperties": [],
8975
+ "props": {},
8976
+ "allowedChildren": [
8977
+ "*"
8978
+ ],
8979
+ "propConstraints": {},
8980
+ "requiredProps": [],
8981
+ "a11yRules": []
8982
+ },
8983
+ "DialogOverlay": {
8984
+ "category": "Overlays",
8985
+ "categorySource": "jsdoc",
8986
+ "governedCategory": true,
8987
+ "hidden": false,
8988
+ "docExempt": true,
8989
+ "filePath": "src/app/components/dialog.tsx",
8990
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
8991
+ "figmaUrl": null,
8992
+ "figmaId": null,
8993
+ "figmaLink": null,
8994
+ "tier": "primitive",
8995
+ "preview": {
8996
+ "exportName": "DialogOverlay",
8997
+ "sizing": "panel"
8998
+ },
8999
+ "consumers": [],
9000
+ "tokenMapping": {},
9001
+ "variantAxes": [],
9002
+ "componentProperties": [],
9003
+ "props": {
9004
+ "asChild": {
9005
+ "type": "boolean",
9006
+ "optional": true
9007
+ }
9008
+ },
9009
+ "allowedChildren": [
9010
+ "*"
9011
+ ],
9012
+ "propConstraints": {},
9013
+ "requiredProps": [],
9014
+ "a11yRules": []
9015
+ },
9016
+ "DialogPortal": {
9017
+ "category": "Overlays",
9018
+ "categorySource": "jsdoc",
9019
+ "governedCategory": true,
9020
+ "hidden": false,
9021
+ "docExempt": true,
9022
+ "filePath": "src/app/components/dialog.tsx",
9023
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
9024
+ "figmaUrl": null,
9025
+ "figmaId": null,
9026
+ "figmaLink": null,
9027
+ "tier": "primitive",
9028
+ "preview": {
9029
+ "exportName": "DialogPortal",
9030
+ "sizing": "panel"
9031
+ },
9032
+ "consumers": [],
9033
+ "tokenMapping": {},
9034
+ "variantAxes": [],
9035
+ "componentProperties": [],
9036
+ "props": {},
9037
+ "allowedChildren": [
9038
+ "*"
9039
+ ],
9040
+ "propConstraints": {},
9041
+ "requiredProps": [],
9042
+ "a11yRules": []
9043
+ },
9044
+ "DialogTitle": {
9045
+ "category": "Overlays",
9046
+ "categorySource": "jsdoc",
9047
+ "governedCategory": true,
9048
+ "hidden": false,
9049
+ "docExempt": true,
9050
+ "filePath": "src/app/components/dialog.tsx",
9051
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
9052
+ "figmaUrl": null,
9053
+ "figmaId": null,
9054
+ "figmaLink": null,
9055
+ "tier": "primitive",
9056
+ "preview": {
9057
+ "exportName": "DialogTitle",
9058
+ "sizing": "panel"
9059
+ },
9060
+ "consumers": [],
9061
+ "tokenMapping": {},
9062
+ "variantAxes": [],
9063
+ "componentProperties": [],
9064
+ "props": {
9065
+ "asChild": {
9066
+ "type": "boolean",
9067
+ "optional": true
9068
+ }
9069
+ },
9070
+ "allowedChildren": [
9071
+ "*"
9072
+ ],
9073
+ "propConstraints": {},
9074
+ "requiredProps": [],
9075
+ "a11yRules": []
9076
+ },
9077
+ "DialogTrigger": {
9078
+ "category": "Overlays",
9079
+ "categorySource": "jsdoc",
9080
+ "governedCategory": true,
9081
+ "hidden": false,
9082
+ "docExempt": true,
9083
+ "filePath": "src/app/components/dialog.tsx",
9084
+ "description": "Dialog — modal dialog (shadcn baseline, compound parts). shadcn-baseline implementation (8s-7): Radix Dialog primitive (@radix-ui/react-dialog) themed with role tokens. Provides focus trap, scroll lock, ESC-to-close, backdrop scrim, and portal mounting out of the box. <Dialog> <Dialog.Trigger asChild> <Button>Open</Button> </Dialog.Trigger> <Dialog.Content> <Dialog.Header> <Dialog.Title>Confirm</Dialog.Title> <Dialog.Description>Are you sure?</Dialog.Description> </Dialog.Header> <Dialog.Footer> <Dialog.Close asChild> <Button variant=\"secondary\">Cancel</Button> </Dialog.Close> </Dialog.Footer> </Dialog.Content> </Dialog> Surface uses role.popover (semantic.color.surface.overlay) + shadow-overlay (semantic.shadow.overlay from 8e-1). The scrim is a foreground/80 wash so it picks up the theme without a hardcoded black. The close affordance is rendered as an absolutely-positioned X inside Content; pass `hideClose` to opt out for fully-custom layouts.",
9085
+ "figmaUrl": null,
9086
+ "figmaId": null,
9087
+ "figmaLink": null,
9088
+ "tier": "primitive",
9089
+ "preview": {
9090
+ "exportName": "DialogTrigger",
9091
+ "sizing": "panel"
9092
+ },
9093
+ "consumers": [],
9094
+ "tokenMapping": {},
9095
+ "variantAxes": [],
9096
+ "componentProperties": [],
9097
+ "props": {
9098
+ "asChild": {
9099
+ "type": "boolean",
9100
+ "optional": true
9101
+ }
9102
+ },
9103
+ "allowedChildren": [
9104
+ "*"
9105
+ ],
9106
+ "propConstraints": {},
9107
+ "requiredProps": [],
9108
+ "a11yRules": []
9109
+ },
9110
+ "HdsTooltip": {
9111
+ "category": "Internal",
9112
+ "categorySource": "internal-jsdoc",
9113
+ "governedCategory": true,
9114
+ "hidden": true,
9115
+ "docExempt": true,
9116
+ "filePath": "src/app/components/hds-tooltip.tsx",
9117
+ "description": "Tooltip root. Bakes in the Radix Provider so a single `<HdsTooltip>` is self-contained — no app-level provider required. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`.",
9118
+ "figmaUrl": null,
9119
+ "figmaId": null,
9120
+ "figmaLink": null,
9121
+ "tier": "primitive",
9122
+ "preview": {
9123
+ "exportName": "HdsTooltip",
9124
+ "sizing": "panel"
9125
+ },
9126
+ "consumers": [
9127
+ "src/app/components/hover-card.tsx",
9128
+ "src/stories/hds-tooltip.stories.tsx"
9129
+ ],
9130
+ "tokenMapping": {},
9131
+ "variantAxes": [],
9132
+ "componentProperties": [],
9133
+ "props": {},
9134
+ "allowedChildren": [
9135
+ "*"
9136
+ ],
9137
+ "propConstraints": {},
9138
+ "requiredProps": [],
9139
+ "a11yRules": []
9140
+ },
9141
+ "Menu": {
9142
+ "category": "Overlays",
9143
+ "categorySource": "jsdoc",
9144
+ "governedCategory": true,
9145
+ "hidden": false,
9146
+ "docExempt": true,
9147
+ "filePath": "src/app/components/menu.tsx",
9148
+ "description": "Menu root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`.",
9149
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-59",
9150
+ "figmaId": null,
9151
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-59",
9152
+ "tier": "primitive",
9153
+ "preview": {
9154
+ "exportName": "Menu",
9155
+ "sizing": "panel"
9156
+ },
9157
+ "consumers": [
9158
+ "src/app/components/command-palette.tsx",
9159
+ "src/app/components/context-menu.tsx",
9160
+ "src/app/components/date-range-input.tsx",
9161
+ "src/app/components/hover-card.tsx",
9162
+ "src/app/components/menu.test.tsx",
9163
+ "src/app/components/multi-selector.tsx",
9164
+ "src/app/components/shell-controls.tsx",
9165
+ "src/stories/menu.stories.tsx"
9166
+ ],
9167
+ "tokenMapping": {},
9168
+ "variantAxes": [],
9169
+ "componentProperties": [],
9170
+ "props": {},
9171
+ "allowedChildren": [
9172
+ "*"
9173
+ ],
9174
+ "propConstraints": {},
9175
+ "requiredProps": [],
9176
+ "a11yRules": []
9177
+ },
9178
+ "Popover": {
9179
+ "category": "Overlays",
9180
+ "categorySource": "jsdoc",
9181
+ "governedCategory": true,
9182
+ "hidden": false,
9183
+ "docExempt": true,
9184
+ "filePath": "src/app/components/popover.tsx",
9185
+ "description": "Popover root + parts. Controlled via `open`/`onOpenChange`, or uncontrolled with `defaultOpen`.",
9186
+ "figmaUrl": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-32",
9187
+ "figmaId": null,
9188
+ "figmaLink": "https://www.figma.com/design/c8MaVgwxOlxm4wr8wnH0Z4/HDS-Tokens-Components?node-id=93-32",
9189
+ "tier": "primitive",
9190
+ "preview": {
9191
+ "exportName": "Popover",
9192
+ "sizing": "panel"
9193
+ },
9194
+ "consumers": [
9195
+ "src/app/components/calendar.tsx",
9196
+ "src/app/components/combobox.test.tsx",
9197
+ "src/app/components/combobox.tsx",
9198
+ "src/app/components/date-input.test.tsx",
9199
+ "src/app/components/date-input.tsx",
9200
+ "src/app/components/date-range-input.test.tsx",
9201
+ "src/app/components/date-range-input.tsx",
9202
+ "src/app/components/date-time-input.test.tsx",
9203
+ "src/app/components/date-time-input.tsx",
9204
+ "src/app/components/hover-card.tsx",
9205
+ "src/app/components/menu.tsx",
9206
+ "src/app/components/multi-selector.test.tsx",
9207
+ "src/app/components/multi-selector.tsx",
9208
+ "src/app/components/popover.test.tsx",
9209
+ "src/app/design-system/generated-token-descriptions.ts",
9210
+ "src/stories/combobox.stories.tsx",
9211
+ "src/stories/date-input.stories.tsx",
9212
+ "src/stories/date-range-input.stories.tsx",
9213
+ "src/stories/date-time-input.stories.tsx",
9214
+ "src/stories/multi-selector.stories.tsx",
9215
+ "src/stories/popover.stories.tsx"
9216
+ ],
9217
+ "tokenMapping": {},
9218
+ "variantAxes": [],
9219
+ "componentProperties": [],
9220
+ "props": {},
9221
+ "allowedChildren": [
9222
+ "*"
9223
+ ],
9224
+ "propConstraints": {},
9225
+ "requiredProps": [],
9226
+ "a11yRules": []
9227
+ },
8535
9228
  "HdsPhosphor": {
8536
9229
  "category": "Compiler",
8537
9230
  "filePath": "scripts/hds-jsx-compiler.mjs",
@@ -11181,7 +11874,7 @@
11181
11874
  "path": "semantic.color.content.onAccent",
11182
11875
  "cssVar": "--semantic-color-content-onAccent",
11183
11876
  "type": "color",
11184
- "description": "Text/icon color on accent fills. Flips to a dark neutral in dark mode, where the accent fill is a light neutral.",
11877
+ "description": "Text/icon color on accent fills. Flips to a dark neutral in dark mode, where accent fills are light.",
11185
11878
  "alias": "{primitive.color.neutral.white}",
11186
11879
  "resolvedValue": "#ffffff",
11187
11880
  "dark": {
@@ -11897,7 +12590,7 @@
11897
12590
  "path": "semantic.radius.action",
11898
12591
  "cssVar": "--semantic-radius-action",
11899
12592
  "type": "dimension",
11900
- "description": "The shape knob. Corner radius for interactive action elements (buttons, inputs, badges, alerts, segmented items). Tailwind's rounded-md resolves to exactly this value via --role-radius; containers are one step above it at rounded-lg. Override role.radius in a tenant overlay to reshape the whole system from one value.",
12593
+ "description": "Corner radius for action elements (buttons, inputs, badges); Tailwind rounded-md resolves here. Override role.radius to reshape the system.",
11901
12594
  "alias": "{primitive.radius.8}",
11902
12595
  "resolvedValue": "8px"
11903
12596
  },