@hirobius/design-system 0.21.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 +13 -1
- package/CHANGELOG.md +1043 -0
- package/CONSUMING.md +25 -11
- package/DESIGN.md +24 -24
- package/MIGRATIONS.md +603 -0
- package/NOTICE.md +1 -1
- package/README.md +22 -12
- package/UPGRADING.md +243 -0
- package/codemods/hds-prefix.mjs +28 -13
- package/codemods/jsx-fold.mjs +28 -13
- package/codemods/lib/atomic-write.mjs +28 -0
- package/codemods/lib/installed-version.mjs +354 -0
- package/codemods/lib/project.mjs +395 -0
- package/codemods/lib/record.mjs +110 -0
- package/codemods/lib/scan.mjs +323 -0
- package/codemods/lib/semver.mjs +57 -0
- package/codemods/not-found-pattern.mjs +3 -3
- package/codemods/patterns-subpath.mjs +28 -12
- package/codemods/registry.mjs +67 -0
- package/codemods/tile-grid.mjs +3 -3
- package/codemods/upgrade.mjs +909 -0
- 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 +6 -5
- 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/alert-dialog.d.ts +1 -1
- package/dist/types/src/app/components/alert.d.ts +1 -1
- package/dist/types/src/app/components/asset-img.d.ts +2 -1
- package/dist/types/src/app/components/avatar-group.d.ts +1 -1
- package/dist/types/src/app/components/avatar.d.ts +1 -1
- package/dist/types/src/app/components/badge.d.ts +1 -1
- package/dist/types/src/app/components/blockquote.d.ts +1 -1
- package/dist/types/src/app/components/breadcrumb.d.ts +1 -1
- package/dist/types/src/app/components/button.d.ts +2 -2
- package/dist/types/src/app/components/callout.d.ts +3 -2
- package/dist/types/src/app/components/card.d.ts +6 -4
- package/dist/types/src/app/components/checkbox.d.ts +1 -1
- package/dist/types/src/app/components/code-block.d.ts +2 -1
- package/dist/types/src/app/components/combobox.d.ts +2 -2
- package/dist/types/src/app/components/data-table-section.d.ts +2 -1
- package/dist/types/src/app/components/destructive-section.d.ts +2 -1
- package/dist/types/src/app/components/dialog.d.ts +1 -1
- package/dist/types/src/app/components/disclosure.d.ts +1 -1
- package/dist/types/src/app/components/divider.d.ts +2 -2
- package/dist/types/src/app/components/empty-state.d.ts +1 -1
- package/dist/types/src/app/components/field.d.ts +1 -1
- package/dist/types/src/app/components/form-actions.d.ts +2 -1
- package/dist/types/src/app/components/form.d.ts +2 -1
- package/dist/types/src/app/components/grid.d.ts +1 -1
- package/dist/types/src/app/components/hds-tooltip.d.ts +1 -1
- package/dist/types/src/app/components/icon.d.ts +2 -2
- package/dist/types/src/app/components/inline-link.d.ts +1 -1
- package/dist/types/src/app/components/input.d.ts +1 -1
- package/dist/types/src/app/components/kbd.d.ts +1 -1
- package/dist/types/src/app/components/menu.d.ts +1 -1
- package/dist/types/src/app/components/metadata-list.d.ts +1 -1
- package/dist/types/src/app/components/metric-tiles.d.ts +3 -1
- 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/pagination.d.ts +1 -1
- package/dist/types/src/app/components/popover.d.ts +1 -1
- package/dist/types/src/app/components/progress.d.ts +1 -1
- package/dist/types/src/app/components/radio.d.ts +1 -1
- package/dist/types/src/app/components/reveal.d.ts +1 -0
- package/dist/types/src/app/components/select.d.ts +1 -1
- package/dist/types/src/app/components/skeleton.d.ts +1 -1
- package/dist/types/src/app/components/slider.d.ts +1 -1
- package/dist/types/src/app/components/spinner.d.ts +1 -1
- package/dist/types/src/app/components/stack.d.ts +1 -1
- package/dist/types/src/app/components/stat.d.ts +1 -1
- package/dist/types/src/app/components/status-list-item.d.ts +1 -1
- package/dist/types/src/app/components/status-tile.d.ts +1 -1
- package/dist/types/src/app/components/table.d.ts +1 -1
- package/dist/types/src/app/components/tabs.d.ts +4 -2
- package/dist/types/src/app/components/tag.d.ts +1 -1
- package/dist/types/src/app/components/text.d.ts +1 -1
- package/dist/types/src/app/components/textarea.d.ts +1 -1
- package/dist/types/src/app/components/timestamp.d.ts +1 -1
- package/dist/types/src/app/components/toast.d.ts +1 -1
- package/dist/types/src/app/components/toggle.d.ts +1 -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 +126 -32
- package/dist/variables.css +33 -22
- package/docs/CONSUMING.md +2 -2
- package/hirobius.tokens.json +173 -79
- package/llms.txt +29 -7
- package/mcp/catalog.mjs +10 -7
- package/mcp/core-set.mjs +66 -0
- package/mcp/guide.mjs +9 -52
- package/package.json +28 -11
- package/public/hds-manifest.json +365 -207
- 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 +104 -71
- package/upgrade/index.json +215 -0
- package/upgrade/releases/0.17.0.json +962 -0
- package/upgrade/releases/0.18.0.json +8 -0
- package/upgrade/releases/0.19.0.json +233 -0
- package/upgrade/releases/0.19.1.json +8 -0
- package/upgrade/releases/0.20.0.json +5108 -0
- package/upgrade/releases/0.21.0.json +538 -0
- package/upgrade/releases/0.22.0.json +94 -0
- package/upgrade/releases/0.23.0.json +259 -0
- package/upgrade/schema.json +1102 -0
- package/dist/fonts/geist-mono-400.woff2 +0 -0
package/MIGRATIONS.md
ADDED
|
@@ -0,0 +1,603 @@
|
|
|
1
|
+
# Migrations
|
|
2
|
+
|
|
3
|
+
How HDS deprecates and removes public API, and the removals shipped so far.
|
|
4
|
+
Token renames live in
|
|
5
|
+
[TOKEN_MIGRATION.md](https://github.com/hirobius/hds/blob/main/TOKEN_MIGRATION.md)
|
|
6
|
+
(not in the package).
|
|
7
|
+
|
|
8
|
+
## The cycle
|
|
9
|
+
|
|
10
|
+
1. **Deprecate.** The new path ships and the old one keeps working. The old one
|
|
11
|
+
carries `@deprecated` and `@removeIn` JSDoc that names the replacement.
|
|
12
|
+
2. **Give a codemod.** A script in `codemods/` rewrites consumer code, supports
|
|
13
|
+
`--check` (exit 1 when a rewrite is needed, writes nothing) and `--dry-run`,
|
|
14
|
+
and has unit tests against fixture files.
|
|
15
|
+
3. **Run it on a real consumer.** The dry-run diff is filed as an issue on the
|
|
16
|
+
consumer's repo. HDS never pushes to it.
|
|
17
|
+
4. **Remove** at the announced window. Before 1.0 a removal may ship in a 0.x
|
|
18
|
+
minor: semver allows the break, and a caret range such as `^0.19` never
|
|
19
|
+
resolves to 0.20. Each one is announced here in a dated section, one row per
|
|
20
|
+
removed name, with the codemod where a consumer imports the name. From 1.0 on,
|
|
21
|
+
removals ship only in a major. ADR-014's 2026-10-01 amendment records the rule
|
|
22
|
+
(hds#389).
|
|
23
|
+
|
|
24
|
+
## Pattern components move to `/patterns`
|
|
25
|
+
|
|
26
|
+
- **Deprecated in:** 0.17 (hds#254). 21 pattern-tier components are still
|
|
27
|
+
exported from the package root, each marked `@deprecated`. They are also
|
|
28
|
+
exported from `@hirobius/design-system/patterns`.
|
|
29
|
+
- **Removed from the root in:** 0.20.0 (hds#389 R1). The root no longer
|
|
30
|
+
exports these 21 components or anything else from their modules (props types,
|
|
31
|
+
parts, hooks, `*Variants`). `/patterns` keeps six of them with every name:
|
|
32
|
+
AssetImg, CodeBlock, ErrorPattern, Form, Page and Reveal. The other 15 are
|
|
33
|
+
removed outright in the same release, from `/patterns` too (hds#394 wave 4a).
|
|
34
|
+
See [0.20.0 removals](#0200-removals-2026-10-01).
|
|
35
|
+
- **Codemod:** `codemods/patterns-subpath.mjs`, also installed as the
|
|
36
|
+
`hds-patterns-subpath` binary. The names it moves are everything
|
|
37
|
+
`/patterns` exports and the root does not (`pnpm codemod:names`), never
|
|
38
|
+
listed by hand. A name of the 15 removed modules has nowhere to move: the
|
|
39
|
+
codemod reports a named import or re-export of it as removed in 0.20.0 for
|
|
40
|
+
a manual edit, and `--check` exits 1 (the list is
|
|
41
|
+
`codemods/removed-0.20.json`). A removed name read through a namespace
|
|
42
|
+
import or a dynamic `import()` is left to the type checker.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Preview what would change, writes nothing
|
|
46
|
+
npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root . --dry-run
|
|
47
|
+
|
|
48
|
+
# CI guard: exit 1 while any root pattern import remains
|
|
49
|
+
npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root . --check
|
|
50
|
+
|
|
51
|
+
# Rewrite in place
|
|
52
|
+
npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Other named imports stay on the root. Aliases (`Page as Screen`), `type`
|
|
56
|
+
modifiers and multi-line layout are kept, and a pattern name joins an existing
|
|
57
|
+
`/patterns` import instead of adding a second one. Default plus named imports
|
|
58
|
+
(`import HDS, { Page }`), `export { Page } from` re-exports and indented imports
|
|
59
|
+
are handled. `--dry-run` prints each import line before (`-`) and after (`+`).
|
|
60
|
+
Some statements hide the names, so the codemod cannot rewrite them; `--check`
|
|
61
|
+
exits 1 and lists them for a manual edit: `export * from '@hirobius/design-system'`,
|
|
62
|
+
and a namespace import (`import * as HDS`) or a dynamic `import()`, `require()`,
|
|
63
|
+
`vi.mock`, `jest.mock` (and the other test-runner loaders) of the root in a file
|
|
64
|
+
that reads a pattern name off something: `HDS.Page`, `m['Page']`,
|
|
65
|
+
`import('@hirobius/design-system').then((m) => m.Page)`,
|
|
66
|
+
`const { Page } = require(…)`. A bare `Page`, such as the `/patterns` import the
|
|
67
|
+
codemod wrote, does not count, so a migrated file passes `--check`.
|
|
68
|
+
Comments in the braces move with their specifier, and an import after `;` or a
|
|
69
|
+
comment on its line is read too (hds#434). A file the codemod cannot read to its
|
|
70
|
+
end is listed as unreadable and keeps `--check` at exit 1: in JSX text, a lone
|
|
71
|
+
backtick or a `/*` (as in `src/*.ts`) opens a template or comment that never
|
|
72
|
+
closes, so write it as ``{'`'}`` or `{'/*'}`.
|
|
73
|
+
`node_modules`, `dist` and `.git` are skipped.
|
|
74
|
+
|
|
75
|
+
Upgrade the package to 0.17 first: `/patterns` does not exist in 0.16.
|
|
76
|
+
|
|
77
|
+
### First consumer run
|
|
78
|
+
|
|
79
|
+
The first consumer app to run it pins `^0.16.0`. A read-only dry run on
|
|
80
|
+
2026-09-29 found 11 import sites in 11 files, all four names being `Page`,
|
|
81
|
+
`ErrorPattern`, `AssetImg` and `CodeBlock`. A second dry run on 2026-10-01
|
|
82
|
+
found the same 11 sites; with StatusTile on `/patterns` (hds#395) it moves 12,
|
|
83
|
+
the extra one a second import statement in a file that already imports Page.
|
|
84
|
+
|
|
85
|
+
## Spacing names move to the t-shirt scale
|
|
86
|
+
|
|
87
|
+
- **Deprecated in:** 0.17 (hds#206). Spacing is one scale,
|
|
88
|
+
`semantic.space.scale.{xs,sm,md,lg,xl}` (8/16/24/32/48px). The old names
|
|
89
|
+
keep computing exactly what they did, at both densities, and carry
|
|
90
|
+
`$deprecated` in `hirobius.tokens.json`.
|
|
91
|
+
- **Removed in:** not yet, and not in 0.20.0. Before 1.0 it may go in a 0.x
|
|
92
|
+
minor (step 4), but no window is set: steps 2 and 3 come first, and removing
|
|
93
|
+
the token paths also deletes their Figma variables.
|
|
94
|
+
- **Warning:** in a development build, Box `sx`'s `'tight'` to `'spacious'`
|
|
95
|
+
each log one `[HDS deprecation]` console warning naming the step to use.
|
|
96
|
+
Production builds stay silent. The token paths cannot warn at runtime.
|
|
97
|
+
- **Codemod:** `scripts/codemod-spacing-vocabulary.mjs` rewrites the token
|
|
98
|
+
references below, but only inside HDS's own `src/`. A consumer codemod in
|
|
99
|
+
`codemods/` with `--root`, `--check` and `--dry-run` does not exist yet.
|
|
100
|
+
|
|
101
|
+
| Old | New |
|
|
102
|
+
| ---------------------------------------------------- | ---------------------------------- |
|
|
103
|
+
| `semantic.space.component.gap` | `semantic.space.scale.xs` |
|
|
104
|
+
| `semantic.space.layout.tight` | `semantic.space.scale.sm` |
|
|
105
|
+
| `semantic.space.layout.normal` | `semantic.space.scale.md` |
|
|
106
|
+
| `semantic.space.layout.inset` | `semantic.space.scale.lg` |
|
|
107
|
+
| `semantic.space.layout.spacious` | `semantic.space.scale.xl` |
|
|
108
|
+
| `semantic.space.component.padding` | `semantic.space.surface.padding` |
|
|
109
|
+
| `semantic.space.layout.gutter` | `semantic.space.region.gutter` |
|
|
110
|
+
| Box `sx` `'tight'` `'normal'` `'inset'` `'spacious'` | `'sm'` `'md'` `'lg'` `'xl'` |
|
|
111
|
+
| Box `sx` integer `2` `4` `6` `8` `12` (4px units) | `'xs'` `'sm'` `'md'` `'lg'` `'xl'` |
|
|
112
|
+
|
|
113
|
+
The CSS variables follow the paths (`--semantic-space-layout-tight` becomes
|
|
114
|
+
`--semantic-space-scale-sm`). `surface.padding` and `region.gutter` are not
|
|
115
|
+
scale steps: tenants and `theme.css` override them at runtime, always with a
|
|
116
|
+
scale step.
|
|
117
|
+
|
|
118
|
+
Compact density: each swap in the table is pixel-identical at the default
|
|
119
|
+
density, but not under `data-density="compact"`. `component.gap`,
|
|
120
|
+
`layout.tight|normal|inset|spacious`, Box `sx`'s `'tight'` to `'spacious'` and
|
|
121
|
+
Box `sx` integers are fixed pixels. The `scale.*` steps that replace them
|
|
122
|
+
tighten one step under compact (8, 16, 24, 32, 48px become 6, 12, 20, 24,
|
|
123
|
+
40px). Moving to the scale therefore tightens compact screens, the way Stack's
|
|
124
|
+
gaps already do. To keep the old compact pixels exactly, use the fixed step
|
|
125
|
+
instead: `hds.space.px8|px16|px24|px32|px48`, or
|
|
126
|
+
`--primitive-space-2|4|6|8|12`.
|
|
127
|
+
|
|
128
|
+
Stack's `gap` keeps its old names for now, because its `'xs'` is the 2px
|
|
129
|
+
subgrid step, not `scale.xs`. Its `'tight'` to `'spacious'` read the scale
|
|
130
|
+
steps, so unlike Box `sx`'s same four names they tighten under compact. That
|
|
131
|
+
difference stays until both sets of names are removed. Stack's numbers (raw px)
|
|
132
|
+
and anything else untyped callers pass render what they did before.
|
|
133
|
+
|
|
134
|
+
Upgrade first: Box `sx` takes `'xs'` to `'xl'` only from the first release after
|
|
135
|
+
0.19.1. On 0.19.1 and earlier the string passes through, so `p: 'sm'` becomes
|
|
136
|
+
`padding: sm`, which is invalid CSS and renders no padding.
|
|
137
|
+
|
|
138
|
+
`hds.density.*` (the `hds` token bridge) is deprecated from that release too,
|
|
139
|
+
with the same removal window (`@removeIn 1.0.0`). Its names sit one step off the
|
|
140
|
+
scale, and each replacement computes the same pixels at both densities:
|
|
141
|
+
|
|
142
|
+
| Old | New |
|
|
143
|
+
| ------------------------------------------- | ------------------------------------------------------------------ |
|
|
144
|
+
| `hds.density.sm` (`var(--hds-space-sm)`) | `hds.semantic.space.scale.xs` |
|
|
145
|
+
| `hds.density.md` (`var(--hds-space-md)`) | `hds.semantic.space.scale.sm` |
|
|
146
|
+
| `hds.density.lg` (`var(--hds-space-lg)`) | `hds.semantic.space.scale.md` |
|
|
147
|
+
| `hds.density.xl` (`var(--hds-space-xl)`) | `hds.semantic.space.scale.lg` |
|
|
148
|
+
| `hds.density.xl2` (`var(--hds-space-2xl)`) | `hds.semantic.space.scale.xl` |
|
|
149
|
+
| `hds.density.xs`, `hds.density.xl3`, `.xl4` | no scale step; `hds.space.px4`, `px64`, `px80` (not density-aware) |
|
|
150
|
+
|
|
151
|
+
## 0.20.0 removals (2026-10-01)
|
|
152
|
+
|
|
153
|
+
The first removal batches under step 4. hds#389 R1 removes names deprecated in
|
|
154
|
+
an earlier 0.x release: 79 root names that moved to `/patterns`, six `Hds*`
|
|
155
|
+
aliases and five docs/lab components (12 names). hds#394 wave 4a then removes,
|
|
156
|
+
without a deprecation release, 32 components no consumer imports (87 names,
|
|
157
|
+
from the root and `/patterns`) and makes the 38 remaining root `*Variants` cva
|
|
158
|
+
helpers private (hds#389's 2026-10-01 decision update). Wave 4b removes 13
|
|
159
|
+
components that fold into a survivor hds#393 shipped (27 root names; StatusDot
|
|
160
|
+
stays for now). hds#395 (B5) removes the two that a consumer app renders,
|
|
161
|
+
NotFoundPattern and TileGrid (3 root names), each with a codemod of its own,
|
|
162
|
+
and moves StatusTile from the root to `/patterns` (3 names). Nothing else left
|
|
163
|
+
the public API. The one consumer app that imports components pins a caret range
|
|
164
|
+
below 0.20, so nothing breaks until it upgrades; run the codemods first.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Preview, then rewrite in place. `-p` runs the bins from the 0.20 package
|
|
168
|
+
# (hds-prefix first ships in 0.20.0), so npx never looks the bin name up on
|
|
169
|
+
# its own in the registry. Works before or after you upgrade.
|
|
170
|
+
npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root . --dry-run
|
|
171
|
+
npx -p @hirobius/design-system@^0.20.0 hds-prefix --root . --dry-run
|
|
172
|
+
npx -p @hirobius/design-system@^0.20.0 hds-not-found-pattern --root . --dry-run
|
|
173
|
+
npx -p @hirobius/design-system@^0.20.0 hds-tile-grid --root . --dry-run
|
|
174
|
+
npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .
|
|
175
|
+
npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .
|
|
176
|
+
npx -p @hirobius/design-system@^0.20.0 hds-not-found-pattern --root .
|
|
177
|
+
npx -p @hirobius/design-system@^0.20.0 hds-tile-grid --root .
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
The four run in any order and reach the same files. Each one's `--check`
|
|
181
|
+
exits 0 once nothing is left for it, and `hds-patterns-subpath --check` also
|
|
182
|
+
stays at 1 while a NotFoundPattern or TileGrid import remains.
|
|
183
|
+
|
|
184
|
+
After upgrading, the installed copies run without a download:
|
|
185
|
+
`pnpm exec hds-prefix --root .`, or
|
|
186
|
+
`node node_modules/@hirobius/design-system/codemods/hds-prefix.mjs --root .`.
|
|
187
|
+
|
|
188
|
+
### Pattern components leave the root
|
|
189
|
+
|
|
190
|
+
The 21 pattern modules are no longer re-exported from the package root (hds#254).
|
|
191
|
+
Six of them (AssetImg, CodeBlock, ErrorPattern, Form, Page, Reveal) export every
|
|
192
|
+
name unchanged on `@hirobius/design-system/patterns`; their names are below. The
|
|
193
|
+
other 15 are removed outright in the same release, from `/patterns` too: their
|
|
194
|
+
names are under [Components removed with no survivor](#components-removed-with-no-survivor-hds394-wave-4a).
|
|
195
|
+
|
|
196
|
+
| Removed from `@hirobius/design-system` | Use instead | Codemod |
|
|
197
|
+
| -------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
198
|
+
| `AssetImg` | `AssetImg` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
199
|
+
| `AssetImgProps` | `AssetImgProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
200
|
+
| `blockCodeTextVariants` | `blockCodeTextVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
201
|
+
| `blockContainerVariants` | `blockContainerVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
202
|
+
| `blockHeaderVariants` | `blockHeaderVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
203
|
+
| `chevronVariants` | `chevronVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
204
|
+
| `CodeBlock` | `CodeBlock` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
205
|
+
| `CodeBlockProps` | `CodeBlockProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
206
|
+
| `collapsibleToggleVariants` | `collapsibleToggleVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
207
|
+
| `copyButtonVariants` | `copyButtonVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
208
|
+
| `ErrorPattern` | `ErrorPattern` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
209
|
+
| `ErrorPatternProps` | `ErrorPatternProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
210
|
+
| `FieldWiring` | `FieldWiring` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
211
|
+
| `FieldWiringInput` | `FieldWiringInput` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
212
|
+
| `Form` | `Form` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
213
|
+
| `FormField` | `FormField` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
214
|
+
| `FormFieldProps` | `FormFieldProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
215
|
+
| `FormFieldShell` | `FormFieldShell` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
216
|
+
| `FormFieldShellProps` | `FormFieldShellProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
217
|
+
| `FormProps` | `FormProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
218
|
+
| `inlineCodeTextVariants` | `inlineCodeTextVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
219
|
+
| `inlineWrapperVariants` | `inlineWrapperVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
220
|
+
| `Page` | `Page` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
221
|
+
| `PageProps` | `PageProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
222
|
+
| `prePanelVariants` | `prePanelVariants` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
223
|
+
| `Reveal` | `Reveal` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
224
|
+
| `RevealAnimation` | `RevealAnimation` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
225
|
+
| `RevealProps` | `RevealProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
226
|
+
| `useFieldWiring` | `useFieldWiring` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
227
|
+
|
|
228
|
+
### `Hds*` aliases
|
|
229
|
+
|
|
230
|
+
The six `Hds`-prefixed spellings (hds#315) are gone; each component is exported
|
|
231
|
+
under its bare name only. The `hds-prefix` codemod (`codemods/hds-prefix.mjs`)
|
|
232
|
+
rewrites the import specifier and nothing else: `import { HdsCheckbox }` becomes
|
|
233
|
+
`import { Checkbox as HdsCheckbox }`, so the file keeps its local name and every
|
|
234
|
+
reference (JSX tags, values, `typeof`, spreads, string keys) still resolves to
|
|
235
|
+
the same component. An existing alias stays (`HdsSelect as Pick` becomes
|
|
236
|
+
`Select as Pick`), `type` modifiers, comments and layout are kept, and a
|
|
237
|
+
re-export keeps its own export name (`export { Toggle as HdsToggle }`). Only
|
|
238
|
+
imports whose source is exactly `@hirobius/design-system` change. Renaming the
|
|
239
|
+
local binding to `Checkbox` afterwards is optional and a manual edit. Running it
|
|
240
|
+
twice changes nothing. It cannot see through `export * from '@hirobius/design-system'`,
|
|
241
|
+
or through a namespace import or a dynamic `import()`, `require()`, `vi.mock` or
|
|
242
|
+
`jest.mock` of the root in a file that reads an alias off something
|
|
243
|
+
(`HDS.HdsSlider`, `m['HdsToggle']`, `const { HdsRadio } = require(…)`);
|
|
244
|
+
`--check` exits 1 and lists those for a manual edit.
|
|
245
|
+
It also lists a file it cannot read to its end, as `hds-patterns-subpath` does.
|
|
246
|
+
|
|
247
|
+
| Removed from `@hirobius/design-system` | Use instead | Codemod |
|
|
248
|
+
| -------------------------------------- | ----------- | ------------------------------------------------------------ |
|
|
249
|
+
| `HdsCheckbox` | `Checkbox` | `npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .` |
|
|
250
|
+
| `HdsRadio` | `Radio` | `npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .` |
|
|
251
|
+
| `HdsSelect` | `Select` | `npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .` |
|
|
252
|
+
| `HdsSlider` | `Slider` | `npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .` |
|
|
253
|
+
| `HdsToggle` | `Toggle` | `npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .` |
|
|
254
|
+
| `HdsTooltip` | `Tooltip` | `npx -p @hirobius/design-system@^0.20.0 hds-prefix --root .` |
|
|
255
|
+
|
|
256
|
+
A consumer app imports `HdsCheckbox` in one file. A read-only dry run on
|
|
257
|
+
2026-10-01 rewrites that import to `Checkbox as HdsCheckbox` and leaves its JSX
|
|
258
|
+
tag as written; no other `Hds*` alias is imported.
|
|
259
|
+
|
|
260
|
+
### Docs and lab components
|
|
261
|
+
|
|
262
|
+
Five components that existed to build the HDS docs and token lab (hds#232,
|
|
263
|
+
deprecated in 0.16) are deleted, source and stories included. No consumer
|
|
264
|
+
imports any of them, so there is no codemod. Their two drawings in the Figma
|
|
265
|
+
staging file were never promoted and leave the promotion list.
|
|
266
|
+
|
|
267
|
+
| Removed from `@hirobius/design-system` | Use instead | Codemod |
|
|
268
|
+
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------- |
|
|
269
|
+
| `CinematicLink` | No replacement; the animated editorial link treatment is dropped. A plain link in body copy is `InlineLink`. | none: no consumer imports it |
|
|
270
|
+
| `CinematicLinkProps` | No replacement; dropped with `CinematicLink`. | none: no consumer imports it |
|
|
271
|
+
| `ComponentInstanceMatrix` | No replacement; the docs-page variant and state specimen matrix is dropped. | none: no consumer imports it |
|
|
272
|
+
| `FoundationSwatch` | No replacement; the colour-token specimen swatch is dropped. | none: no consumer imports it |
|
|
273
|
+
| `FoundationSwatchProps` | No replacement; dropped with `FoundationSwatch`. | none: no consumer imports it |
|
|
274
|
+
| `Sketch` | No replacement; the generative-canvas page shell is dropped. | none: no consumer imports it |
|
|
275
|
+
| `SketchProps` | No replacement; dropped with `Sketch`. | none: no consumer imports it |
|
|
276
|
+
| `Token` | No replacement; the token-path node specimen is dropped. | none: no consumer imports it |
|
|
277
|
+
| `TokenProps` | No replacement; dropped with `Token`. | none: no consumer imports it |
|
|
278
|
+
| `tokenLabelVariants` | No replacement; dropped with `Token`. | none: no consumer imports it |
|
|
279
|
+
| `tokenNodeInlineVariants` | No replacement; dropped with `Token`. | none: no consumer imports it |
|
|
280
|
+
| `tokenShellVariants` | No replacement; dropped with `Token`. | none: no consumer imports it |
|
|
281
|
+
|
|
282
|
+
### Components removed with no survivor (hds#394 wave 4a)
|
|
283
|
+
|
|
284
|
+
Thirty-two components fail hds#389's survival rule and have no replacement in
|
|
285
|
+
HDS (ADR-034 covers the date pickers). None is imported by a consumer: the
|
|
286
|
+
consumer app that imports components has 0 import sites for any of them, and
|
|
287
|
+
the other consumers import only `variables.css` or do not depend on HDS. So
|
|
288
|
+
there is no codemod to run. `hds-patterns-subpath --check` reports a named import or
|
|
289
|
+
re-export of any of these names from the root or from `/patterns` as "removed
|
|
290
|
+
in 0.20.0, no replacement" for a manual edit (the list is
|
|
291
|
+
`codemods/removed-0.20.json`). It reads named imports only: a removed name read
|
|
292
|
+
through a namespace import or a dynamic `import()` is left to the type checker.
|
|
293
|
+
Their stories, manifest specs, Figma disposition rows, Code Connect exemptions
|
|
294
|
+
and staging-promotion entries go with them, and so do the `styles.css` and
|
|
295
|
+
`tokens.css` rules only they used: `.hds-doc-link-card` (DocLinkCard),
|
|
296
|
+
`.hds-stepper-input` (StepperField), `.hds-doc-section-header` and
|
|
297
|
+
`.hds-doc-section-copy-icon` (TextLockup), and `.hds-page-enter` with its
|
|
298
|
+
keyframes (HdsSystemDocLayout). ButtonGroup, ContextMenu and
|
|
299
|
+
HoverCard also leave the curated core set; with Menu, Popover, Tooltip and HdsRouterProvider added (hds#393) it is 43 components.
|
|
300
|
+
|
|
301
|
+
| Removed | From | Use instead | Codemod |
|
|
302
|
+
| --------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
303
|
+
| `activityAvatarVariants` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
304
|
+
| `ActivityEvent` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
305
|
+
| `ActivityFeed` | `/patterns` | No replacement; the activity feed is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
306
|
+
| `ActivityFeedProps` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
307
|
+
| `ActivityStatus` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
308
|
+
| `ActivityTone` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
309
|
+
| `activityToneVariants` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
310
|
+
| `AppShell` | `/patterns` | No replacement; the app shell is dropped. Compose `Sidebar` for a navigation and content split. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
311
|
+
| `AppShellProps` | `/patterns` | No replacement; dropped with `AppShell`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
312
|
+
| `appShellVariants` | `/patterns` | No replacement; dropped with `AppShell`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
313
|
+
| `ButtonGroup` | root | No replacement; the joined button row is dropped. Lay buttons out with `Stack direction="row"`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
314
|
+
| `ButtonGroupProps` | root | No replacement; dropped with `ButtonGroup`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
315
|
+
| `buttonGroupVariants` | root | No replacement; dropped with `ButtonGroup`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
316
|
+
| `Calendar` | `/patterns` | The calendar picker is dropped (ADR-034). Use `Input type="date"`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
317
|
+
| `CalendarProps` | `/patterns` | No replacement; dropped with `Calendar`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
318
|
+
| `Carousel` | `/patterns` | No replacement; the carousel is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
319
|
+
| `carouselControlVariants` | `/patterns` | No replacement; dropped with `Carousel`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
320
|
+
| `CarouselProps` | `/patterns` | No replacement; dropped with `Carousel`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
321
|
+
| `CaseStudyLayout` | root | No replacement; the case-study page template is dropped. Compose `Container` and `Stack`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
322
|
+
| `CaseStudyLayoutProps` | root | No replacement; dropped with `CaseStudyLayout`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
323
|
+
| `cmdkDescriptionVariants` | `/patterns` | No replacement; dropped with `CommandPalette`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
324
|
+
| `cmdkKindBadgeVariants` | `/patterns` | No replacement; dropped with `CommandPalette`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
325
|
+
| `cmdkRowVariants` | `/patterns` | No replacement; dropped with `CommandPalette`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
326
|
+
| `CommandPalette` | `/patterns` | No replacement; the command palette is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
327
|
+
| `CommandPaletteProps` | `/patterns` | No replacement; dropped with `CommandPalette`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
328
|
+
| `ContextMenu` | root | No replacement; the right-click menu is dropped. `Menu` covers a menu behind a visible trigger. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
329
|
+
| `DateInput` | root | The date picker is dropped (ADR-034). Use `Input type="date"`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
330
|
+
| `DateInputProps` | root | No replacement; dropped with `DateInput`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
331
|
+
| `DateRangeInput` | root | The date-range picker is dropped (ADR-034). Use two `Input type="date"` fields. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
332
|
+
| `DateRangeInputProps` | root | No replacement; dropped with `DateRangeInput`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
333
|
+
| `DateTimeInput` | root | The date-and-time picker is dropped (ADR-034). Use `Input type="datetime-local"`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
334
|
+
| `DateTimeInputProps` | root | No replacement; dropped with `DateTimeInput`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
335
|
+
| `defaultActivityEvents` | `/patterns` | No replacement; dropped with `ActivityFeed`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
336
|
+
| `DocLinkCard` | `/patterns` | No replacement; the docs link card is dropped. Compose `Card` and `InlineLink`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
337
|
+
| `DocLinkCardProps` | `/patterns` | No replacement; dropped with `DocLinkCard`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
338
|
+
| `docLinkCardVariants` | `/patterns` | No replacement; dropped with `DocLinkCard`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
339
|
+
| `ErrorBoundary` | root | No replacement; the render-error boundary is dropped. Use a React error boundary of your own with `ErrorPattern` (`/patterns`) as its fallback. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
340
|
+
| `ErrorBoundaryProps` | root | No replacement; dropped with `ErrorBoundary`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
341
|
+
| `FileInput` | `/patterns` | No replacement; the styled file picker is dropped. Use a native `<input type="file">`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
342
|
+
| `FileInputProps` | `/patterns` | No replacement; dropped with `FileInput`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
343
|
+
| `fileInputVariants` | `/patterns` | No replacement; dropped with `FileInput`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
344
|
+
| `HdsDocsShell` | root | No replacement; the docs-site shell (nav and contents rails) is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
345
|
+
| `HdsDocsShellProps` | root | No replacement; dropped with `HdsDocsShell`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
346
|
+
| `HdsSystemDocLayout` | root | No replacement; the docs-page column layout is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
347
|
+
| `HeadingStack` | root | `Stack` + `Text`: a heading `Text` and a `text-muted-foreground` body `Text` in a `Stack gap="gap"` (docs/rules/REACT_COMPONENTS.md). | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
348
|
+
| `headingStackLevelVariants` | root | `Stack` + `Text`: a heading `Text` and a `text-muted-foreground` body `Text` in a `Stack gap="gap"` (docs/rules/REACT_COMPONENTS.md). | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
349
|
+
| `HeadingStackProps` | root | `Stack` + `Text`: a heading `Text` and a `text-muted-foreground` body `Text` in a `Stack gap="gap"` (docs/rules/REACT_COMPONENTS.md). | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
350
|
+
| `headingStackVariants` | root | `Stack` + `Text`: a heading `Text` and a `text-muted-foreground` body `Text` in a `Stack gap="gap"` (docs/rules/REACT_COMPONENTS.md). | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
351
|
+
| `HistoryCard` | root | No replacement; the commit-history card is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
352
|
+
| `HistoryCardCommit` | root | No replacement; dropped with `HistoryCard`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
353
|
+
| `HistoryCardProps` | root | No replacement; dropped with `HistoryCard`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
354
|
+
| `HoverCard` | root | No replacement; the hover preview card is dropped. `Tooltip` covers a short hint, `Popover` richer content. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
355
|
+
| `Lightbox` | `/patterns` | No replacement; the full-screen image viewer is dropped. `AssetImg` stays. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
356
|
+
| `LightboxProps` | `/patterns` | No replacement; dropped with `Lightbox`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
357
|
+
| `NavGroup` | root | No replacement; the collapsible navigation group is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
358
|
+
| `navGroupLabelVariants` | root | No replacement; dropped with `NavGroup`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
359
|
+
| `NavGroupProps` | root | No replacement; dropped with `NavGroup`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
360
|
+
| `navIndicatorVariants` | `/patterns` | No replacement; dropped with `NavItem`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
361
|
+
| `NavItem` | `/patterns` | No replacement; the navigation item is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
362
|
+
| `navItemVariants` | `/patterns` | No replacement; dropped with `NavItem`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
363
|
+
| `NavProps` | `/patterns` | No replacement; dropped with `NavItem`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
364
|
+
| `OverflowList` | `/patterns` | No replacement; the "+N" overflow list is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
365
|
+
| `OverflowListProps` | `/patterns` | No replacement; dropped with `OverflowList`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
366
|
+
| `SideNav` | `/patterns` | No replacement; the side navigation is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
367
|
+
| `SideNavLevel` | `/patterns` | No replacement; dropped with `SideNav`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
368
|
+
| `SideNavProps` | `/patterns` | No replacement; dropped with `SideNav`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
369
|
+
| `sideNavVariants` | `/patterns` | No replacement; dropped with `SideNav`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
370
|
+
| `StackedCardRail` | `/patterns` | No replacement; the pinned card rail is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
371
|
+
| `StackedCardRailCard` | `/patterns` | No replacement; dropped with `StackedCardRail`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
372
|
+
| `StackedCardRailProps` | `/patterns` | No replacement; dropped with `StackedCardRail`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
373
|
+
| `Step` | `/patterns` | No replacement; dropped with `Stepper`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
374
|
+
| `stepMarkerVariants` | `/patterns` | No replacement; dropped with `Stepper`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
375
|
+
| `Stepper` | `/patterns` | No replacement; the step indicator is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
376
|
+
| `StepperField` | root | No replacement; the number stepper is dropped. Use `Input type="number"`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
377
|
+
| `StepperFieldProps` | root | No replacement; dropped with `StepperField`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
378
|
+
| `StepperProps` | `/patterns` | No replacement; dropped with `Stepper`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
379
|
+
| `TextLockup` | root | `Stack` + `Text`: a heading `Text` and a `text-muted-foreground` body `Text` in a `Stack gap="gap"` (docs/rules/REACT_COMPONENTS.md). | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
380
|
+
| `TextLockupProps` | root | `Stack` + `Text`: a heading `Text` and a `text-muted-foreground` body `Text` in a `Stack gap="gap"` (docs/rules/REACT_COMPONENTS.md). | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
381
|
+
| `Tokenizer` | root | No replacement; the token (chip) input is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
382
|
+
| `TokenizerProps` | root | No replacement; dropped with `Tokenizer`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
383
|
+
| `Toolbar` | `/patterns` | No replacement; the toolbar is dropped. A row of buttons is `Stack direction="row"`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
384
|
+
| `ToolbarComponent` | `/patterns` | No replacement; dropped with `Toolbar`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
385
|
+
| `TopNav` | `/patterns` | No replacement; the top navigation bar is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
386
|
+
| `TopNavProps` | `/patterns` | No replacement; dropped with `TopNav`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
387
|
+
| `TreeList` | `/patterns` | No replacement; the tree list is dropped. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
388
|
+
| `TreeListProps` | `/patterns` | No replacement; dropped with `TreeList`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
389
|
+
| `TreeNode` | `/patterns` | No replacement; dropped with `TreeList`. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
390
|
+
|
|
391
|
+
### Components folded into a survivor (hds#394 wave 4b)
|
|
392
|
+
|
|
393
|
+
Thirteen components fold into a survivor that hds#393 shipped, so 0.20.0 removes
|
|
394
|
+
them from the root with their props types. Each row gives the survivor and maps
|
|
395
|
+
every prop; `tests/prune-wave-4b-survivors.test.tsx` renders each recipe. No
|
|
396
|
+
consumer imports any of the thirteen, so there is no rewrite codemod: `hds-patterns-subpath --check` reports a named import of one for a
|
|
397
|
+
manual edit and names its survivor ("removed in 0.20.0, use Button iconOnly
|
|
398
|
+
…", from `replaced` in `codemods/removed-0.20.json`). The layout recipes use
|
|
399
|
+
`Box` with `style`, not `sx`, because `sx` injects its rule on the client only
|
|
400
|
+
and server-rendered HTML would lose the layout. Spacing comes from the token
|
|
401
|
+
bridge (`import hds from '@hirobius/design-system/tokens'`): the old `tight`,
|
|
402
|
+
`normal`, `inset` and `spacious` are `hds.semantic.space.scale.sm`, `.md`,
|
|
403
|
+
`.lg` and `.xl`. Their stories, manifest specs, Figma disposition rows and
|
|
404
|
+
staging-promotion entries go with them.
|
|
405
|
+
|
|
406
|
+
StatusDot is not removed. Badge `dot` takes its `tone`, `size` and `label`, but
|
|
407
|
+
a consumer app passes StatusDot a `style`, and Badge takes no `style` (it is className-only, `check-no-style-prop`), so no
|
|
408
|
+
codemod can rewrite that import mechanically. It is deprecated instead, for
|
|
409
|
+
removal in 0.21.0: see [StatusDot is deprecated](#statusdot-is-deprecated-removed-in-0210-hds395).
|
|
410
|
+
|
|
411
|
+
| Removed | Use instead | Codemod |
|
|
412
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
|
|
413
|
+
| `AspectRatio` | `Box` with `style`: `<Box style={{ aspectRatio: '16 / 9' }}>`. `ratio={r}` becomes `style.aspectRatio` (`String(r)` or `'16 / 9'`). Radix positioned the child absolutely; give it `width: '100%'` and `height: '100%'` instead. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
414
|
+
| `AspectRatioProps` | `BoxProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
415
|
+
| `Bleed` | `Box` with `style`: ``<Box style={{ marginInline: `calc(-1 * ${hds.semantic.space.scale.md})` }}>``. `amount` becomes the scale step it negated (`tight` sm, `normal` md, `inset` lg, `spacious` xl). `axis="x"` (default) is `marginInline`, `"y"` is `marginBlock`, `"both"` is `margin`. `as`, `className` and `style` are Box's. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
416
|
+
| `BleedProps` | `BoxProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
417
|
+
| `Center` | `Container` + `Box`: `<Container maxWidth="content">` with `<Box style={{ paddingInline: hds.semantic.space.scale.md }}>` inside for the gutter. `maxWidth` is the same (Center defaulted to `'content'`, Container defaults to `'max'`: pass it). `gutter` becomes the inner Box's `paddingInline` step. For `as` or `ref`, use one `Box` with `style={{ marginInline: 'auto', maxWidth: 'var(--semantic-layout-width-content)' }}`. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
418
|
+
| `CenterProps` | `ContainerProps` (and `BoxProps` for the gutter) | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
419
|
+
| `CircularProgress` | `<Progress variant="circular">`. `value`, `max`, `size` (sm 16px, md 24px, lg 32px), `tone` and `label` are the same; `indeterminate` becomes leaving `value` out. `label` now defaults to `'Progress'`. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
420
|
+
| `CircularProgressProps` | `ProgressProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
421
|
+
| `Cluster` | `<Stack direction="row" wrap="wrap" align="center">`. `gap` reads the same steps with the same `tight` default. Pass `align` (Cluster defaulted to `center`, a Stack row to `stretch`). `justify`, `as`, `className`, `style` and `ref` are the same. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
422
|
+
| `ClusterProps` | `StackProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
423
|
+
| `Cover` | `Box` with `style`: `<Box style={{ display: 'flex', flexDirection: 'column', minHeight: '100svh', gap: hds.semantic.space.scale.md }}>`, with the main region in `<Box style={{ marginBlock: 'auto', width: '100%' }}>`. `minHeight` and `gap` (as a scale step) move into `style`. `header` and `footer` become a `<Box style={{ flexShrink: 0 }}>` before and after the main region, and `centerSlot` or `children` its content. `Stack direction="column"` with `style={{ minHeight }}` is the same shell. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
424
|
+
| `CoverProps` | `BoxProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
425
|
+
| `Frame` | `Box` with `style`: `<Box style={{ aspectRatio: '16 / 9', overflow: 'hidden', borderRadius: hds.borderRadius.md }}>`. `ratio` becomes `style.aspectRatio`, `radius` becomes `hds.borderRadius.sm`, `.md` (default), `.full` or `[0]` (`none`). Give the media `width: '100%'`, `height: '100%'` and `objectFit: 'cover'`. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
426
|
+
| `FrameProps` | `BoxProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
427
|
+
| `IconButton` | `<Button iconOnly label="…" iconLeft={<Icon icon={X} size="medium" />} />`. `icon` moves into `iconLeft` as an `Icon`, sized `small`, `medium` or `large` for a `sm`, `md` or `lg` button (`iconSize` is the Icon's `size`, `iconColor` its `color`). `label` or `aria-label` becomes `label`, which names the button. `variant`, `size`, `disabled` and the other button props are the same. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
428
|
+
| `IconButtonProps` | `ButtonProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
429
|
+
| `InputGroup` | `<Input prefix={…} suffix={…} />`. `leading` becomes `prefix` and `trailing` `suffix`; `size`, `disabled` and the native input props are the same, and `className` is still the outer wrapper's. Input adds `label`, `helperText` and `errorMessage`. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
430
|
+
| `InputGroupProps` | `InputProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
431
|
+
| `MultiSelector` | `<Combobox multiple options={…} value={…} onChange={…} />`. `options` (`{ value, label }`), `value` (`string[]`), `onChange(next)`, `placeholder`, `disabled` and `className` are the same, and the trigger still reads "N selected". Combobox adds search and a removable chip per value. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
432
|
+
| `MultiSelectorOption` | `ComboboxOption` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
433
|
+
| `MultiSelectorProps` | `ComboboxMultipleProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
434
|
+
| `SelectableCard` | `<Card selectable selected={…} onSelectedChange={…}>`. `selected` and `onSelectedChange` are the same. `disabled` becomes `aria-disabled` with no `onSelectedChange`, since the card is a `div` with `role="checkbox"`, not a `button`. `data-state="checked"` becomes `data-selected="true"`. It toggles on click or Space only: Enter no longer toggles it (the ARIA checkbox pattern uses Space), so code or tests that press Enter must press Space. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
435
|
+
| `SelectableCardProps` | `CardProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
436
|
+
| `TimeInput` | `<Input type="time" />`. `size`, `value` (`HH:mm`), `onChange`, `min`, `max`, `step` and the other native props are the same, and like TimeInput it shows no clear button. Input adds `label`, `helperText` and `errorMessage`. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
437
|
+
| `TimeInputProps` | `InputProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
438
|
+
| `ToggleButton` | `<Button pressed={…} onPressedChange={…}>`. `pressed`, `defaultPressed`, `onPressedChange`, `size`, `disabled` and `aria-label` are the same, as is `variant="secondary"`; `variant="ghost"` becomes `variant="tertiary"`. `data-state="on"` becomes `data-pressed="true"`. | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
439
|
+
| `ToggleButtonProps` | `ButtonProps` | none: no consumer imports it; `hds-patterns-subpath --check` names the survivor |
|
|
440
|
+
|
|
441
|
+
### Components a consumer renders, each with a codemod (hds#395 B5)
|
|
442
|
+
|
|
443
|
+
A consumer app imports three names in hds#389's prune set: NotFoundPattern,
|
|
444
|
+
TileGrid and StatusTile. Under the decision update a name a consumer imports
|
|
445
|
+
goes in 0.20.0 once a codemod rewrites every site it has, so each has one:
|
|
446
|
+
|
|
447
|
+
- **NotFoundPattern** took no props and rendered
|
|
448
|
+
`<ErrorPattern displayText="404" message="Page not found" />`. The
|
|
449
|
+
`hds-not-found-pattern` codemod (`codemods/not-found-pattern.mjs`) writes that
|
|
450
|
+
element in its place and imports ErrorPattern from `/patterns`. It joins an
|
|
451
|
+
existing `/patterns` import, reuses an ErrorPattern the file already
|
|
452
|
+
imports, and keeps an alias as the file's name (`NotFoundPattern as Missing`
|
|
453
|
+
becomes `ErrorPattern as Missing`). Attributes the tag already has (`key`)
|
|
454
|
+
stay. A spread, or a `displayText` or `message` NotFoundPattern ignored, is
|
|
455
|
+
left for a manual edit.
|
|
456
|
+
- **TileGrid** folds into `Grid`, which renders its recipe since hds#393:
|
|
457
|
+
`<TileGrid minTileWidth="280px">` becomes
|
|
458
|
+
`<Grid layout="auto-fill" minItemWidth="280px" gap="medium">`. TileGrid's
|
|
459
|
+
`gap="sm"` (12px, its default) is Grid's fixed 12px `medium` step, and
|
|
460
|
+
TileGrid's 260px default width is written out because Grid defaults to
|
|
461
|
+
280px. An expression width that can be undefined keeps that fallback:
|
|
462
|
+
`minTileWidth={w}` becomes `minItemWidth={w ?? '260px'}`. One that never is
|
|
463
|
+
(a string or template literal, or a conditional whose branches all are) is
|
|
464
|
+
written through as it is, since TypeScript rejects `??` on it (TS2869), and
|
|
465
|
+
one the codemod does not read (a concatenation, a cast) is left for a manual
|
|
466
|
+
edit. The `hds-tile-grid` codemod
|
|
467
|
+
(`codemods/tile-grid.mjs`) makes the rewrite, and the rendered tracks and
|
|
468
|
+
gap are the same as TileGrid's under every tenant and density
|
|
469
|
+
(`scripts/__tests__/grid-tile-grid-parity.test.mjs`, in Chromium, for each
|
|
470
|
+
tag that consumer renders). It leaves for a manual edit `gap="xs"` and `gap="md"`: TileGrid
|
|
471
|
+
fixed them at 8px and 16px, and Grid's nearest steps, `tight` and `normal`,
|
|
472
|
+
tighten to 6px and 12px under compact density. It does the same for a gap
|
|
473
|
+
or spread it cannot read, a self-closing tag (Grid needs children) and an
|
|
474
|
+
import of `TileGridProps`.
|
|
475
|
+
- **StatusTile** is not removed. It leaves the root for `/patterns`
|
|
476
|
+
(hds#389 D5), with `StatusTileProps` and `StatusTileTone`, and
|
|
477
|
+
`hds-patterns-subpath` moves the import like any other `/patterns` name.
|
|
478
|
+
|
|
479
|
+
Both new codemods keep comments and layout, change only imports whose source
|
|
480
|
+
is exactly `@hirobius/design-system`, and change nothing on a second run. A
|
|
481
|
+
file with any use they cannot rewrite (`typeof TileGrid`, a value use, a
|
|
482
|
+
re-export, a namespace or dynamic import that reads the name, or a file they
|
|
483
|
+
cannot read to its end) is left as written, and `--check` exits 1 and lists
|
|
484
|
+
it. That includes JSX text with the bare name in it
|
|
485
|
+
(`<p>Use a TileGrid here</p>`): the codemods read JSX text as code, so they
|
|
486
|
+
stop rather than guess; reword the text or rewrite the file by hand. Their
|
|
487
|
+
stories, manifest specs and Figma disposition rows go with them.
|
|
488
|
+
|
|
489
|
+
| Removed from `@hirobius/design-system` | Use instead | Codemod |
|
|
490
|
+
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
491
|
+
| `NotFoundPattern` | `<ErrorPattern displayText="404" message="Page not found" />` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-not-found-pattern --root .` |
|
|
492
|
+
| `TileGrid` | `<Grid layout="auto-fill" minItemWidth="…" gap="medium">` (`minTileWidth` is `minItemWidth`, 260px when unset; `gap="sm"` is `"medium"`) | `npx -p @hirobius/design-system@^0.20.0 hds-tile-grid --root .` |
|
|
493
|
+
| `TileGridProps` | `GridProps` | none: the codemod lists an import of it for a manual edit; no consumer imports it |
|
|
494
|
+
| `StatusTile` | `StatusTile` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
495
|
+
| `StatusTileProps` | `StatusTileProps` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
496
|
+
| `StatusTileTone` | `StatusTileTone` from `@hirobius/design-system/patterns` | `npx -p @hirobius/design-system@^0.20.0 hds-patterns-subpath --root .` |
|
|
497
|
+
|
|
498
|
+
A read-only dry run on 2026-10-01 in that consumer app rewrites:
|
|
499
|
+
`hds-not-found-pattern` 1 file, 1 site; `hds-tile-grid` 2 files, 7 sites (6
|
|
500
|
+
and 1). `hds-patterns-subpath` now moves 12 import sites in the same 11 files:
|
|
501
|
+
one file imports StatusTile in a second statement, next to the one that imports
|
|
502
|
+
Page. With `hds-prefix` that is 14 files, and each codemod's `--check` exits 0
|
|
503
|
+
after the run.
|
|
504
|
+
|
|
505
|
+
### StatusDot is deprecated (removed in 0.21.0, hds#395)
|
|
506
|
+
|
|
507
|
+
StatusDot stays in 0.20.0 and is deprecated: its JSDoc and StatusDotProps'
|
|
508
|
+
carry `@deprecated` with `@removeIn 0.21.0`, so an editor strikes both
|
|
509
|
+
through, and in a development build it logs one `[HDS deprecation]` console
|
|
510
|
+
warning. Its survivor is `<Badge dot>`: `tone` (all
|
|
511
|
+
six), `size` (`sm`, `md` by default, `lg`) and `label` (a `role="status"` with
|
|
512
|
+
that `aria-label`; decorative without one) are the same, and so is the dot.
|
|
513
|
+
|
|
514
|
+
| Deprecated | Use instead | Codemod |
|
|
515
|
+
| ---------------- | --------------------------------------------- | ------------------------------------------------------------ |
|
|
516
|
+
| `StatusDot` | `<Badge dot tone={…} size={…} label={…} />` | none: a `style` has no Badge mapping, so the edit is by hand |
|
|
517
|
+
| `StatusDotProps` | `BadgeProps` (`dot`, `tone`, `size`, `label`) | none |
|
|
518
|
+
|
|
519
|
+
There is no codemod because Badge takes no `style` (it is className-only,
|
|
520
|
+
`check-no-style-prop`), and a consumer app passes StatusDot one:
|
|
521
|
+
`<StatusDot tone={stateTone(row.state)} style={s.dot} />`, where `s.dot` is
|
|
522
|
+
`{ marginTop: hds.space.px8 }`. Before 0.21.0 it first replaces `style={…}`
|
|
523
|
+
with a wrapper or a `className`, then swaps the component:
|
|
524
|
+
|
|
525
|
+
```tsx
|
|
526
|
+
// A wrapper. display: flex makes it the dot's height, not a line box's.
|
|
527
|
+
<span style={{ display: 'flex', ...s.dot }}>
|
|
528
|
+
<Badge dot tone={stateTone(row.state)} />
|
|
529
|
+
</span>
|
|
530
|
+
|
|
531
|
+
// Or a class the app owns.
|
|
532
|
+
<Badge dot tone={stateTone(row.state)} className="fleet-audit-dot" />
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### Root `*Variants` helpers become private (hds#394)
|
|
536
|
+
|
|
537
|
+
The root no longer exports any `*Variants` cva helper. Each one still styles
|
|
538
|
+
its own component inside the package; it is just not public API any more, so a
|
|
539
|
+
component's look changes only through its props. No consumer imports one. `hds-patterns-subpath --check` reports an import of one
|
|
540
|
+
for a manual edit. The `/patterns` modules keep their exports, `*Variants`
|
|
541
|
+
included. The helpers of the removed components above are listed in that table.
|
|
542
|
+
|
|
543
|
+
| Removed from `@hirobius/design-system` | Module | Use instead | Codemod |
|
|
544
|
+
| -------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
545
|
+
| `badgeVariants` | `badge` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
546
|
+
| `blockquoteVariants` | `blockquote` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
547
|
+
| `buttonVariants` | `button` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
548
|
+
| `cardVariants` | `card` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
549
|
+
| `circularProgressVariants` | `circular-progress` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
550
|
+
| `crumbLabelVariants` | `breadcrumb` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
551
|
+
| `disclosureTriggerVariants` | `disclosure` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
552
|
+
| `fieldValueVariants` | `field` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
553
|
+
| `hdsTimeInputVariants` | `time-input` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
554
|
+
| `hdsToggleButtonVariants` | `toggle-button` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
555
|
+
| `inlineCodeVariants` | `inline-code` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
556
|
+
| `inputVariants` | `input` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
557
|
+
| `kbdVariants` | `kbd` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
558
|
+
| `metadataListVariants` | `metadata-list` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
559
|
+
| `overflowBubbleVariants` | `avatar-group` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
560
|
+
| `progressTrackVariants` | `progress` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
561
|
+
| `segmentedControlDescriptionVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
562
|
+
| `segmentedControlFocusRingVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
563
|
+
| `segmentedControlIndicatorVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
564
|
+
| `segmentedControlItemVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
565
|
+
| `segmentedControlLabelVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
566
|
+
| `segmentedControlRailVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
567
|
+
| `segmentedControlWrapperVariants` | `segmented-control` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
568
|
+
| `selectableCardVariants` | `selectable-card` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
569
|
+
| `skeletonVariants` | `skeleton` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
570
|
+
| `spinnerVariants` | `spinner` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
571
|
+
| `statusDotVariants` | `status-dot` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
572
|
+
| `statusListItemDotVariants` | `status-list-item` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
573
|
+
| `statVariants` | `stat` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
574
|
+
| `surfaceVariants` | `surface` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
575
|
+
| `tableDataCellVariants` | `table` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
576
|
+
| `tableHeaderCellVariants` | `table` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
577
|
+
| `tableSortButtonVariants` | `table` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
578
|
+
| `tagButtonVariants` | `tag` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
579
|
+
| `tagPillVariants` | `tag` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
580
|
+
| `textareaVariants` | `textarea` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
581
|
+
| `textVariants` | `text` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
582
|
+
| `toastIconVariants` | `toast` | No replacement; the cva helper is private to its module. Style through the component's props. | none: no consumer imports it; `hds-patterns-subpath --check` reports an import |
|
|
583
|
+
|
|
584
|
+
## 0.21.0 removals (2026-10-07)
|
|
585
|
+
|
|
586
|
+
ADR-014's 2026-10-08 amendment (hds#465) lets a removal ship with a manual step
|
|
587
|
+
when the upgrade command can find every use. StatusDot is the first.
|
|
588
|
+
|
|
589
|
+
### StatusDot (hds#465)
|
|
590
|
+
|
|
591
|
+
StatusDot and StatusDotProps were deprecated in 0.20.0 with `@removeIn 0.21.0`
|
|
592
|
+
(see [StatusDot is deprecated](#statusdot-is-deprecated-removed-in-0210-hds395)).
|
|
593
|
+
Both are gone from the package root. The last consumer app that used them
|
|
594
|
+
swaps them for Badge in its own repository.
|
|
595
|
+
|
|
596
|
+
| Removed | Use instead | Codemod |
|
|
597
|
+
| ---------------- | --------------------------------------------- | ------------------------------------------------------------ |
|
|
598
|
+
| `StatusDot` | `<Badge dot tone={…} size={…} label={…} />` | none: a `style` has no Badge mapping, so the edit is by hand |
|
|
599
|
+
| `StatusDotProps` | `BadgeProps` (`dot`, `tone`, `size`, `label`) | none |
|
|
600
|
+
|
|
601
|
+
From 0.22.0, `npx @hirobius/design-system@latest upgrade` finds each use by
|
|
602
|
+
import and by JSX tag. Move any `style` to a wrapper or a `className` first,
|
|
603
|
+
as the 0.20.0 section shows.
|