@hirobius/design-system 0.22.0 → 0.23.1

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/AGENTS.md +11 -1
  2. package/CHANGELOG.md +101 -0
  3. package/CONSUMING.md +3 -3
  4. package/DESIGN.md +26 -26
  5. package/NOTICE.md +4 -4
  6. package/README.md +23 -14
  7. package/UPGRADING.md +35 -1
  8. package/dist/chunks/{empty-state-DNoThgfV.js → empty-state-ChC_xZfg.js} +109 -92
  9. package/dist/chunks/{form-By82qZcC.js → form-zCZ_B83I.js} +16 -16
  10. package/dist/css-contract.json +1 -0
  11. package/dist/fonts/ibm-plex-mono-400.woff2 +0 -0
  12. package/dist/fonts/ibm-plex-mono-LICENSE.txt +93 -0
  13. package/dist/fonts/plus-jakarta-sans-400.woff2 +0 -0
  14. package/dist/fonts/plus-jakarta-sans-500.woff2 +0 -0
  15. package/dist/fonts/plus-jakarta-sans-700.woff2 +0 -0
  16. package/dist/fonts/plus-jakarta-sans-LICENSE.txt +22 -0
  17. package/dist/fonts.css +19 -19
  18. package/dist/form.js +1 -1
  19. package/dist/hirobius-ui.js +1263 -1190
  20. package/dist/manifest.js +5 -4
  21. package/dist/patterns.js +164 -162
  22. package/dist/styles.css +1 -1
  23. package/dist/tokens.css +1 -1
  24. package/dist/tokens.js +16 -3
  25. package/dist/types/src/app/components/asset-img.d.ts +1 -0
  26. package/dist/types/src/app/components/button.d.ts +1 -1
  27. package/dist/types/src/app/components/callout.d.ts +2 -1
  28. package/dist/types/src/app/components/card.d.ts +5 -3
  29. package/dist/types/src/app/components/code-block.d.ts +1 -0
  30. package/dist/types/src/app/components/combobox.d.ts +1 -1
  31. package/dist/types/src/app/components/data-table-section.d.ts +1 -0
  32. package/dist/types/src/app/components/destructive-section.d.ts +1 -0
  33. package/dist/types/src/app/components/divider.d.ts +1 -1
  34. package/dist/types/src/app/components/error-pattern.d.ts +1 -0
  35. package/dist/types/src/app/components/form-actions.d.ts +1 -0
  36. package/dist/types/src/app/components/form.d.ts +1 -0
  37. package/dist/types/src/app/components/grid.d.ts +1 -1
  38. package/dist/types/src/app/components/icon.d.ts +1 -1
  39. package/dist/types/src/app/components/metric-tiles.d.ts +3 -0
  40. package/dist/types/src/app/components/page-header.d.ts +2 -0
  41. package/dist/types/src/app/components/page.d.ts +1 -0
  42. package/dist/types/src/app/components/reveal.d.ts +1 -0
  43. package/dist/types/src/app/components/stack.d.ts +1 -1
  44. package/dist/types/src/app/components/tabs.d.ts +3 -1
  45. package/dist/types/src/app/context/hds-theme.d.ts +1 -1
  46. package/dist/types/src/app/design-system/generated-token-refs.d.ts +13 -0
  47. package/dist/types/src/app/design-system/generated-token-values.d.ts +16 -3
  48. package/dist/types/src/app/hooks/useInteractionState.d.ts +7 -1
  49. package/dist/types/src/index.d.ts +47 -0
  50. package/dist/variables.css +35 -24
  51. package/docs/CONSUMING.md +5 -5
  52. package/hirobius.tokens.json +91 -44
  53. package/llms.txt +29 -7
  54. package/package.json +12 -7
  55. package/public/hds-manifest.json +277 -119
  56. package/public/llms/components.txt +1 -1
  57. package/public/llms-full.txt +56 -34
  58. package/public/llms.txt +29 -7
  59. package/src/app/data/component-api.json +53 -18
  60. package/upgrade/index.json +15 -1
  61. package/upgrade/releases/0.23.0.json +259 -0
  62. package/upgrade/releases/0.23.1.json +108 -0
  63. package/upgrade/schema.json +114 -1
  64. package/dist/fonts/geist-mono-400.woff2 +0 -0
  65. package/dist/fonts/satoshi-400.woff2 +0 -0
  66. package/dist/fonts/satoshi-500.woff2 +0 -0
  67. package/dist/fonts/satoshi-700.woff2 +0 -0
@@ -149,6 +149,53 @@
149
149
  },
150
150
  "$description": "Discrete values within the green range at defined lightness steps."
151
151
  },
152
+ "apple": {
153
+ "50": {
154
+ "$value": "#f2faeb",
155
+ "$description": "Apple-green accent tint — faintest step."
156
+ },
157
+ "100": {
158
+ "$value": "#e2f3cf",
159
+ "$description": "Apple-green accent — very light tint."
160
+ },
161
+ "200": {
162
+ "$value": "#c7e7a4",
163
+ "$description": "Apple-green accent — light tint."
164
+ },
165
+ "300": {
166
+ "$value": "#a6d873",
167
+ "$description": "Apple-green accent — soft mid-light step."
168
+ },
169
+ "400": {
170
+ "$value": "#85c84c",
171
+ "$description": "Apple-green accent — bright step; dark-mode rest accent."
172
+ },
173
+ "500": {
174
+ "$value": "#66b239",
175
+ "$description": "Apple-green accent rest — bright, rich apple green; AA for dark (neutral.900) text as a fill."
176
+ },
177
+ "600": {
178
+ "$value": "#54922d",
179
+ "$description": "Apple-green accent — hover / border step."
180
+ },
181
+ "700": {
182
+ "$value": "#416f20",
183
+ "$description": "Apple-green accent — pressed and accent-intent text (AA for text on page and card surfaces)."
184
+ },
185
+ "800": {
186
+ "$value": "#34571b",
187
+ "$description": "Apple-green accent — deep step."
188
+ },
189
+ "900": {
190
+ "$value": "#2b4518",
191
+ "$description": "Apple-green accent — darkest usable step."
192
+ },
193
+ "950": {
194
+ "$value": "#16250c",
195
+ "$description": "Apple-green accent — near-black green substrate."
196
+ },
197
+ "$description": "Discrete values within the apple-green (brand accent) range at defined lightness steps. Distinct from the emerald `green` feedback/success scale."
198
+ },
152
199
  "violet": {
153
200
  "50": {
154
201
  "$value": "#f5f3ff",
@@ -468,29 +515,29 @@
468
515
  "$type": "fontFamily",
469
516
  "primary": {
470
517
  "$value": [
471
- "Satoshi",
518
+ "Plus Jakarta Sans",
472
519
  "system-ui",
473
520
  "-apple-system",
474
521
  "BlinkMacSystemFont",
475
522
  "Segoe UI",
476
523
  "sans-serif"
477
524
  ],
478
- "$description": "Self-hosted Satoshi (ITF) body typeface; falls back to system-ui sans-serif stack."
525
+ "$description": "Self-hosted Plus Jakarta Sans (OFL) body typeface; falls back to system-ui sans-serif stack."
479
526
  },
480
527
  "display": {
481
528
  "$value": [
482
- "Satoshi",
529
+ "Plus Jakarta Sans",
483
530
  "system-ui",
484
531
  "-apple-system",
485
532
  "BlinkMacSystemFont",
486
533
  "Segoe UI",
487
534
  "sans-serif"
488
535
  ],
489
- "$description": "Display face: Satoshi Bold (ITF), bound to the display and title composites."
536
+ "$description": "Display face: Plus Jakarta Sans Bold (OFL), bound to the display and title composites."
490
537
  },
491
538
  "mono": {
492
- "$value": ["Geist Mono", "Courier New", "monospace"],
493
- "$description": "Monospace face: Geist Mono. Falls back to Courier New, monospace."
539
+ "$value": ["IBM Plex Mono", "Courier New", "monospace"],
540
+ "$description": "Monospace face: IBM Plex Mono. Falls back to Courier New, monospace."
494
541
  }
495
542
  },
496
543
  "size": {
@@ -1098,25 +1145,25 @@
1098
1145
  }
1099
1146
  },
1100
1147
  "accent": {
1101
- "$value": "{primitive.color.neutral.900}",
1102
- "$description": "Accent-colored background (neutral/monochrome; inverts to a light neutral on dark surfaces).",
1148
+ "$value": "{primitive.color.apple.500}",
1149
+ "$description": "Accent-colored background — bright apple green (stays green on dark surfaces; pair with content.onAccent dark text).",
1103
1150
  "$extensions": {
1104
1151
  "com.figma.variables": {
1105
1152
  "modes": {
1106
- "Light": "{primitive.color.neutral.900}",
1107
- "Dark": "{primitive.color.neutral.100}"
1153
+ "Light": "{primitive.color.apple.500}",
1154
+ "Dark": "{primitive.color.apple.400}"
1108
1155
  }
1109
1156
  }
1110
1157
  }
1111
1158
  },
1112
1159
  "accentSubtle": {
1113
- "$value": "{primitive.color.neutral.100}",
1160
+ "$value": "{primitive.color.apple.50}",
1114
1161
  "$description": "Faint accent tint for hover states or highlights",
1115
1162
  "$extensions": {
1116
1163
  "com.figma.variables": {
1117
1164
  "modes": {
1118
- "Light": "{primitive.color.neutral.100}",
1119
- "Dark": "{primitive.color.neutral.900}"
1165
+ "Light": "{primitive.color.apple.50}",
1166
+ "Dark": "{primitive.color.apple.900}"
1120
1167
  }
1121
1168
  }
1122
1169
  }
@@ -1228,24 +1275,24 @@
1228
1275
  }
1229
1276
  },
1230
1277
  "accent": {
1231
- "$value": "{primitive.color.neutral.900}",
1232
- "$description": "Accent-intent text/icon color (monochrome). Pair with underline/weight for link affordance.",
1278
+ "$value": "{primitive.color.apple.700}",
1279
+ "$description": "Accent-intent text/icon color — a dark apple green legible on page and card surfaces. Pair with underline/weight for link affordance.",
1233
1280
  "$extensions": {
1234
1281
  "com.figma.variables": {
1235
1282
  "modes": {
1236
- "Light": "{primitive.color.neutral.900}",
1237
- "Dark": "{primitive.color.neutral.100}"
1283
+ "Light": "{primitive.color.apple.700}",
1284
+ "Dark": "{primitive.color.apple.400}"
1238
1285
  }
1239
1286
  }
1240
1287
  }
1241
1288
  },
1242
1289
  "onAccent": {
1243
- "$value": "{primitive.color.neutral.white}",
1244
- "$description": "Text/icon color on accent fills. Flips to a dark neutral in dark mode, where accent fills are light.",
1290
+ "$value": "{primitive.color.neutral.900}",
1291
+ "$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.",
1245
1292
  "$extensions": {
1246
1293
  "com.figma.variables": {
1247
1294
  "modes": {
1248
- "Light": "{primitive.color.neutral.white}",
1295
+ "Light": "{primitive.color.neutral.900}",
1249
1296
  "Dark": "{primitive.color.neutral.900}"
1250
1297
  }
1251
1298
  }
@@ -1347,13 +1394,13 @@
1347
1394
  }
1348
1395
  },
1349
1396
  "accent": {
1350
- "$value": "{primitive.color.neutral.900}",
1351
- "$description": "Accent border (neutral/monochrome; inverts on dark surfaces).",
1397
+ "$value": "{primitive.color.apple.600}",
1398
+ "$description": "Accent border — apple green, dark enough to read as a boundary on page and card surfaces.",
1352
1399
  "$extensions": {
1353
1400
  "com.figma.variables": {
1354
1401
  "modes": {
1355
- "Light": "{primitive.color.neutral.900}",
1356
- "Dark": "{primitive.color.neutral.100}"
1402
+ "Light": "{primitive.color.apple.600}",
1403
+ "Dark": "{primitive.color.apple.400}"
1357
1404
  }
1358
1405
  }
1359
1406
  }
@@ -1865,37 +1912,37 @@
1865
1912
  "accent": {
1866
1913
  "$type": "color",
1867
1914
  "rest": {
1868
- "$value": "{primitive.color.neutral.900}",
1869
- "$description": "Default accent fill for interactive elements at rest. Neutral (monochrome) accent — inverts to a light neutral on dark surfaces.",
1915
+ "$value": "{primitive.color.apple.500}",
1916
+ "$description": "Default accent fill for interactive elements at rest — bright apple green. Pair with content.onAccent (a dark neutral).",
1870
1917
  "$extensions": {
1871
1918
  "com.figma.variables": {
1872
1919
  "modes": {
1873
- "Light": "{primitive.color.neutral.900}",
1874
- "Dark": "{primitive.color.neutral.100}"
1920
+ "Light": "{primitive.color.apple.500}",
1921
+ "Dark": "{primitive.color.apple.400}"
1875
1922
  }
1876
1923
  }
1877
1924
  }
1878
1925
  },
1879
1926
  "hover": {
1880
- "$value": "{primitive.color.neutral.800}",
1927
+ "$value": "{primitive.color.apple.600}",
1881
1928
  "$description": "Accent fill on pointer hover.",
1882
1929
  "$extensions": {
1883
1930
  "com.figma.variables": {
1884
1931
  "modes": {
1885
- "Light": "{primitive.color.neutral.800}",
1886
- "Dark": "{primitive.color.neutral.200}"
1932
+ "Light": "{primitive.color.apple.600}",
1933
+ "Dark": "{primitive.color.apple.500}"
1887
1934
  }
1888
1935
  }
1889
1936
  }
1890
1937
  },
1891
1938
  "pressed": {
1892
- "$value": "{primitive.color.neutral.950}",
1939
+ "$value": "{primitive.color.apple.700}",
1893
1940
  "$description": "Accent fill during active press.",
1894
1941
  "$extensions": {
1895
1942
  "com.figma.variables": {
1896
1943
  "modes": {
1897
- "Light": "{primitive.color.neutral.950}",
1898
- "Dark": "{primitive.color.neutral.300}"
1944
+ "Light": "{primitive.color.apple.700}",
1945
+ "Dark": "{primitive.color.apple.600}"
1899
1946
  }
1900
1947
  }
1901
1948
  }
@@ -1925,37 +1972,37 @@
1925
1972
  }
1926
1973
  },
1927
1974
  "content": {
1928
- "$value": "{primitive.color.neutral.900}",
1929
- "$description": "Text and icon color on neutral surfaces with accent intent. Monochrome — pair with underline/weight for link affordance.",
1975
+ "$value": "{primitive.color.apple.700}",
1976
+ "$description": "Accent-intent text/icon color on neutral surfaces (a dark apple green) — pair with underline/weight for link affordance.",
1930
1977
  "$extensions": {
1931
1978
  "com.figma.variables": {
1932
1979
  "modes": {
1933
- "Light": "{primitive.color.neutral.900}",
1934
- "Dark": "{primitive.color.neutral.100}"
1980
+ "Light": "{primitive.color.apple.700}",
1981
+ "Dark": "{primitive.color.apple.400}"
1935
1982
  }
1936
1983
  }
1937
1984
  }
1938
1985
  },
1939
1986
  "contentHover": {
1940
- "$value": "{primitive.color.neutral.700}",
1987
+ "$value": "{primitive.color.apple.800}",
1941
1988
  "$description": "Accent content color on pointer hover.",
1942
1989
  "$extensions": {
1943
1990
  "com.figma.variables": {
1944
1991
  "modes": {
1945
- "Light": "{primitive.color.neutral.700}",
1946
- "Dark": "{primitive.color.neutral.300}"
1992
+ "Light": "{primitive.color.apple.800}",
1993
+ "Dark": "{primitive.color.apple.300}"
1947
1994
  }
1948
1995
  }
1949
1996
  }
1950
1997
  },
1951
1998
  "subtle": {
1952
- "$value": "{primitive.color.neutral.100}",
1999
+ "$value": "{primitive.color.apple.50}",
1953
2000
  "$description": "Low-emphasis accent tint for hover backgrounds and selection highlights.",
1954
2001
  "$extensions": {
1955
2002
  "com.figma.variables": {
1956
2003
  "modes": {
1957
- "Light": "{primitive.color.neutral.100}",
1958
- "Dark": "{primitive.color.neutral.800}"
2004
+ "Light": "{primitive.color.apple.50}",
2005
+ "Dark": "{primitive.color.apple.900}"
1959
2006
  }
1960
2007
  }
1961
2008
  }
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # Hirobius Design System
2
2
 
3
- Generated: 2026-10-07T16:09:09.631Z
3
+ Generated: 2026-10-09T13:43:23.079Z
4
4
  Primary sources: `public/hds-manifest.json`, `src/app/data/component-api.json`, `hirobius.tokens.json`
5
5
 
6
6
  ## Agents Using The Package: Start Here
@@ -9,6 +9,16 @@ Primary sources: `public/hds-manifest.json`, `src/app/data/component-api.json`,
9
9
  - MCP server `hds` ships in the package: run `npx hds-mcp` (stdio). Tools: `list_core`, `search_components`, `get_component`, `search_tokens`; each answer is under 2 KB.
10
10
  - Lint before you finish: `import hds from '@hirobius/design-system/eslint-plugin'` and spread `hds.configs.recommended` into `eslint.config.mjs`.
11
11
 
12
+ ## Voice
13
+
14
+ How these docs speak. Every page, and every agent writing for HDS, follows it. Source: `content/docs/voice.mdx` (published at `/docs/voice`).
15
+
16
+ - Use plain words a reader already knows. Name a thing by what it does, not by how it is built.
17
+ - Keep sentences short, one idea each.
18
+ - Tell the reader what to do. Leave out brand adjectives.
19
+ - Keep maintainer references off public pages: issue and ADR numbers, script names, internal counts.
20
+ - Don't use: "systems-first".
21
+
12
22
  ## Pick By Need
13
23
 
14
24
  One answer per need. Use the components after the arrow; what follows "Not:" is what agents reached for instead, which is the wrong answer for that need even where it has a purpose of its own. Generated from `mcp/guide.mjs`, the same list as `AGENTS.md`.
@@ -149,42 +159,54 @@ One line per component that declares when to use it (`@usage` / `@useInstead` in
149
159
 
150
160
  Alert: [core] Show a persistent inline message with a severity, next to the content it concerns. Use instead: ToastProvider, Badge
151
161
  AlertDialog: Confirm a destructive or irreversible action (delete, archive, remove) before it runs, with Cancel and Action buttons. Use instead: Dialog, ToastProvider
162
+ AssetImg: Show an image that scales to its frame, with a placeholder if it fails to load.
152
163
  Avatar: [core] Show a person or entity as an image with an initials fallback. Use instead: Icon, Badge
153
164
  Badge: [core] Label a status, state or count with a compact neutral or semantic chip, or a dot. Use instead: Tag, Alert
154
165
  Box: [core] Build one-off layout that no named layout primitive covers, using token keys through `sx`. Use instead: Stack, Grid, Container
155
166
  Breadcrumb: [core] Show where the current page sits in a hierarchy and link back up it. Use instead: Tabs, Pagination
156
- Button: [core] Trigger an action (submit, save, open a dialog) with a text label and optional icons; for an icon-only control pass iconOnly with iconLeft and label; for an on/off toggle pass pressed. Use instead: InlineLink
167
+ Button: [core] 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. Use instead: InlineLink
157
168
  Card: [core] Group related content on a raised surface with header, body, footer and metric slots, or as one selectable option. Use instead: Surface, Card.Metric
158
169
  CardMetric: Show one headline figure (a KPI, a count, a total) with its label inside a Card. Use instead: MetricTiles
159
170
  Checkbox: [core] Let people tick one or more independent options, or a parent choice that is partly selected. Use instead: Toggle, Radio
171
+ CodeBlock: Show a code sample with a copy button, optionally collapsed.
160
172
  Combobox: [core] Pick one value, or several with `multiple`, from a long list of options, with a search field that filters as you type. Use instead: Select, Menu
161
173
  Container: [core] Constrain a page region to the content or maximum width and centre it. Use instead: Stack, Grid, Box
174
+ DataTableSection: Put a heading and toolbar above a Table.
175
+ DestructiveSection: Put a dangerous action, such as delete, in its own section with a warning and a confirm step.
162
176
  Dialog: [core] Interrupt the page with a modal that needs a decision or focused input before people continue. Use instead: Tooltip, Alert, ToastProvider, AlertDialog
163
177
  Disclosure: [core] Hide optional explanatory content behind a heading that people can expand. Use instead: Tabs
164
- Divider: [core] Separate two regions of content with a thin semantic rule. Use instead: Stack, Surface
178
+ Divider: [core] Separate two blocks of content with a thin line. Use instead: Stack, Surface
165
179
  EmptyState: [core] Say that a list, grid or section has no data yet, with a title and an optional description. Use instead: Skeleton, Alert
180
+ ErrorPattern: Show an error with a short message and a Back button, in place or as a full page.
166
181
  Field: [core] Show a labelled read-only value, such as a name and its value in a detail view. Use instead: Input, Card.Metric
167
- Grid: [core] Lay out content in responsive columns with token-governed gaps, or align nested content with subgrid. Use instead: Stack, Box
182
+ Form: Wrap form fields so they stack with even spacing.
183
+ FormActions: Lay out a form's buttons in a fixed order: danger on the left, then secondary, then primary on the right.
184
+ Grid: [core] Lay out content in columns that adapt to the screen width, or line up nested content with subgrid. Use instead: Stack, Box
168
185
  HdsRouterProvider: [core] Wrap the app root once so HDS links and navigation use your client router; with no provider they stay plain anchors.
169
186
  HdsThemeProvider: [core] Wrap an app or region once to set theme, density and other root attributes for everything inside it. Use instead: Surface
170
- Icon: [core] Draw a Lucide glyph at a size and colour from the design tokens. Use instead: Button, Avatar
187
+ Icon: [core] Show a Lucide icon at a set size and color. Use instead: Button, Avatar
171
188
  InlineLink: [core] Link to a route or external URL from inside body copy. Use instead: Button, Text
172
189
  Input: [core] Collect a single line of text, a number, an email, a password, a date or a time, with label, helper and error slots. Use instead: Textarea, Select, Combobox
173
190
  Kbd: [core] Show a keyboard key or shortcut hint inline, as a native kbd element. Use instead: Text
174
191
  Menu: [core] Offer a list of actions from a trigger, closed until opened. Use instead: Select
192
+ MetricTile: Show one key number with its label, inside a MetricTiles row.
193
+ MetricTiles: Show a row of key numbers, one tile each.
194
+ Page: Wrap a screen in the standard width and padding.
195
+ PageHeader: Open a screen with its title, plus optional breadcrumb, status and actions.
175
196
  Pagination: [core] Move between pages of a long result set, with truncated page numbers. Use instead: Breadcrumb
176
197
  Popover: [core] Anchor interactive content, such as a short form, a filter set or a picker, to a trigger people click to open. Use instead: Tooltip, Menu, Dialog
177
198
  Progress: [core] Show how far a task has got, as a bar or ring that is determinate or indeterminate. Use instead: Spinner, Skeleton
178
199
  Radio: [core] Choose exactly one option from a small set that should stay visible together. Use instead: Checkbox, Select, SegmentedControl
200
+ Reveal: Fade content in as it scrolls into view.
179
201
  SegmentedControl: [core] Switch between two to five mutually exclusive views or modes in a compact row. Use instead: Radio, Tabs, Select
180
202
  Select: [core] Choose one value from a short list of options in a form field. Use instead: Menu, Combobox
181
203
  Skeleton: [core] Reserve the shape of content that is still loading, so the layout does not jump. Use instead: Progress, Spinner
182
204
  Slider: [core] Pick a number within a known range by dragging, when the exact value matters less than the position. Use instead: Input
183
205
  Spinner: [core] Show that something is loading when the wait is short or has no measurable end. Use instead: Progress, Skeleton
184
- Stack: [core] Space a row or column of content with token gaps and simple flex alignment. Use instead: Grid, Surface
206
+ Stack: [core] Space items in a row or column with even gaps. Use instead: Grid, Surface
185
207
  Stat: Show one headline figure inline, inside prose or a dense list, with its label and an optional sub-line. Use instead: MetricTiles, Card.Metric, StatusTile
186
208
  StatusTile: Show a titled status block with optional notes and a trailing badge or affordance. Use instead: MetricTiles, Card.Metric, StatusListItem
187
- Surface: [core] Wrap content in a padded, background-bearing inset surface with no header or footer anatomy. Use instead: Card, Stack
209
+ Surface: [core] Give a block of content a background and padding, with no header or footer. Use instead: Card, Stack
188
210
  Table: [core] Show rows of structured data in aligned columns, with optional sorting. Use instead: Field, Stack
189
211
  Tabs: [core] Switch between panels of related content in the same place, one visible at a time. Use instead: SegmentedControl, Disclosure
190
212
  Tag: [core] Show an interactive filter or category chip that people can toggle. Use instead: Badge
package/package.json CHANGED
@@ -18,9 +18,9 @@
18
18
  "url": "git+https://github.com/hirobius/hds.git"
19
19
  },
20
20
  "author": "Adrian Milsap",
21
- "license": "SEE LICENSE IN NOTICE.md",
21
+ "license": "MIT AND OFL-1.1",
22
22
  "private": false,
23
- "version": "0.22.0",
23
+ "version": "0.23.1",
24
24
  "engines": {
25
25
  "node": ">=20",
26
26
  "pnpm": ">=8"
@@ -191,6 +191,7 @@
191
191
  "@arethetypeswrong/cli": "^0.18.4",
192
192
  "@axe-core/playwright": "^4.11.1",
193
193
  "@changesets/cli": "^2.27.10",
194
+ "@chromatic-com/playwright": "^1.0.0",
194
195
  "@cyclonedx/cyclonedx-npm": "^4.2.1",
195
196
  "@figma/code-connect": "^2.0.1",
196
197
  "@guidepup/virtual-screen-reader": "^0.33.0",
@@ -241,6 +242,7 @@
241
242
  "pixelmatch": "^7.1.0",
242
243
  "playwright": "^1.58.2",
243
244
  "pngjs": "^7.0.0",
245
+ "postcss": "8.5.10",
244
246
  "prettier": "^3.8.3",
245
247
  "publint": "^0.3.21",
246
248
  "react": "18.3.1",
@@ -286,13 +288,13 @@
286
288
  "audit:sidecar": "node scripts/generate-security-posture.mjs",
287
289
  "audit:style-dictionary": "bash scripts/poc/style-dictionary-poc/run.sh",
288
290
  "build-storybook": "storybook build",
289
- "build:lib": "vite build -c vite.config.lib.ts && pnpm build:types && node scripts/build-vars-css.mjs && node scripts/build-fonts-css.mjs && node scripts/build-styles-css.mjs && node scripts/build-static-css.mjs",
291
+ "build:lib": "vite build -c vite.config.lib.ts && pnpm build:types && node scripts/build-vars-css.mjs && node scripts/build-fonts-css.mjs && node scripts/build-styles-css.mjs && node scripts/build-static-css.mjs && node scripts/build-css-contract.mjs",
290
292
  "build:types": "tsc -p tsconfig.dts.json && node scripts/strip-dts-side-effects.mjs && node scripts/add-dts-extensions.mjs",
291
293
  "catalog": "node scripts/generate-visual-catalog.mjs",
292
294
  "changelog:generate": "node scripts/generate-changelog.mjs",
293
295
  "changeset": "changeset",
294
296
  "changeset:add": "changeset",
295
- "changeset:version": "changeset version && node scripts/upgrade/compile.mjs --release && node scripts/audit-component-integrity.mjs --api --update-baseline",
297
+ "changeset:version": "changeset version && pnpm build:lib && node scripts/upgrade/compile.mjs --release && node scripts/audit-component-integrity.mjs --api --update-baseline",
296
298
  "check": "pnpm check:full",
297
299
  "check:a11y": "pnpm lint --rule '{\"jsx-a11y/alt-text\":\"error\",\"jsx-a11y/img-redundant-alt\":\"error\"}'",
298
300
  "check:attributions": "node scripts/check-attributions.mjs",
@@ -343,12 +345,13 @@
343
345
  "check:secrets": "node scripts/check-secrets.mjs",
344
346
  "check:security": "node scripts/check-security-baseline.mjs",
345
347
  "check:semantic-report": "node scripts/audit-tokens.mjs --report-only",
346
- "check:size": "pnpm build:lib && node scripts/build-button-probe.mjs && size-limit",
348
+ "check:size": "pnpm build:lib && node scripts/build-button-probe.mjs && pnpm size-limit",
347
349
  "check:spacing": "node scripts/check-hardcoded-spacing.mjs",
348
350
  "check:spacing-vocabulary": "node scripts/check-spacing-vocabulary.mjs",
349
351
  "check:story-coverage": "node scripts/check-story-coverage.mjs",
350
352
  "check:layout-contract": "node scripts/check-layout-contract.mjs",
351
353
  "check:spacing-scale": "node scripts/check-tailwind-spacing-scale.mjs",
354
+ "check:docs-axe": "node scripts/check-docs-axe.mjs",
352
355
  "check:storybook-axe": "node scripts/check-storybook-axe.mjs",
353
356
  "check:style-props": "node scripts/check-style-discipline.mjs --style-props-only",
354
357
  "check:sync-map": "node scripts/check-sync-map.mjs",
@@ -366,11 +369,13 @@
366
369
  "check:tokens": "node scripts/check-hardcoded-colors.mjs && pnpm lint --rule '{\"tailwindcss/no-custom-classname\":\"error\"}' && node scripts/audit-tokens.mjs --forbidden && node scripts/check-tier-bypass.mjs && node scripts/check-hardcoded-spacing.mjs && node scripts/check-typography-discipline.mjs --fonts-only",
367
370
  "check:type-coverage": "pnpm exec type-coverage --at-least 99.9",
368
371
  "chromatic": "chromatic --exit-zero-on-changes",
372
+ "test:visual-docs": "playwright test",
369
373
  "closure:plan": "node scripts/run-gates.mjs --channel pre-commit --emit-inventory docs/guardrails/full-strictness-inventory.json && node scripts/generate-closure-plan.mjs",
370
374
  "closure:plan:check": "node scripts/generate-closure-plan.mjs --check",
371
375
  "docs:api": "node scripts/generate-component-api.mjs",
372
376
  "docs:changelogs": "node scripts/generate-component-changelogs.mjs",
373
377
  "docs:build": "pnpm docs:prepare && pnpm --dir docs-site build",
378
+ "docs:publish": "pnpm docs:build && node scripts/generate-manifest-projection.mjs && node scripts/copy-agent-context.mjs --out docs-site/out --with-public && node scripts/figma-push.mjs --bundle docs-site/out/figma/sync-bundle.json",
374
379
  "docs:components": "node scripts/generate-docs-components.mjs",
375
380
  "docs:component": "node scripts/generate-component-page.mjs",
376
381
  "docs:dev": "pnpm docs:prepare && pnpm --dir docs-site dev",
@@ -416,11 +421,11 @@
416
421
  "release": "pnpm build:lib && pnpm smoke:consumer --skip-build && changeset publish",
417
422
  "scaffold:component": "node scripts/scaffold-component.mjs",
418
423
  "scaffold:tenant": "node scripts/scaffold-tenant.mjs",
419
- "size-limit": "size-limit --config .size-limit.cjs",
424
+ "size-limit": "node scripts/run-size-limit.mjs",
420
425
  "layout-contract:generate": "node scripts/generate-layout-contract.mjs",
421
426
  "status:touch": "node scripts/status-touch.mjs",
422
427
  "status:fold": "node scripts/status-fold.mjs",
423
- "smoke:consumer": "node scripts/smoke-consumer.mjs && node scripts/check-published-types.mjs && node scripts/check-rsc-directives.mjs && node scripts/check-pack-contents.mjs",
428
+ "smoke:consumer": "node scripts/smoke-consumer.mjs && node scripts/check-published-types.mjs && node scripts/check-rsc-directives.mjs && node scripts/check-pack-contents.mjs && node scripts/check-upgrade-css.mjs",
424
429
  "storybook": "storybook dev -p 6006",
425
430
  "storybook:deploy": "node scripts/deploy-storybook.mjs",
426
431
  "sync": "node scripts/build-tokens.mjs && node scripts/audit-tokens.mjs --forbidden && node scripts/build-handoff.mjs && node scripts/build-design-md.mjs && node scripts/build-figma-variables.mjs",