@hirobius/design-system 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +11 -1
- package/CHANGELOG.md +74 -0
- package/CONSUMING.md +2 -2
- package/DESIGN.md +24 -24
- package/NOTICE.md +1 -1
- package/README.md +20 -12
- package/UPGRADING.md +22 -1
- package/dist/chunks/{empty-state-DNoThgfV.js → empty-state-ChC_xZfg.js} +109 -92
- package/dist/chunks/{form-By82qZcC.js → form-zCZ_B83I.js} +16 -16
- package/dist/css-contract.json +1 -0
- package/dist/fonts/ibm-plex-mono-400.woff2 +0 -0
- package/dist/fonts.css +5 -5
- package/dist/form.js +1 -1
- package/dist/hirobius-ui.js +1254 -1181
- package/dist/manifest.js +5 -4
- package/dist/patterns.js +164 -162
- package/dist/styles.css +1 -1
- package/dist/tokens.css +1 -1
- package/dist/tokens.js +14 -1
- package/dist/types/src/app/components/asset-img.d.ts +1 -0
- package/dist/types/src/app/components/button.d.ts +1 -1
- package/dist/types/src/app/components/callout.d.ts +2 -1
- package/dist/types/src/app/components/card.d.ts +5 -3
- package/dist/types/src/app/components/code-block.d.ts +1 -0
- package/dist/types/src/app/components/combobox.d.ts +1 -1
- package/dist/types/src/app/components/data-table-section.d.ts +1 -0
- package/dist/types/src/app/components/destructive-section.d.ts +1 -0
- package/dist/types/src/app/components/divider.d.ts +1 -1
- package/dist/types/src/app/components/form-actions.d.ts +1 -0
- package/dist/types/src/app/components/form.d.ts +1 -0
- package/dist/types/src/app/components/grid.d.ts +1 -1
- package/dist/types/src/app/components/icon.d.ts +1 -1
- package/dist/types/src/app/components/metric-tiles.d.ts +2 -0
- package/dist/types/src/app/components/page-header.d.ts +1 -0
- package/dist/types/src/app/components/page.d.ts +1 -0
- package/dist/types/src/app/components/reveal.d.ts +1 -0
- package/dist/types/src/app/components/stack.d.ts +1 -1
- package/dist/types/src/app/components/tabs.d.ts +3 -1
- package/dist/types/src/app/context/hds-theme.d.ts +1 -1
- package/dist/types/src/app/design-system/generated-token-refs.d.ts +13 -0
- package/dist/types/src/app/design-system/generated-token-values.d.ts +14 -1
- package/dist/types/src/app/hooks/useInteractionState.d.ts +7 -1
- package/dist/types/src/index.d.ts +47 -0
- package/dist/variables.css +33 -22
- package/docs/CONSUMING.md +2 -2
- package/hirobius.tokens.json +87 -40
- package/llms.txt +29 -7
- package/package.json +7 -6
- package/public/hds-manifest.json +257 -99
- package/public/llms/components.txt +1 -1
- package/public/llms-full.txt +54 -32
- package/public/llms.txt +29 -7
- package/src/app/data/component-api.json +51 -18
- package/upgrade/index.json +8 -1
- package/upgrade/releases/0.23.0.json +259 -0
- package/upgrade/schema.json +114 -1
- package/dist/fonts/geist-mono-400.woff2 +0 -0
package/public/hds-manifest.json
CHANGED
|
@@ -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-10-
|
|
5
|
+
"generated": "2026-10-09T05:30:51.055Z",
|
|
6
6
|
"source": "hirobius.tokens.json",
|
|
7
7
|
"format": "W3C DTCG 2025.10",
|
|
8
8
|
"docs": "https://hirobius-design-system.vercel.app/",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"consumeTypography": "hds.typeStyles.h1 (inline style object) — never Tailwind font classes"
|
|
29
29
|
},
|
|
30
30
|
"brand": {
|
|
31
|
-
"primaryColor": "#
|
|
31
|
+
"primaryColor": "#66b239",
|
|
32
32
|
"primaryColorToken": "semantic.accent.rest",
|
|
33
33
|
"font": "Satoshi variable 100–900, self-hosted",
|
|
34
34
|
"spacingBase": "4px",
|
|
@@ -399,6 +399,7 @@
|
|
|
399
399
|
},
|
|
400
400
|
"consumers": [
|
|
401
401
|
"src/app/components/badge.tsx",
|
|
402
|
+
"src/app/components/callout.tsx",
|
|
402
403
|
"src/app/components/dialog.tsx",
|
|
403
404
|
"src/app/components/empty-state.tsx",
|
|
404
405
|
"src/app/components/toast.tsx",
|
|
@@ -622,7 +623,10 @@
|
|
|
622
623
|
"primitives-code-block--default",
|
|
623
624
|
"primitives-code-block--inline",
|
|
624
625
|
"primitives-code-block--json-highlighting"
|
|
625
|
-
]
|
|
626
|
+
],
|
|
627
|
+
"usage": {
|
|
628
|
+
"when": "Show a code sample with a copy button, optionally collapsed."
|
|
629
|
+
}
|
|
626
630
|
},
|
|
627
631
|
"Container": {
|
|
628
632
|
"category": "Layout",
|
|
@@ -951,7 +955,7 @@
|
|
|
951
955
|
"primitives-divider--with-spacing"
|
|
952
956
|
],
|
|
953
957
|
"usage": {
|
|
954
|
-
"when": "Separate two
|
|
958
|
+
"when": "Separate two blocks of content with a thin line.",
|
|
955
959
|
"whenNot": "Spacing alone would do, or the separation needs a container.",
|
|
956
960
|
"useInstead": [
|
|
957
961
|
{
|
|
@@ -1059,7 +1063,10 @@
|
|
|
1059
1063
|
"feedback-error-pattern--not-found",
|
|
1060
1064
|
"feedback-error-pattern--server-error",
|
|
1061
1065
|
"feedback-error-pattern--unauthorized"
|
|
1062
|
-
]
|
|
1066
|
+
],
|
|
1067
|
+
"usage": {
|
|
1068
|
+
"when": "Show an error with a short message and a Back button, in place or as a full page."
|
|
1069
|
+
}
|
|
1063
1070
|
},
|
|
1064
1071
|
"Grid": {
|
|
1065
1072
|
"category": "Layout",
|
|
@@ -1234,7 +1241,7 @@
|
|
|
1234
1241
|
"primitives-grid--two-column"
|
|
1235
1242
|
],
|
|
1236
1243
|
"usage": {
|
|
1237
|
-
"when": "Lay out content in
|
|
1244
|
+
"when": "Lay out content in columns that adapt to the screen width, or line up nested content with subgrid.",
|
|
1238
1245
|
"whenNot": "A single row or column, or styling a surface.",
|
|
1239
1246
|
"useInstead": [
|
|
1240
1247
|
{
|
|
@@ -1406,7 +1413,7 @@
|
|
|
1406
1413
|
"primitives-icon--size-gallery"
|
|
1407
1414
|
],
|
|
1408
1415
|
"usage": {
|
|
1409
|
-
"when": "
|
|
1416
|
+
"when": "Show a Lucide icon at a set size and color.",
|
|
1410
1417
|
"whenNot": "A control someone can activate, or a picture that carries content.",
|
|
1411
1418
|
"useInstead": [
|
|
1412
1419
|
{
|
|
@@ -1513,6 +1520,7 @@
|
|
|
1513
1520
|
},
|
|
1514
1521
|
"consumers": [
|
|
1515
1522
|
"src/app/components/button.tsx",
|
|
1523
|
+
"src/app/components/inline-link.test.tsx",
|
|
1516
1524
|
"src/app/components/text.tsx",
|
|
1517
1525
|
"src/stories/inline-link.stories.tsx",
|
|
1518
1526
|
"src/stories/lib/usage-description.test.ts"
|
|
@@ -2208,7 +2216,7 @@
|
|
|
2208
2216
|
"primitives-stack--tight-gap"
|
|
2209
2217
|
],
|
|
2210
2218
|
"usage": {
|
|
2211
|
-
"when": "Space a row or column
|
|
2219
|
+
"when": "Space items in a row or column with even gaps.",
|
|
2212
2220
|
"whenNot": "Multi-column layout, or giving content a background or padding.",
|
|
2213
2221
|
"useInstead": [
|
|
2214
2222
|
{
|
|
@@ -2621,7 +2629,7 @@
|
|
|
2621
2629
|
"primitives-surface--with-shadow"
|
|
2622
2630
|
],
|
|
2623
2631
|
"usage": {
|
|
2624
|
-
"when": "
|
|
2632
|
+
"when": "Give a block of content a background and padding, with no header or footer.",
|
|
2625
2633
|
"whenNot": "Page layout, section spacing, width constraints, or content that needs slots.",
|
|
2626
2634
|
"useInstead": [
|
|
2627
2635
|
{
|
|
@@ -2654,6 +2662,7 @@
|
|
|
2654
2662
|
"src/app/components/destructive-section.tsx",
|
|
2655
2663
|
"src/app/components/empty-state.tsx",
|
|
2656
2664
|
"src/app/components/field.tsx",
|
|
2665
|
+
"src/app/components/focus-visible.test.tsx",
|
|
2657
2666
|
"src/app/components/grid.tsx",
|
|
2658
2667
|
"src/app/components/metadata-list.tsx",
|
|
2659
2668
|
"src/app/components/metric-tiles.tsx",
|
|
@@ -3518,7 +3527,7 @@
|
|
|
3518
3527
|
"primitives-button--tone-matrix"
|
|
3519
3528
|
],
|
|
3520
3529
|
"usage": {
|
|
3521
|
-
"when": "
|
|
3530
|
+
"when": "Run an action, such as submit, save or open a dialog. For an icon-only control pass iconOnly, iconLeft and label; for an on/off toggle pass pressed.",
|
|
3522
3531
|
"whenNot": "Navigating to another page, where a link is the correct element.",
|
|
3523
3532
|
"useInstead": [
|
|
3524
3533
|
{
|
|
@@ -3536,7 +3545,7 @@
|
|
|
3536
3545
|
"hidden": false,
|
|
3537
3546
|
"docExempt": false,
|
|
3538
3547
|
"filePath": "src/app/components/callout.tsx",
|
|
3539
|
-
"description": "Tone-driven
|
|
3548
|
+
"description": "Tone-driven tinted callout for notes, quotes, hypotheses — the same feedback fill language as Alert, without Alert's icon or status role.",
|
|
3540
3549
|
"figmaUrl": "https://www.figma.com/design/2VgBbVpKiDnu0aftJEVyBQ/HDS-Tokens-Components?node-id=88-85",
|
|
3541
3550
|
"figmaId": null,
|
|
3542
3551
|
"figmaLink": "https://www.figma.com/design/2VgBbVpKiDnu0aftJEVyBQ/HDS-Tokens-Components?node-id=88-85",
|
|
@@ -3876,7 +3885,10 @@
|
|
|
3876
3885
|
"patterns-layout--detail-page",
|
|
3877
3886
|
"patterns-layout--empty-state-screen",
|
|
3878
3887
|
"patterns-layout--form-screen"
|
|
3879
|
-
]
|
|
3888
|
+
],
|
|
3889
|
+
"usage": {
|
|
3890
|
+
"when": "Wrap a screen in the standard width and padding."
|
|
3891
|
+
}
|
|
3880
3892
|
},
|
|
3881
3893
|
"Stat": {
|
|
3882
3894
|
"category": "Display",
|
|
@@ -4472,7 +4484,10 @@
|
|
|
4472
4484
|
"primitives-asset-img--lightbox-context",
|
|
4473
4485
|
"primitives-asset-img--placeholder-fallback",
|
|
4474
4486
|
"primitives-asset-img--with-title"
|
|
4475
|
-
]
|
|
4487
|
+
],
|
|
4488
|
+
"usage": {
|
|
4489
|
+
"when": "Show an image that scales to its frame, with a placeholder if it fails to load."
|
|
4490
|
+
}
|
|
4476
4491
|
},
|
|
4477
4492
|
"Tabs": {
|
|
4478
4493
|
"category": "Navigation",
|
|
@@ -4494,6 +4509,7 @@
|
|
|
4494
4509
|
"src/app/components/breadcrumb.tsx",
|
|
4495
4510
|
"src/app/components/disclosure.tsx",
|
|
4496
4511
|
"src/app/components/segmented-control.tsx",
|
|
4512
|
+
"src/app/components/tabs.test.tsx",
|
|
4497
4513
|
"src/stories/combobox.stories.tsx",
|
|
4498
4514
|
"src/stories/patterns-client-detail.stories.tsx",
|
|
4499
4515
|
"src/stories/tabs.stories.tsx"
|
|
@@ -4577,7 +4593,7 @@
|
|
|
4577
4593
|
"hidden": false,
|
|
4578
4594
|
"docExempt": false,
|
|
4579
4595
|
"filePath": "src/app/components/tabs.tsx",
|
|
4580
|
-
"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).",
|
|
4596
|
+
"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). The trigger's focus ring is `ring-inset` because `overflow-x-auto` clips anything drawn outside the list box (an outer ring was cut on the first/last tab).",
|
|
4581
4597
|
"figmaUrl": null,
|
|
4582
4598
|
"figmaId": null,
|
|
4583
4599
|
"figmaLink": null,
|
|
@@ -4587,6 +4603,7 @@
|
|
|
4587
4603
|
"sizing": "panel"
|
|
4588
4604
|
},
|
|
4589
4605
|
"consumers": [
|
|
4606
|
+
"src/app/components/tabs.test.tsx",
|
|
4590
4607
|
"src/stories/patterns-client-detail.stories.tsx",
|
|
4591
4608
|
"src/stories/tabs.stories.tsx"
|
|
4592
4609
|
],
|
|
@@ -4629,7 +4646,7 @@
|
|
|
4629
4646
|
"hidden": false,
|
|
4630
4647
|
"docExempt": false,
|
|
4631
4648
|
"filePath": "src/app/components/tabs.tsx",
|
|
4632
|
-
"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).",
|
|
4649
|
+
"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). The trigger's focus ring is `ring-inset` because `overflow-x-auto` clips anything drawn outside the list box (an outer ring was cut on the first/last tab).",
|
|
4633
4650
|
"figmaUrl": null,
|
|
4634
4651
|
"figmaId": null,
|
|
4635
4652
|
"figmaLink": null,
|
|
@@ -4639,6 +4656,7 @@
|
|
|
4639
4656
|
"sizing": "panel"
|
|
4640
4657
|
},
|
|
4641
4658
|
"consumers": [
|
|
4659
|
+
"src/app/components/tabs.test.tsx",
|
|
4642
4660
|
"src/stories/patterns-client-detail.stories.tsx",
|
|
4643
4661
|
"src/stories/tabs.stories.tsx"
|
|
4644
4662
|
],
|
|
@@ -4678,7 +4696,7 @@
|
|
|
4678
4696
|
"hidden": false,
|
|
4679
4697
|
"docExempt": false,
|
|
4680
4698
|
"filePath": "src/app/components/tabs.tsx",
|
|
4681
|
-
"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).",
|
|
4699
|
+
"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). The trigger's focus ring is `ring-inset` because `overflow-x-auto` clips anything drawn outside the list box (an outer ring was cut on the first/last tab).",
|
|
4682
4700
|
"figmaUrl": null,
|
|
4683
4701
|
"figmaId": null,
|
|
4684
4702
|
"figmaLink": null,
|
|
@@ -4688,6 +4706,7 @@
|
|
|
4688
4706
|
"sizing": "panel"
|
|
4689
4707
|
},
|
|
4690
4708
|
"consumers": [
|
|
4709
|
+
"src/app/components/tabs.test.tsx",
|
|
4691
4710
|
"src/stories/patterns-client-detail.stories.tsx",
|
|
4692
4711
|
"src/stories/tabs.stories.tsx"
|
|
4693
4712
|
],
|
|
@@ -4734,6 +4753,7 @@
|
|
|
4734
4753
|
},
|
|
4735
4754
|
"consumers": [
|
|
4736
4755
|
"src/app/components/checkbox.tsx",
|
|
4756
|
+
"src/app/components/focus-visible.test.tsx",
|
|
4737
4757
|
"src/app/components/radio.test.tsx",
|
|
4738
4758
|
"src/app/components/segmented-control.tsx",
|
|
4739
4759
|
"src/app/components/toggle.tsx",
|
|
@@ -5037,6 +5057,7 @@
|
|
|
5037
5057
|
},
|
|
5038
5058
|
"consumers": [
|
|
5039
5059
|
"src/app/components/checkbox.tsx",
|
|
5060
|
+
"src/app/components/focus-visible.test.tsx",
|
|
5040
5061
|
"src/app/components/radio.tsx",
|
|
5041
5062
|
"src/app/components/toggle.test.tsx",
|
|
5042
5063
|
"src/app/hooks/useInteractionState.test.ts",
|
|
@@ -5780,7 +5801,7 @@
|
|
|
5780
5801
|
},
|
|
5781
5802
|
{
|
|
5782
5803
|
"keys": "ArrowDown/ArrowUp",
|
|
5783
|
-
"effect": "Moves the active option and wraps at the ends."
|
|
5804
|
+
"effect": "Moves the active option, skipping disabled ones, and wraps at the ends."
|
|
5784
5805
|
},
|
|
5785
5806
|
{
|
|
5786
5807
|
"keys": "Character",
|
|
@@ -5845,7 +5866,10 @@
|
|
|
5845
5866
|
"patterns-form--default",
|
|
5846
5867
|
"patterns-form--with-description",
|
|
5847
5868
|
"patterns-form--with-error"
|
|
5848
|
-
]
|
|
5869
|
+
],
|
|
5870
|
+
"usage": {
|
|
5871
|
+
"when": "Wrap form fields so they stack with even spacing."
|
|
5872
|
+
}
|
|
5849
5873
|
},
|
|
5850
5874
|
"FormField": {
|
|
5851
5875
|
"category": "Inputs",
|
|
@@ -6877,6 +6901,9 @@
|
|
|
6877
6901
|
"primitives-reveal--animations",
|
|
6878
6902
|
"primitives-reveal--scale-reveal-scene"
|
|
6879
6903
|
],
|
|
6904
|
+
"usage": {
|
|
6905
|
+
"when": "Fade content in as it scrolls into view."
|
|
6906
|
+
},
|
|
6880
6907
|
"aiRules": "Content is fully visible by DEFAULT; the effect applies only where `animation-timeline` is supported AND the user has not requested reduced motion (both fall back to visible, never stuck hidden). Pick `animation` from the fixed set — do not hand-roll keyframes. For momentum/inertia scrolling wrap the app in `SmoothScroll`; for a scroll-progress value in JS use `useScrollProgress` — both from `@hirobius/design-system/scroll`. See ADR-021."
|
|
6881
6908
|
},
|
|
6882
6909
|
"Textarea": {
|
|
@@ -6899,6 +6926,7 @@
|
|
|
6899
6926
|
"src/app/components/form-control.ts",
|
|
6900
6927
|
"src/app/components/input.tsx",
|
|
6901
6928
|
"src/app/components/select.tsx",
|
|
6929
|
+
"src/app/components/textarea.test.tsx",
|
|
6902
6930
|
"src/stories/patterns-client-detail.stories.tsx",
|
|
6903
6931
|
"src/stories/textarea.stories.tsx"
|
|
6904
6932
|
],
|
|
@@ -6974,7 +7002,7 @@
|
|
|
6974
7002
|
"hidden": false,
|
|
6975
7003
|
"docExempt": false,
|
|
6976
7004
|
"filePath": "src/app/components/card.tsx",
|
|
6977
|
-
"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 + big value (title) + 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\"`.
|
|
7005
|
+
"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 + big value (title) + 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\"`. The default variant is BORDERLESS at rest (12d-3 outline rule) — depth comes from whitespace/dividers, not an edge. A resting 1px border is opt-in via `bordered` (border.default), a feedback `tone`, or `accent` (border.accent). Elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
|
|
6978
7006
|
"figmaUrl": null,
|
|
6979
7007
|
"figmaId": null,
|
|
6980
7008
|
"figmaLink": null,
|
|
@@ -7021,7 +7049,7 @@
|
|
|
7021
7049
|
"hidden": false,
|
|
7022
7050
|
"docExempt": false,
|
|
7023
7051
|
"filePath": "src/app/components/card.tsx",
|
|
7024
|
-
"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 + big value (title) + 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\"`.
|
|
7052
|
+
"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 + big value (title) + 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\"`. The default variant is BORDERLESS at rest (12d-3 outline rule) — depth comes from whitespace/dividers, not an edge. A resting 1px border is opt-in via `bordered` (border.default), a feedback `tone`, or `accent` (border.accent). Elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
|
|
7025
7053
|
"figmaUrl": null,
|
|
7026
7054
|
"figmaId": null,
|
|
7027
7055
|
"figmaLink": null,
|
|
@@ -7068,7 +7096,7 @@
|
|
|
7068
7096
|
"hidden": false,
|
|
7069
7097
|
"docExempt": false,
|
|
7070
7098
|
"filePath": "src/app/components/card.tsx",
|
|
7071
|
-
"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 + big value (title) + 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\"`.
|
|
7099
|
+
"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 + big value (title) + 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\"`. The default variant is BORDERLESS at rest (12d-3 outline rule) — depth comes from whitespace/dividers, not an edge. A resting 1px border is opt-in via `bordered` (border.default), a feedback `tone`, or `accent` (border.accent). Elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
|
|
7072
7100
|
"figmaUrl": null,
|
|
7073
7101
|
"figmaId": null,
|
|
7074
7102
|
"figmaLink": null,
|
|
@@ -7115,7 +7143,7 @@
|
|
|
7115
7143
|
"hidden": false,
|
|
7116
7144
|
"docExempt": false,
|
|
7117
7145
|
"filePath": "src/app/components/card.tsx",
|
|
7118
|
-
"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 + big value (title) + 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\"`.
|
|
7146
|
+
"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 + big value (title) + 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\"`. The default variant is BORDERLESS at rest (12d-3 outline rule) — depth comes from whitespace/dividers, not an edge. A resting 1px border is opt-in via `bordered` (border.default), a feedback `tone`, or `accent` (border.accent). Elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
|
|
7119
7147
|
"figmaUrl": null,
|
|
7120
7148
|
"figmaId": null,
|
|
7121
7149
|
"figmaLink": null,
|
|
@@ -7246,7 +7274,7 @@
|
|
|
7246
7274
|
"hidden": false,
|
|
7247
7275
|
"docExempt": false,
|
|
7248
7276
|
"filePath": "src/app/components/card.tsx",
|
|
7249
|
-
"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 + big value (title) + 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\"`.
|
|
7277
|
+
"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 + big value (title) + 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\"`. The default variant is BORDERLESS at rest (12d-3 outline rule) — depth comes from whitespace/dividers, not an edge. A resting 1px border is opt-in via `bordered` (border.default), a feedback `tone`, or `accent` (border.accent). Elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
|
|
7250
7278
|
"figmaUrl": null,
|
|
7251
7279
|
"figmaId": null,
|
|
7252
7280
|
"figmaLink": null,
|
|
@@ -7316,7 +7344,7 @@
|
|
|
7316
7344
|
"hidden": false,
|
|
7317
7345
|
"docExempt": false,
|
|
7318
7346
|
"filePath": "src/app/components/card.tsx",
|
|
7319
|
-
"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 + big value (title) + 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\"`.
|
|
7347
|
+
"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 + big value (title) + 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\"`. The default variant is BORDERLESS at rest (12d-3 outline rule) — depth comes from whitespace/dividers, not an edge. A resting 1px border is opt-in via `bordered` (border.default), a feedback `tone`, or `accent` (border.accent). Elevation tokens are not bound by default — pass `className=\"shadow-...\"` for a hover/floating treatment on interactive cards.",
|
|
7320
7348
|
"figmaUrl": null,
|
|
7321
7349
|
"figmaId": null,
|
|
7322
7350
|
"figmaLink": null,
|
|
@@ -8140,6 +8168,7 @@
|
|
|
8140
8168
|
},
|
|
8141
8169
|
"consumers": [
|
|
8142
8170
|
"src/app/components/checkbox.test.tsx",
|
|
8171
|
+
"src/app/components/focus-visible.test.tsx",
|
|
8143
8172
|
"src/app/components/radio.tsx",
|
|
8144
8173
|
"src/app/components/toggle.tsx",
|
|
8145
8174
|
"src/stories/checkbox.stories.tsx"
|
|
@@ -8250,7 +8279,10 @@
|
|
|
8250
8279
|
"patterns-formactions--sticky",
|
|
8251
8280
|
"patterns-formactions--with-destructive",
|
|
8252
8281
|
"patterns-formactions--with-secondary"
|
|
8253
|
-
]
|
|
8282
|
+
],
|
|
8283
|
+
"usage": {
|
|
8284
|
+
"when": "Lay out a form's buttons in a fixed order: danger on the left, then secondary, then primary on the right."
|
|
8285
|
+
}
|
|
8254
8286
|
},
|
|
8255
8287
|
"MetricTile": {
|
|
8256
8288
|
"category": "Display",
|
|
@@ -8318,7 +8350,10 @@
|
|
|
8318
8350
|
"patterns-metrictiles--sub-line-optional",
|
|
8319
8351
|
"patterns-metrictiles--three-tiles",
|
|
8320
8352
|
"patterns-metrictiles--tones"
|
|
8321
|
-
]
|
|
8353
|
+
],
|
|
8354
|
+
"usage": {
|
|
8355
|
+
"when": "Show one key number with its label, inside a MetricTiles row."
|
|
8356
|
+
}
|
|
8322
8357
|
},
|
|
8323
8358
|
"MetricTiles": {
|
|
8324
8359
|
"category": "Display",
|
|
@@ -8370,7 +8405,10 @@
|
|
|
8370
8405
|
"patterns-metrictiles--sub-line-optional",
|
|
8371
8406
|
"patterns-metrictiles--three-tiles",
|
|
8372
8407
|
"patterns-metrictiles--tones"
|
|
8373
|
-
]
|
|
8408
|
+
],
|
|
8409
|
+
"usage": {
|
|
8410
|
+
"when": "Show a row of key numbers, one tile each."
|
|
8411
|
+
}
|
|
8374
8412
|
},
|
|
8375
8413
|
"PageHeader": {
|
|
8376
8414
|
"category": "Layout",
|
|
@@ -8437,7 +8475,10 @@
|
|
|
8437
8475
|
"patterns-pageheader--nested-level",
|
|
8438
8476
|
"patterns-pageheader--title-only",
|
|
8439
8477
|
"patterns-pageheader--with-actions"
|
|
8440
|
-
]
|
|
8478
|
+
],
|
|
8479
|
+
"usage": {
|
|
8480
|
+
"when": "Open a screen with its title, plus optional breadcrumb, status and actions."
|
|
8481
|
+
}
|
|
8441
8482
|
},
|
|
8442
8483
|
"DataTableSection": {
|
|
8443
8484
|
"category": "Display",
|
|
@@ -8509,7 +8550,10 @@
|
|
|
8509
8550
|
"patterns-datatablesection--empty",
|
|
8510
8551
|
"patterns-datatablesection--phone-390",
|
|
8511
8552
|
"patterns-datatablesection--without-row-actions"
|
|
8512
|
-
]
|
|
8553
|
+
],
|
|
8554
|
+
"usage": {
|
|
8555
|
+
"when": "Put a heading and toolbar above a Table."
|
|
8556
|
+
}
|
|
8513
8557
|
},
|
|
8514
8558
|
"DestructiveSection": {
|
|
8515
8559
|
"category": "Actions",
|
|
@@ -8578,7 +8622,10 @@
|
|
|
8578
8622
|
"patterns-destructivesection--default",
|
|
8579
8623
|
"patterns-destructivesection--phone",
|
|
8580
8624
|
"patterns-destructivesection--separate-button-label"
|
|
8581
|
-
]
|
|
8625
|
+
],
|
|
8626
|
+
"usage": {
|
|
8627
|
+
"when": "Put a dangerous action, such as delete, in its own section with a warning and a confirm step."
|
|
8628
|
+
}
|
|
8582
8629
|
},
|
|
8583
8630
|
"HdsRouterProvider": {
|
|
8584
8631
|
"category": "Theming",
|
|
@@ -9334,6 +9381,83 @@
|
|
|
9334
9381
|
"description": "Specific value within the green range at a defined lightness step.",
|
|
9335
9382
|
"value": "#022c22"
|
|
9336
9383
|
},
|
|
9384
|
+
{
|
|
9385
|
+
"path": "primitive.color.apple.50",
|
|
9386
|
+
"cssVar": "--primitive-color-apple-50",
|
|
9387
|
+
"type": "color",
|
|
9388
|
+
"description": "Apple-green accent tint — faintest step.",
|
|
9389
|
+
"value": "#f2faeb"
|
|
9390
|
+
},
|
|
9391
|
+
{
|
|
9392
|
+
"path": "primitive.color.apple.100",
|
|
9393
|
+
"cssVar": "--primitive-color-apple-100",
|
|
9394
|
+
"type": "color",
|
|
9395
|
+
"description": "Apple-green accent — very light tint.",
|
|
9396
|
+
"value": "#e2f3cf"
|
|
9397
|
+
},
|
|
9398
|
+
{
|
|
9399
|
+
"path": "primitive.color.apple.200",
|
|
9400
|
+
"cssVar": "--primitive-color-apple-200",
|
|
9401
|
+
"type": "color",
|
|
9402
|
+
"description": "Apple-green accent — light tint.",
|
|
9403
|
+
"value": "#c7e7a4"
|
|
9404
|
+
},
|
|
9405
|
+
{
|
|
9406
|
+
"path": "primitive.color.apple.300",
|
|
9407
|
+
"cssVar": "--primitive-color-apple-300",
|
|
9408
|
+
"type": "color",
|
|
9409
|
+
"description": "Apple-green accent — soft mid-light step.",
|
|
9410
|
+
"value": "#a6d873"
|
|
9411
|
+
},
|
|
9412
|
+
{
|
|
9413
|
+
"path": "primitive.color.apple.400",
|
|
9414
|
+
"cssVar": "--primitive-color-apple-400",
|
|
9415
|
+
"type": "color",
|
|
9416
|
+
"description": "Apple-green accent — bright step; dark-mode rest accent.",
|
|
9417
|
+
"value": "#85c84c"
|
|
9418
|
+
},
|
|
9419
|
+
{
|
|
9420
|
+
"path": "primitive.color.apple.500",
|
|
9421
|
+
"cssVar": "--primitive-color-apple-500",
|
|
9422
|
+
"type": "color",
|
|
9423
|
+
"description": "Apple-green accent rest — bright, rich apple green; AA for dark (neutral.900) text as a fill.",
|
|
9424
|
+
"value": "#66b239"
|
|
9425
|
+
},
|
|
9426
|
+
{
|
|
9427
|
+
"path": "primitive.color.apple.600",
|
|
9428
|
+
"cssVar": "--primitive-color-apple-600",
|
|
9429
|
+
"type": "color",
|
|
9430
|
+
"description": "Apple-green accent — hover / border step.",
|
|
9431
|
+
"value": "#54922d"
|
|
9432
|
+
},
|
|
9433
|
+
{
|
|
9434
|
+
"path": "primitive.color.apple.700",
|
|
9435
|
+
"cssVar": "--primitive-color-apple-700",
|
|
9436
|
+
"type": "color",
|
|
9437
|
+
"description": "Apple-green accent — pressed and accent-intent text (AA for text on page and card surfaces).",
|
|
9438
|
+
"value": "#416f20"
|
|
9439
|
+
},
|
|
9440
|
+
{
|
|
9441
|
+
"path": "primitive.color.apple.800",
|
|
9442
|
+
"cssVar": "--primitive-color-apple-800",
|
|
9443
|
+
"type": "color",
|
|
9444
|
+
"description": "Apple-green accent — deep step.",
|
|
9445
|
+
"value": "#34571b"
|
|
9446
|
+
},
|
|
9447
|
+
{
|
|
9448
|
+
"path": "primitive.color.apple.900",
|
|
9449
|
+
"cssVar": "--primitive-color-apple-900",
|
|
9450
|
+
"type": "color",
|
|
9451
|
+
"description": "Apple-green accent — darkest usable step.",
|
|
9452
|
+
"value": "#2b4518"
|
|
9453
|
+
},
|
|
9454
|
+
{
|
|
9455
|
+
"path": "primitive.color.apple.950",
|
|
9456
|
+
"cssVar": "--primitive-color-apple-950",
|
|
9457
|
+
"type": "color",
|
|
9458
|
+
"description": "Apple-green accent — near-black green substrate.",
|
|
9459
|
+
"value": "#16250c"
|
|
9460
|
+
},
|
|
9337
9461
|
{
|
|
9338
9462
|
"path": "primitive.color.violet.50",
|
|
9339
9463
|
"cssVar": "--primitive-color-violet-50",
|
|
@@ -9726,8 +9850,8 @@
|
|
|
9726
9850
|
"path": "primitive.typography.family.mono",
|
|
9727
9851
|
"cssVar": "--primitive-typography-family-mono",
|
|
9728
9852
|
"type": "fontFamily",
|
|
9729
|
-
"description": "Monospace face:
|
|
9730
|
-
"value": "\"
|
|
9853
|
+
"description": "Monospace face: IBM Plex Mono. Falls back to Courier New, monospace.",
|
|
9854
|
+
"value": "\"IBM Plex Mono\", \"Courier New\", monospace"
|
|
9731
9855
|
},
|
|
9732
9856
|
{
|
|
9733
9857
|
"path": "primitive.typography.size.xs",
|
|
@@ -10303,12 +10427,12 @@
|
|
|
10303
10427
|
"path": "semantic.color.surface.accent",
|
|
10304
10428
|
"cssVar": "--semantic-color-surface-accent",
|
|
10305
10429
|
"type": "color",
|
|
10306
|
-
"description": "Accent-colored background
|
|
10307
|
-
"alias": "{primitive.color.
|
|
10308
|
-
"resolvedValue": "#
|
|
10430
|
+
"description": "Accent-colored background — bright apple green (stays green on dark surfaces; pair with content.onAccent dark text).",
|
|
10431
|
+
"alias": "{primitive.color.apple.500}",
|
|
10432
|
+
"resolvedValue": "#66b239",
|
|
10309
10433
|
"dark": {
|
|
10310
|
-
"alias": "{primitive.color.
|
|
10311
|
-
"resolvedValue": "#
|
|
10434
|
+
"alias": "{primitive.color.apple.400}",
|
|
10435
|
+
"resolvedValue": "#85c84c"
|
|
10312
10436
|
}
|
|
10313
10437
|
},
|
|
10314
10438
|
{
|
|
@@ -10316,11 +10440,11 @@
|
|
|
10316
10440
|
"cssVar": "--semantic-color-surface-accentSubtle",
|
|
10317
10441
|
"type": "color",
|
|
10318
10442
|
"description": "Faint accent tint for hover states or highlights",
|
|
10319
|
-
"alias": "{primitive.color.
|
|
10320
|
-
"resolvedValue": "#
|
|
10443
|
+
"alias": "{primitive.color.apple.50}",
|
|
10444
|
+
"resolvedValue": "#f2faeb",
|
|
10321
10445
|
"dark": {
|
|
10322
|
-
"alias": "{primitive.color.
|
|
10323
|
-
"resolvedValue": "#
|
|
10446
|
+
"alias": "{primitive.color.apple.900}",
|
|
10447
|
+
"resolvedValue": "#2b4518"
|
|
10324
10448
|
}
|
|
10325
10449
|
},
|
|
10326
10450
|
{
|
|
@@ -10431,21 +10555,21 @@
|
|
|
10431
10555
|
"path": "semantic.color.content.accent",
|
|
10432
10556
|
"cssVar": "--semantic-color-content-accent",
|
|
10433
10557
|
"type": "color",
|
|
10434
|
-
"description": "Accent-intent text/icon color
|
|
10435
|
-
"alias": "{primitive.color.
|
|
10436
|
-
"resolvedValue": "#
|
|
10558
|
+
"description": "Accent-intent text/icon color — a dark apple green legible on page and card surfaces. Pair with underline/weight for link affordance.",
|
|
10559
|
+
"alias": "{primitive.color.apple.700}",
|
|
10560
|
+
"resolvedValue": "#416f20",
|
|
10437
10561
|
"dark": {
|
|
10438
|
-
"alias": "{primitive.color.
|
|
10439
|
-
"resolvedValue": "#
|
|
10562
|
+
"alias": "{primitive.color.apple.400}",
|
|
10563
|
+
"resolvedValue": "#85c84c"
|
|
10440
10564
|
}
|
|
10441
10565
|
},
|
|
10442
10566
|
{
|
|
10443
10567
|
"path": "semantic.color.content.onAccent",
|
|
10444
10568
|
"cssVar": "--semantic-color-content-onAccent",
|
|
10445
10569
|
"type": "color",
|
|
10446
|
-
"description": "Text/icon color on accent fills
|
|
10447
|
-
"alias": "{primitive.color.neutral.
|
|
10448
|
-
"resolvedValue": "#
|
|
10570
|
+
"description": "Text/icon color on accent fills — a dark neutral, since the brand accent fill is a bright apple green in both light and dark mode.",
|
|
10571
|
+
"alias": "{primitive.color.neutral.900}",
|
|
10572
|
+
"resolvedValue": "#111111",
|
|
10449
10573
|
"dark": {
|
|
10450
10574
|
"alias": "{primitive.color.neutral.900}",
|
|
10451
10575
|
"resolvedValue": "#111111"
|
|
@@ -10548,12 +10672,12 @@
|
|
|
10548
10672
|
"path": "semantic.color.border.accent",
|
|
10549
10673
|
"cssVar": "--semantic-color-border-accent",
|
|
10550
10674
|
"type": "color",
|
|
10551
|
-
"description": "Accent border
|
|
10552
|
-
"alias": "{primitive.color.
|
|
10553
|
-
"resolvedValue": "#
|
|
10675
|
+
"description": "Accent border — apple green, dark enough to read as a boundary on page and card surfaces.",
|
|
10676
|
+
"alias": "{primitive.color.apple.600}",
|
|
10677
|
+
"resolvedValue": "#54922d",
|
|
10554
10678
|
"dark": {
|
|
10555
|
-
"alias": "{primitive.color.
|
|
10556
|
-
"resolvedValue": "#
|
|
10679
|
+
"alias": "{primitive.color.apple.400}",
|
|
10680
|
+
"resolvedValue": "#85c84c"
|
|
10557
10681
|
}
|
|
10558
10682
|
},
|
|
10559
10683
|
{
|
|
@@ -11055,7 +11179,7 @@
|
|
|
11055
11179
|
"type": "typography",
|
|
11056
11180
|
"description": "Code and ids. 13px / 1.5 / 400. The mono companion, role 6 of 6.",
|
|
11057
11181
|
"composite": {
|
|
11058
|
-
"fontFamily": "\"
|
|
11182
|
+
"fontFamily": "\"IBM Plex Mono\", \"Courier New\", monospace",
|
|
11059
11183
|
"fontSize": "13px",
|
|
11060
11184
|
"fontWeight": "400",
|
|
11061
11185
|
"letterSpacing": "0em",
|
|
@@ -11151,12 +11275,12 @@
|
|
|
11151
11275
|
"path": "semantic.accent.rest",
|
|
11152
11276
|
"cssVar": "--semantic-accent-rest",
|
|
11153
11277
|
"type": "color",
|
|
11154
|
-
"description": "Default accent fill for interactive elements at rest
|
|
11155
|
-
"alias": "{primitive.color.
|
|
11156
|
-
"resolvedValue": "#
|
|
11278
|
+
"description": "Default accent fill for interactive elements at rest — bright apple green. Pair with content.onAccent (a dark neutral).",
|
|
11279
|
+
"alias": "{primitive.color.apple.500}",
|
|
11280
|
+
"resolvedValue": "#66b239",
|
|
11157
11281
|
"dark": {
|
|
11158
|
-
"alias": "{primitive.color.
|
|
11159
|
-
"resolvedValue": "#
|
|
11282
|
+
"alias": "{primitive.color.apple.400}",
|
|
11283
|
+
"resolvedValue": "#85c84c"
|
|
11160
11284
|
}
|
|
11161
11285
|
},
|
|
11162
11286
|
{
|
|
@@ -11164,11 +11288,11 @@
|
|
|
11164
11288
|
"cssVar": "--semantic-accent-hover",
|
|
11165
11289
|
"type": "color",
|
|
11166
11290
|
"description": "Accent fill on pointer hover.",
|
|
11167
|
-
"alias": "{primitive.color.
|
|
11168
|
-
"resolvedValue": "#
|
|
11291
|
+
"alias": "{primitive.color.apple.600}",
|
|
11292
|
+
"resolvedValue": "#54922d",
|
|
11169
11293
|
"dark": {
|
|
11170
|
-
"alias": "{primitive.color.
|
|
11171
|
-
"resolvedValue": "#
|
|
11294
|
+
"alias": "{primitive.color.apple.500}",
|
|
11295
|
+
"resolvedValue": "#66b239"
|
|
11172
11296
|
}
|
|
11173
11297
|
},
|
|
11174
11298
|
{
|
|
@@ -11176,11 +11300,11 @@
|
|
|
11176
11300
|
"cssVar": "--semantic-accent-pressed",
|
|
11177
11301
|
"type": "color",
|
|
11178
11302
|
"description": "Accent fill during active press.",
|
|
11179
|
-
"alias": "{primitive.color.
|
|
11180
|
-
"resolvedValue": "#
|
|
11303
|
+
"alias": "{primitive.color.apple.700}",
|
|
11304
|
+
"resolvedValue": "#416f20",
|
|
11181
11305
|
"dark": {
|
|
11182
|
-
"alias": "{primitive.color.
|
|
11183
|
-
"resolvedValue": "#
|
|
11306
|
+
"alias": "{primitive.color.apple.600}",
|
|
11307
|
+
"resolvedValue": "#54922d"
|
|
11184
11308
|
}
|
|
11185
11309
|
},
|
|
11186
11310
|
{
|
|
@@ -11211,12 +11335,12 @@
|
|
|
11211
11335
|
"path": "semantic.accent.content",
|
|
11212
11336
|
"cssVar": "--semantic-accent-content",
|
|
11213
11337
|
"type": "color",
|
|
11214
|
-
"description": "
|
|
11215
|
-
"alias": "{primitive.color.
|
|
11216
|
-
"resolvedValue": "#
|
|
11338
|
+
"description": "Accent-intent text/icon color on neutral surfaces (a dark apple green) — pair with underline/weight for link affordance.",
|
|
11339
|
+
"alias": "{primitive.color.apple.700}",
|
|
11340
|
+
"resolvedValue": "#416f20",
|
|
11217
11341
|
"dark": {
|
|
11218
|
-
"alias": "{primitive.color.
|
|
11219
|
-
"resolvedValue": "#
|
|
11342
|
+
"alias": "{primitive.color.apple.400}",
|
|
11343
|
+
"resolvedValue": "#85c84c"
|
|
11220
11344
|
}
|
|
11221
11345
|
},
|
|
11222
11346
|
{
|
|
@@ -11224,11 +11348,11 @@
|
|
|
11224
11348
|
"cssVar": "--semantic-accent-contentHover",
|
|
11225
11349
|
"type": "color",
|
|
11226
11350
|
"description": "Accent content color on pointer hover.",
|
|
11227
|
-
"alias": "{primitive.color.
|
|
11228
|
-
"resolvedValue": "#
|
|
11351
|
+
"alias": "{primitive.color.apple.800}",
|
|
11352
|
+
"resolvedValue": "#34571b",
|
|
11229
11353
|
"dark": {
|
|
11230
|
-
"alias": "{primitive.color.
|
|
11231
|
-
"resolvedValue": "#
|
|
11354
|
+
"alias": "{primitive.color.apple.300}",
|
|
11355
|
+
"resolvedValue": "#a6d873"
|
|
11232
11356
|
}
|
|
11233
11357
|
},
|
|
11234
11358
|
{
|
|
@@ -11236,11 +11360,11 @@
|
|
|
11236
11360
|
"cssVar": "--semantic-accent-subtle",
|
|
11237
11361
|
"type": "color",
|
|
11238
11362
|
"description": "Low-emphasis accent tint for hover backgrounds and selection highlights.",
|
|
11239
|
-
"alias": "{primitive.color.
|
|
11240
|
-
"resolvedValue": "#
|
|
11363
|
+
"alias": "{primitive.color.apple.50}",
|
|
11364
|
+
"resolvedValue": "#f2faeb",
|
|
11241
11365
|
"dark": {
|
|
11242
|
-
"alias": "{primitive.color.
|
|
11243
|
-
"resolvedValue": "#
|
|
11366
|
+
"alias": "{primitive.color.apple.900}",
|
|
11367
|
+
"resolvedValue": "#2b4518"
|
|
11244
11368
|
}
|
|
11245
11369
|
},
|
|
11246
11370
|
{
|
|
@@ -11476,7 +11600,7 @@
|
|
|
11476
11600
|
"type": "color",
|
|
11477
11601
|
"description": "Nav item background fill when active or selected.",
|
|
11478
11602
|
"alias": "{semantic.accent.subtle}",
|
|
11479
|
-
"resolvedValue": "#
|
|
11603
|
+
"resolvedValue": "#f2faeb"
|
|
11480
11604
|
},
|
|
11481
11605
|
{
|
|
11482
11606
|
"path": "component.nav.borderActive",
|
|
@@ -11484,7 +11608,7 @@
|
|
|
11484
11608
|
"type": "color",
|
|
11485
11609
|
"description": "Nav item border color when active or selected.",
|
|
11486
11610
|
"alias": "{semantic.color.surface.accent}",
|
|
11487
|
-
"resolvedValue": "#
|
|
11611
|
+
"resolvedValue": "#66b239"
|
|
11488
11612
|
},
|
|
11489
11613
|
{
|
|
11490
11614
|
"path": "component.nav.text",
|
|
@@ -11532,7 +11656,7 @@
|
|
|
11532
11656
|
"type": "color",
|
|
11533
11657
|
"description": "Base tag surface color.",
|
|
11534
11658
|
"alias": "{semantic.accent.subtle}",
|
|
11535
|
-
"resolvedValue": "#
|
|
11659
|
+
"resolvedValue": "#f2faeb"
|
|
11536
11660
|
},
|
|
11537
11661
|
{
|
|
11538
11662
|
"path": "component.tag.text",
|
|
@@ -11620,7 +11744,7 @@
|
|
|
11620
11744
|
"type": "color",
|
|
11621
11745
|
"description": "Text color when the tag is active.",
|
|
11622
11746
|
"alias": "{semantic.color.content.onAccent}",
|
|
11623
|
-
"resolvedValue": "#
|
|
11747
|
+
"resolvedValue": "#111111"
|
|
11624
11748
|
},
|
|
11625
11749
|
{
|
|
11626
11750
|
"path": "component.tag.activeBackground",
|
|
@@ -11628,7 +11752,7 @@
|
|
|
11628
11752
|
"type": "color",
|
|
11629
11753
|
"description": "Active tag fill color.",
|
|
11630
11754
|
"alias": "{semantic.accent.rest}",
|
|
11631
|
-
"resolvedValue": "#
|
|
11755
|
+
"resolvedValue": "#66b239"
|
|
11632
11756
|
},
|
|
11633
11757
|
{
|
|
11634
11758
|
"path": "component.tag.activeBorder",
|
|
@@ -11636,7 +11760,7 @@
|
|
|
11636
11760
|
"type": "color",
|
|
11637
11761
|
"description": "Active tag border color.",
|
|
11638
11762
|
"alias": "{semantic.accent.rest}",
|
|
11639
|
-
"resolvedValue": "#
|
|
11763
|
+
"resolvedValue": "#66b239"
|
|
11640
11764
|
},
|
|
11641
11765
|
{
|
|
11642
11766
|
"path": "component.tag.activeHover",
|
|
@@ -11644,7 +11768,7 @@
|
|
|
11644
11768
|
"type": "color",
|
|
11645
11769
|
"description": "Active tag hover fill color.",
|
|
11646
11770
|
"alias": "{semantic.accent.hover}",
|
|
11647
|
-
"resolvedValue": "#
|
|
11771
|
+
"resolvedValue": "#54922d"
|
|
11648
11772
|
},
|
|
11649
11773
|
{
|
|
11650
11774
|
"path": "component.badge.fontSize",
|
|
@@ -11728,7 +11852,7 @@
|
|
|
11728
11852
|
"type": "color",
|
|
11729
11853
|
"description": "Primary button fill.",
|
|
11730
11854
|
"alias": "{semantic.color.surface.accent}",
|
|
11731
|
-
"resolvedValue": "#
|
|
11855
|
+
"resolvedValue": "#66b239"
|
|
11732
11856
|
},
|
|
11733
11857
|
{
|
|
11734
11858
|
"path": "component.button.bgHover",
|
|
@@ -11736,7 +11860,7 @@
|
|
|
11736
11860
|
"type": "color",
|
|
11737
11861
|
"description": "Primary button hover fill.",
|
|
11738
11862
|
"alias": "{semantic.accent.hover}",
|
|
11739
|
-
"resolvedValue": "#
|
|
11863
|
+
"resolvedValue": "#54922d"
|
|
11740
11864
|
},
|
|
11741
11865
|
{
|
|
11742
11866
|
"path": "component.button.text",
|
|
@@ -11744,7 +11868,7 @@
|
|
|
11744
11868
|
"type": "color",
|
|
11745
11869
|
"description": "Primary button text color.",
|
|
11746
11870
|
"alias": "{semantic.color.content.onAccent}",
|
|
11747
|
-
"resolvedValue": "#
|
|
11871
|
+
"resolvedValue": "#111111"
|
|
11748
11872
|
},
|
|
11749
11873
|
{
|
|
11750
11874
|
"path": "component.button.radius",
|
|
@@ -11920,7 +12044,7 @@
|
|
|
11920
12044
|
"type": "color",
|
|
11921
12045
|
"description": "Disabled primary button text color.",
|
|
11922
12046
|
"alias": "{semantic.color.content.onAccent}",
|
|
11923
|
-
"resolvedValue": "#
|
|
12047
|
+
"resolvedValue": "#111111",
|
|
11924
12048
|
"dark": {
|
|
11925
12049
|
"alias": "{semantic.color.content.disabled}",
|
|
11926
12050
|
"resolvedValue": "#d4d4d4"
|
|
@@ -11932,7 +12056,7 @@
|
|
|
11932
12056
|
"type": "color",
|
|
11933
12057
|
"description": "Disabled primary button fill.",
|
|
11934
12058
|
"alias": "{semantic.color.surface.accentSubtle}",
|
|
11935
|
-
"resolvedValue": "#
|
|
12059
|
+
"resolvedValue": "#f2faeb"
|
|
11936
12060
|
},
|
|
11937
12061
|
{
|
|
11938
12062
|
"path": "component.button.secondary.bg.rest",
|
|
@@ -12162,7 +12286,7 @@
|
|
|
12162
12286
|
"type": "color",
|
|
12163
12287
|
"description": "Primary action surface. shadcn role: primary.",
|
|
12164
12288
|
"alias": "{semantic.color.surface.accent}",
|
|
12165
|
-
"resolvedValue": "#
|
|
12289
|
+
"resolvedValue": "#66b239"
|
|
12166
12290
|
},
|
|
12167
12291
|
{
|
|
12168
12292
|
"path": "role.primary-foreground",
|
|
@@ -12170,7 +12294,7 @@
|
|
|
12170
12294
|
"type": "color",
|
|
12171
12295
|
"description": "Text/icons on primary surface. shadcn role: primary-foreground.",
|
|
12172
12296
|
"alias": "{semantic.color.content.onAccent}",
|
|
12173
|
-
"resolvedValue": "#
|
|
12297
|
+
"resolvedValue": "#111111"
|
|
12174
12298
|
},
|
|
12175
12299
|
{
|
|
12176
12300
|
"path": "role.secondary",
|
|
@@ -12210,7 +12334,7 @@
|
|
|
12210
12334
|
"type": "color",
|
|
12211
12335
|
"description": "Hover/active tinted bg. shadcn role: accent.",
|
|
12212
12336
|
"alias": "{semantic.color.surface.accentSubtle}",
|
|
12213
|
-
"resolvedValue": "#
|
|
12337
|
+
"resolvedValue": "#f2faeb"
|
|
12214
12338
|
},
|
|
12215
12339
|
{
|
|
12216
12340
|
"path": "role.accent-foreground",
|
|
@@ -12218,7 +12342,7 @@
|
|
|
12218
12342
|
"type": "color",
|
|
12219
12343
|
"description": "Text on accent surface. shadcn role: accent-foreground.",
|
|
12220
12344
|
"alias": "{semantic.color.content.accent}",
|
|
12221
|
-
"resolvedValue": "#
|
|
12345
|
+
"resolvedValue": "#416f20"
|
|
12222
12346
|
},
|
|
12223
12347
|
{
|
|
12224
12348
|
"path": "role.destructive",
|
|
@@ -12258,7 +12382,7 @@
|
|
|
12258
12382
|
"type": "color",
|
|
12259
12383
|
"description": "Focus ring color. shadcn role: ring.",
|
|
12260
12384
|
"alias": "{semantic.color.border.accent}",
|
|
12261
|
-
"resolvedValue": "#
|
|
12385
|
+
"resolvedValue": "#54922d"
|
|
12262
12386
|
},
|
|
12263
12387
|
{
|
|
12264
12388
|
"path": "role.radius",
|
|
@@ -12269,5 +12393,39 @@
|
|
|
12269
12393
|
"resolvedValue": "8px"
|
|
12270
12394
|
}
|
|
12271
12395
|
]
|
|
12272
|
-
}
|
|
12396
|
+
},
|
|
12397
|
+
"publicClasses": [
|
|
12398
|
+
"hds-alert",
|
|
12399
|
+
"hds-alert--danger",
|
|
12400
|
+
"hds-alert--info",
|
|
12401
|
+
"hds-alert--success",
|
|
12402
|
+
"hds-alert--warning",
|
|
12403
|
+
"hds-alert--with-title",
|
|
12404
|
+
"hds-alert__body",
|
|
12405
|
+
"hds-alert__icon",
|
|
12406
|
+
"hds-alert__title",
|
|
12407
|
+
"hds-badge",
|
|
12408
|
+
"hds-badge--danger",
|
|
12409
|
+
"hds-badge--in-progress",
|
|
12410
|
+
"hds-badge--info",
|
|
12411
|
+
"hds-badge--neutral",
|
|
12412
|
+
"hds-badge--success",
|
|
12413
|
+
"hds-badge--warning",
|
|
12414
|
+
"hds-card",
|
|
12415
|
+
"hds-card--accent",
|
|
12416
|
+
"hds-card--bordered",
|
|
12417
|
+
"hds-card--danger",
|
|
12418
|
+
"hds-card--info",
|
|
12419
|
+
"hds-card--no-padding",
|
|
12420
|
+
"hds-card--success",
|
|
12421
|
+
"hds-card--warning",
|
|
12422
|
+
"hds-divider",
|
|
12423
|
+
"hds-divider--horizontal",
|
|
12424
|
+
"hds-divider--strong",
|
|
12425
|
+
"hds-divider--vertical",
|
|
12426
|
+
"hds-focus",
|
|
12427
|
+
"hds-tag",
|
|
12428
|
+
"hds-tag--active",
|
|
12429
|
+
"hds-tag__pill"
|
|
12430
|
+
]
|
|
12273
12431
|
}
|