@adia-ai/web-components 0.8.42 → 0.8.43
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/CHANGELOG.md +14 -0
- package/MIGRATION.md +130 -80
- package/USAGE.md +1 -1
- package/color/index.js +1 -1
- package/components/action-list/action-item.a2ui.json +3 -8
- package/components/action-list/action-item.yaml +10 -16
- package/components/action-list/action-list.class.js +5 -61
- package/components/action-list/action-list.d.ts +1 -3
- package/components/button/button.yaml +1 -1
- package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
- package/components/calendar-picker/calendar-picker.class.js +2 -3
- package/components/calendar-picker/calendar-picker.css +16 -18
- package/components/calendar-picker/calendar-picker.yaml +2 -2
- package/components/card/card.css +3 -3
- package/components/chart/chart.a2ui.json +3 -18
- package/components/chart/chart.class.js +4 -44
- package/components/chart/chart.d.ts +3 -9
- package/components/chart/chart.yaml +6 -31
- package/components/chart-legend/chart-legend.a2ui.json +3 -12
- package/components/chart-legend/chart-legend.class.js +10 -54
- package/components/chart-legend/chart-legend.d.ts +1 -3
- package/components/chart-legend/chart-legend.yaml +9 -19
- package/components/check/check.css +9 -0
- package/components/color-area/color-area.a2ui.json +1 -1
- package/components/color-area/color-area.class.js +2 -2
- package/components/color-area/color-area.css +4 -7
- package/components/color-area/color-area.d.ts +1 -1
- package/components/color-area/color-area.yaml +3 -3
- package/components/color-input/color-input.a2ui.json +1 -1
- package/components/color-input/color-input.class.js +1 -1
- package/components/color-input/color-input.yaml +2 -2
- package/components/drilldown/drilldown.a2ui.json +3 -0
- package/components/drilldown/drilldown.css +8 -1
- package/components/drilldown/drilldown.yaml +2 -0
- package/components/field/field.class.js +5 -5
- package/components/index.js +0 -4
- package/components/input/input.a2ui.json +4 -4
- package/components/input/input.class.js +8 -0
- package/components/input/input.css +6 -0
- package/components/input/input.yaml +11 -8
- package/components/menu/menu-item.a2ui.json +3 -8
- package/components/menu/menu-item.yaml +13 -21
- package/components/menu/menu.class.js +5 -27
- package/components/menu/menu.d.ts +1 -3
- package/components/pane/pane.a2ui.json +2 -12
- package/components/pane/pane.class.js +5 -30
- package/components/pane/pane.d.ts +3 -5
- package/components/pane/pane.yaml +7 -19
- package/components/progress/progress.a2ui.json +1 -1
- package/components/progress/progress.class.js +2 -2
- package/components/progress/progress.d.ts +1 -1
- package/components/progress/progress.yaml +2 -2
- package/components/radio/radio.css +7 -0
- package/components/search/search.css +10 -1
- package/components/segment/segment.a2ui.json +1 -2
- package/components/segment/segment.css +10 -0
- package/components/segment/segment.yaml +1 -2
- package/components/segmented/segmented.a2ui.json +1 -3
- package/components/segmented/segmented.class.js +2 -2
- package/components/segmented/segmented.yaml +2 -4
- package/components/select/select.css +6 -0
- package/components/step-progress/step-progress.yaml +1 -1
- package/components/switch/switch.css +8 -0
- package/components/table-toolbar/table-toolbar.a2ui.json +42 -1
- package/components/table-toolbar/table-toolbar.class.js +151 -11
- package/components/table-toolbar/table-toolbar.css +46 -0
- package/components/table-toolbar/table-toolbar.d.ts +13 -1
- package/components/table-toolbar/table-toolbar.yaml +104 -14
- package/components/textarea/textarea.css +4 -0
- package/components/time-picker/time-picker.yaml +3 -2
- package/components/tree/tree.yaml +1 -1
- package/components/upload/upload.class.js +16 -0
- package/components/upload/upload.d.ts +7 -0
- package/components/upload/upload.yaml +7 -3
- package/core/icons.js +2 -5
- package/custom-elements.json +101 -597
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/theme-provider.min.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +92 -89
- package/dist/web-components.sheet.js +1 -1
- package/index.d.ts +0 -15
- package/package.json +1 -1
- package/patterns/chart-in-card/chart-in-card.examples.html +10 -10
- package/patterns/conversion-funnel/conversion-funnel.html +2 -2
- package/patterns/editor-shell/editor-shell.examples.html +3 -3
- package/styles/colors/semantics/features.css +8 -1
- package/styles/components.css +0 -4
- package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -1
- package/traits/resize-observer/resize-observer.js +1 -1
- package/components/color-picker/color-picker.a2ui.json +0 -148
- package/components/color-picker/color-picker.class.js +0 -46
- package/components/color-picker/color-picker.css +0 -14
- package/components/color-picker/color-picker.d.ts +0 -99
- package/components/color-picker/color-picker.examples.md +0 -19
- package/components/color-picker/color-picker.js +0 -17
- package/components/color-picker/color-picker.yaml +0 -175
- package/components/datetime-picker/datetime-picker.a2ui.json +0 -256
- package/components/datetime-picker/datetime-picker.class.js +0 -58
- package/components/datetime-picker/datetime-picker.css +0 -11
- package/components/datetime-picker/datetime-picker.d.ts +0 -87
- package/components/datetime-picker/datetime-picker.examples.md +0 -25
- package/components/datetime-picker/datetime-picker.js +0 -17
- package/components/datetime-picker/datetime-picker.yaml +0 -254
- package/components/progress-row/progress-row.a2ui.json +0 -107
- package/components/progress-row/progress-row.class.js +0 -118
- package/components/progress-row/progress-row.css +0 -60
- package/components/progress-row/progress-row.d.ts +0 -24
- package/components/progress-row/progress-row.examples.md +0 -7
- package/components/progress-row/progress-row.js +0 -17
- package/components/progress-row/progress-row.yaml +0 -85
- package/components/toggle-group/toggle-group.a2ui.json +0 -148
- package/components/toggle-group/toggle-group.class.js +0 -195
- package/components/toggle-group/toggle-group.css +0 -127
- package/components/toggle-group/toggle-group.d.ts +0 -50
- package/components/toggle-group/toggle-group.examples.md +0 -33
- package/components/toggle-group/toggle-group.js +0 -18
- package/components/toggle-group/toggle-group.yaml +0 -135
- package/components/toggle-group/toggle-option.a2ui.json +0 -86
- package/components/toggle-group/toggle-option.yaml +0 -75
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog — @adia-ai/web-components
|
|
2
2
|
|
|
3
|
+
## [0.8.43] — 2026-08-18
|
|
4
|
+
|
|
5
|
+
### Removed
|
|
6
|
+
- **BREAKING — ADR-0063 attribute-grammar addendum cuts: `chart-ui[hide-average|hide-grid|hide-values]`, `chart-legend-ui[static]`, `pane-ui[side]`, `menu-item-ui[subtitle]` prop, and the `color-picker-ui` tag (gh#1617, gh#1377/gh#1563).** Each 0.8.42 dual-read compat shim is removed outright — the deprecated old spellings are now inert (no property, no mirroring, no console warning): `chart-ui` keeps only `no-average`/`no-grid`/`no-values`; `chart-legend-ui` keeps only `interactive` (default still `true` — the ADR's own default-inversion consumer-scan remains a separate follow-up); `pane-ui` keeps only `edge`; `menu-item-ui` keeps only the `description` prop (its `subtitle` SLOT is unchanged); `color-picker-ui`/`ColorPicker`/`UIColorPicker` no longer resolve at all — `color-area-ui`/`ColorArea`/`UIColorArea` is the sole tag/component/class. Operator ruling on gh#1562 (IDR-0004 deviation) lifted all 0.9.0-parked breaking cuts onto this 0.8.43 wave. See `.claude/docs/MIGRATION GUIDE.md` § Shipped in `0.8.43` — ADR-0063 attribute-grammar addendum.
|
|
7
|
+
- **BREAKING — `action-item-ui[subtitle]` prop cut (gh#1617, gh#1571).** `[description]` is the sole prop now; the `subtitle` SLOT is unchanged. Closes the gap PR #1569 flagged once `menu-item-ui` converged onto `description`. See `.claude/docs/MIGRATION GUIDE.md` § Shipped in `0.8.43` — `action-item-ui[description]` ADR-0063 convergence.
|
|
8
|
+
- **BREAKING — three 0.8.41-era deprecated components removed outright: `toggle-group-ui`/`toggle-option-ui`, `progress-row-ui`, `datetime-picker-ui` (gh#1617).** Each shipped its `status: deprecated` soft-deprecation additively in 0.8.41 with a one-time `console.warn`, behavior unchanged; all three are now removed — none of the three tags register as custom elements anymore. Migrate `<toggle-group-ui value>` + `<toggle-option-ui>` children → `<segmented-ui multiple value>` + `<segment-ui>` children (`<toggle-group-ui single>` → plain `<segmented-ui>`); `<progress-row-ui label value meta>` → `<progress-ui label value meta>` (mechanical tag rename); `<datetime-picker-ui>` → `<calendar-picker-ui precision="minute">`. Each alias's successor shipped in 0.8.41, one full release (0.8.42) before this cut — the maturity guard the ticket required. See `.claude/docs/MIGRATION GUIDE.md` § Shipped in `0.8.43` — three 0.8.41-era deprecated components removed.
|
|
9
|
+
|
|
10
|
+
### Maintenance
|
|
11
|
+
- **`core/` touched in this release window** (1 file(s), e.g. `core/icons.js`) — carried by the entries above.
|
|
12
|
+
- **`dist/` bundles rebuilt** in this cut's window (6 file(s)) — regenerated from the source changes described above, not independent edits.
|
|
13
|
+
- **`patterns/` touched in this release window** (3 file(s), e.g. `chart-in-card/chart-in-card.examples.html`) — carried by the entries above.
|
|
14
|
+
- **`styles/` touched in this release window** (2 file(s), e.g. `semantics/features.css`) — carried by the entries above.
|
|
15
|
+
- **`traits/` touched in this release window** (2 file(s), e.g. `arrow-grid-nav/arrow-grid-nav.js`) — carried by the entries above.
|
|
16
|
+
|
|
3
17
|
## [0.8.42] — 2026-08-17
|
|
4
18
|
|
|
5
19
|
### Added
|
package/MIGRATION.md
CHANGED
|
@@ -64,7 +64,7 @@ Version cuts and migration scope:
|
|
|
64
64
|
|
|
65
65
|
- **Shipped in `0.8.41` (`progress-ui` retires `variant`, gh#1370)** — **BREAKING, no deprecation alias:** `<progress-ui>`'s `variant` prop (`bar` | `spinner`) is removed — progress is bar-only now. The former `variant="spinner"` render mode (a Sanctioned Mode Attribute per the component-token-contract) is gone; `<spinner-ui>` owns circular loading indicators (`arc`/`ring`/`dots`/`knight`). Migration: `<progress-ui variant="spinner">` → `<spinner-ui>` (pick the closest `variant`; `arc` is the nearest visual match to the old spinner render). `<progress-ui variant="bar">` → drop the attribute (bar was already the default). Filed from the catalog-regularity audit's C2 finding (gh#1363) — a 2026-06 merge folded a standalone spinner into progress as `variant="spinner"`, then a richer standalone `spinner-ui` was re-added later, leaving two circular-loading answers in the catalog; this rider un-forks them. See [§ Shipped in `0.8.41` — `progress-ui` retires `variant`](#upcoming--progress-ui-retires-variant-090-gh1370).
|
|
66
66
|
|
|
67
|
-
- **Shipped in `0.8.41` (`input-ui` trims `type` enum, gh#1381)** — **BREAKING, no deprecation alias:** `<input-ui>`'s `type` enum drops `search`/`date`/`datetime-local`/`time`/`month`/`week`/`color` — none ever rendered a native affordance (all seven fell back to a plain contenteditable surface), so the enum was first-pass-VALID but functionally broken generation output. The implemented set is now exactly `text`/`email`/`password`/`number`/`tel`/`url`. Migration: `type="search"` → `<search-ui>`; `type="date"`/`"month"`/`"week"` → `<calendar-picker-ui>` (day granularity only — no dedicated month/week primitive exists); `type="datetime-local"` → `<datetime-picker-ui
|
|
67
|
+
- **Shipped in `0.8.41` (`input-ui` trims `type` enum, gh#1381)** — **BREAKING, no deprecation alias:** `<input-ui>`'s `type` enum drops `search`/`date`/`datetime-local`/`time`/`month`/`week`/`color` — none ever rendered a native affordance (all seven fell back to a plain contenteditable surface), so the enum was first-pass-VALID but functionally broken generation output. The implemented set is now exactly `text`/`email`/`password`/`number`/`tel`/`url`. Migration: `type="search"` → `<search-ui>`; `type="date"`/`"month"`/`"week"` → `<calendar-picker-ui>` (day granularity only — no dedicated month/week primitive exists); `type="datetime-local"` → `<calendar-picker-ui precision="minute">` (`<datetime-picker-ui>` was cut in 0.8.43, gh#1617); `type="time"` → `<time-picker-ui>`; `type="color"` → `<color-input-ui>` (or `<color-area-ui>` directly for a full-surface editor — `<color-picker-ui>` was likewise cut in 0.8.43, gh#1617). Filed from the catalog-regularity audit's B10 finding (gh#1363). See [§ Shipped in `0.8.41` — `input-ui` trims `type` enum](#upcoming--input-ui-trims-type-enum-090-gh1381).
|
|
68
68
|
|
|
69
69
|
- **Shipped in `0.8.41` (web-modules `data-*` state converges to bare attributes, gh#1332)** — **BREAKING, no deprecation alias:** two web-modules' declared `states:` entries drop a private `data-*` stamp for a bare state attribute, per the data-* usage sweep's Category A disposition (ADR-0056's rule generalized past `toggle-option-ui`). `<integrations-page-ui>`'s `empty-search`/`empty-data` states (was `data-empty-search`/`data-empty-data`) and `<onboarding-checklist-ui>`'s `complete` state (was `data-complete`) now match their own sibling states' existing bare-attribute convention (`loading`, `collapsed`). Migration: any `[data-empty-search]`/`[data-empty-data]`/`[data-complete]` CSS or script targeting these two modules moves to `[empty-search]`/`[empty-data]`/`[complete]`. See [§ Shipped in `0.8.41` — web-modules data-* state converges to bare attributes](#upcoming--web-modules-data--state-converges-to-bare-attributes-090-gh1332).
|
|
70
70
|
|
|
@@ -82,11 +82,13 @@ Version cuts and migration scope:
|
|
|
82
82
|
|
|
83
83
|
- **Shipped in `0.8.41` (`image-ui` load/error states declared + converge to bare attributes, gh#1464)** — **BREAKING, no deprecation alias.** The final residue of the [data-* usage sweep](https://github.com/adiahealth/gen-ui-kit/issues/1332), deferred out of the residual round above because it needed a new `states:` declaration rather than a bare mapping change: `<image-ui>`'s `[data-loaded]`/`[data-error]` were genuine undeclared host-level state (never yaml-declared at all) — now declared as `loaded`/`error` in `image.yaml`'s `states:` list with bare `attribute:` mappings, matching qr-code-ui's own converged `error` state. Migration: any `[data-loaded]`/`[data-error]` CSS or script targeting `image-ui` moves to `[loaded]`/`[error]`; `image-ui`'s unrelated `[data-overlay]` skeleton-proximity marker (gh#1362) is untouched. A repo-wide consumer sweep (`rg -nU 'data-loaded|data-error'`) found zero external consumers of image-ui's forms specifically, so no deprecation alias was kept. The same ticket also dispositioned the `data-msg-*` validation-message config family (`data-msg-required`/`pattern`/`minlength`/`maxlength`/`min`/`max`/`bad-input`) as **exempt, non-breaking, no migration** — it stays `data-*` by design (component-side config read by `core/form.js`'s shared mixin across 7+ components, not host-reflected state; see `primitive-authoring/references/yaml-contract.md`'s new `data-msg-*` section for the full rationale). See [§ Shipped in `0.8.41` — image-ui load/error states declared + converge to bare attributes](#upcoming--image-ui-loaderror-states-declared--converge-to-bare-attributes-090-gh1464).
|
|
84
84
|
|
|
85
|
-
- **
|
|
85
|
+
- **Shipped in `0.8.43` (rename wave — `data-grid` / `data-resize`, docs/ops/plan/plan-090-rename-wave.md)** — **BREAKING, no deprecation alias — the 0.8.x dual-read compat shim (gh#1560/gh#1561) is removed.** `admin-shell`'s consumer-authored 2/3-column content-layout helper `[data-grid]` / `[data-grid="3"]` is renamed to `[data-layout-grid]` / `[data-layout-grid="3"]` (sits with the `data-col`/`data-row`/`data-actions`/`data-spacer` form-layout-helper family it belongs to, outside every trait-owned root). The author-supplied drag-handle child of `<admin-sidebar>`/`<chat-sidebar>`/`<editor-sidebar>` `[data-resize]` is renamed to `[data-sidebar-resize]` (owner-scoped to the `*-sidebar` composite family, outside resize-observer's grandfathered `resize` root). Both attributes decorate plain light-DOM children the shells don't own (not a trait/component API), so only the name changed. **The old names no longer resolve:** `[data-resize]` now falls through to `<admin-sidebar>`'s existing "no handle found" author warning (the correct post-cut behavior, no new code needed — `<chat-sidebar>` has no such warning and is silently unhandled) and `[data-grid]` simply no longer matches any CSS rule. `adia-lint`'s SHELL-RESIZE rule now requires `[data-sidebar-resize]` only; its transition-window `DEPRECATED-LAYOUT-NAME` advisory is retired with the window it existed for. `KNOWN_GRAZING_PAIRS` (`scripts/build/traits-catalog.mjs`) drops both entries — 2 → 0, and `verify:traits` now fails hard on any NEW overlap with either old name. Migration (mechanical): `git grep -l 'data-resize' | xargs perl -pi -e 's/\bdata-resize\b(?!-)/data-sidebar-resize/g'` and `git grep -l 'data-grid' | xargs perl -pi -e 's/\bdata-grid\b(?!-)/data-layout-grid/g'` (negative lookahead protects trait-owned `data-resize-*`/`data-grid-*` names — unrelated grandfathered attributes, e.g. resize-observer's `data-resize-width`/`data-resize-observer-observed` and arrow-grid-nav's `data-grid-columns`/`mode`/`active-row`/`active-col`, which this wave never touches). Shipped: gh#1560 (W1 shim) → gh#1561 (W2 in-repo consumer + docs migration) → gh#1562 (W3, this cut). **Deviates from release invariant 7 / IDR-0004** (breaking removals never ship in a patch) — operator ruling 2026-08-18 on gh#1562 moved this 0.9.0-parked cut into the `0.8.43` window ("whatever items are waiting for 0.9.0 should use 0.8.43"), the same recorded-deviation pattern as the `0.8.41` cut. Disjoint from, and coordinated with, gh#1377/gh#1563's ADR-0063 rename set (chart `hide-*`, `pane[side]`, `color-picker-ui` → `color-area-ui`, `menu-item-ui[subtitle]`) and gh#1617's own 0.8.43 breaking-wave build — separate PRs, no file overlap.
|
|
86
86
|
|
|
87
|
-
- **
|
|
87
|
+
- **Shipped in `0.8.43` (ADR-0063 attribute-grammar addendum — chart `no-*`, `chart-legend[interactive]`, `pane[edge]`, `color-area-ui`, `menu-item[description]`, gh#1377/gh#1563/gh#1617)** — **BREAKING.** The 0.8.42 additive dual-read compat shims are removed per the operator ruling on gh#1562 (IDR-0004 deviation) lifting all 0.9.0-parked breaking cuts onto 0.8.43. Five identifiers now resolve to ADR-0063's ratified spellings ONLY: `chart-ui[hideAverage|hideGrid|hideValues]` → `[noAverage|noGrid|noValues]`; `chart-legend-ui[static]` → `[interactive]` (default still NOT flipped — that inversion remains its own unscoped follow-up); `pane-ui[side]` → `[edge]`; `menu-item-ui[subtitle]` prop → `[description]` prop (the `subtitle` SLOT is unchanged); and `color-picker-ui`/`ColorPicker`/`UIColorPicker` are removed outright — `color-area-ui`/`ColorArea`/`UIColorArea` is the sole tag/component/class. Every old name/tag is now inert (no property, no dual-read, no warning). Filed from the catalog-regularity audit's B2/B3/B5/B11 findings (gh#1363) via [ADR-0063](../../docs/ops/adr/adr-0063-attribute-grammar-addendum.md). **Rejected/deferred:** `chart-legend-ui[interactive]`'s default-inversion to `false` (its own consumer-scan requirement is unmet); `drilldown-ui[static]`, `alert-ui[dismissible]`, `card-ui[outline]`, `agent-reasoning-ui[status]`, `noodles-ui[port-size]`/`[show-ports]` cleanup (separately-scoped follow-ups). See [§ Shipped in `0.8.43` — ADR-0063 attribute-grammar addendum](#upcoming--adr-0063-attribute-grammar-addendum-chart-no--chart-legendinteractive-paneedge-color-area-ui-menu-itemdescription-090-gh1377gh1563).
|
|
88
88
|
|
|
89
|
-
- **
|
|
89
|
+
- **Shipped in `0.8.43` (ADR-0063 convergence — `action-item-ui[description]`, gh#1571/gh#1617)** — **BREAKING.** `action-item-ui[subtitle]` prop is removed — `[description]` is the sole prop now (the `subtitle` **slot** is unchanged, exactly like `menu-item-ui`'s own gh#1563 shape). Closes the gap PR #1569 flagged as a follow-up once `menu-item-ui` converged onto `description`. See [§ Shipped in `0.8.43` — `action-item-ui[description]` ADR-0063 convergence](#upcoming--action-item-uidescription-adr-0063-convergence-090-gh1571).
|
|
90
|
+
|
|
91
|
+
- **Shipped in `0.8.43` (three 0.8.41-era deprecated components removed — `toggle-group-ui`/`toggle-option-ui`, `progress-row-ui`, `datetime-picker-ui`, gh#1617)** — **BREAKING.** Each shipped its `status: deprecated` soft-deprecation additively in `0.8.41` (its own entry below); all three are now removed outright per the same operator ruling (gh#1562, IDR-0004 deviation). None of the three tags register as custom elements anymore. Migrate: `<toggle-group-ui value>` + `<toggle-option-ui>` children → `<segmented-ui multiple value>` + `<segment-ui>` children (`<toggle-group-ui single>` → plain `<segmented-ui>`, no `[multiple]`); `<progress-row-ui label value meta>` → `<progress-ui label value meta>` (mechanical tag rename); `<datetime-picker-ui>` → `<calendar-picker-ui precision="minute">`. See [§ Shipped in `0.8.43` — three 0.8.41-era deprecated components removed](#shipped-in-0843--three-0841-era-deprecated-components-removed-toggle-group-uitoggle-option-ui-progress-row-ui-datetime-picker-ui-gh1617).
|
|
90
92
|
|
|
91
93
|
Live demos and per-component docs at [ui-kit.exe.xyz/site/](https://ui-kit.exe.xyz/site/). The `adia-ui-migration` skill (in `.agents/skills/`) automates most of the mechanical sweeps in this guide.
|
|
92
94
|
|
|
@@ -751,9 +753,9 @@ finding, [gh#1363](https://github.com/adiahealth/gen-ui-kit/issues/1363).
|
|
|
751
753
|
| `<input-ui type="search">` | `<search-ui>` (built-in magnifying-glass icon, clear button, debounced `search` event) |
|
|
752
754
|
| `<input-ui type="date">` | `<calendar-picker-ui>` (single-date, day granularity) |
|
|
753
755
|
| `<input-ui type="month">` / `type="week"` | `<calendar-picker-ui>` — no dedicated month/week-granularity primitive exists in the catalog; day granularity is the closest routed primitive |
|
|
754
|
-
| `<input-ui type="datetime-local">` | `<datetime-picker-ui>` |
|
|
756
|
+
| `<input-ui type="datetime-local">` | `<calendar-picker-ui precision="minute">` (`<datetime-picker-ui>` was a thin compat alias, cut in 0.8.43, gh#1617) |
|
|
755
757
|
| `<input-ui type="time">` | `<time-picker-ui>` |
|
|
756
|
-
| `<input-ui type="color">` | `<color-input-ui>` (compact form-row swatch + popover) — or `<color-
|
|
758
|
+
| `<input-ui type="color">` | `<color-input-ui>` (compact form-row swatch + popover) — or `<color-area-ui>` directly for a full-surface editor (Tokens-Studio-style canvas; `<color-picker-ui>` was likewise cut in 0.8.43, gh#1617) |
|
|
757
759
|
| `<input-ui>` (no type, or `text`/`email`/`password`/`number`/`tel`/`url`) | unchanged |
|
|
758
760
|
|
|
759
761
|
The routed primitives are NOT drop-in attribute-compatible with
|
|
@@ -1656,12 +1658,13 @@ npm run check
|
|
|
1656
1658
|
|
|
1657
1659
|
---
|
|
1658
1660
|
|
|
1659
|
-
##
|
|
1661
|
+
## Shipped in `0.8.43` — ADR-0063 attribute-grammar addendum (chart no-*, chart-legend[interactive], pane[edge], color-area-ui, menu-item[description], gh#1377/gh#1563/gh#1617)
|
|
1660
1662
|
|
|
1661
|
-
**
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1663
|
+
**BREAKING.** The additive dual-read compat shims shipped in `0.8.42`
|
|
1664
|
+
(previous entry below); this cut removes the deprecated old spellings per
|
|
1665
|
+
the operator ruling recorded on gh#1562 (IDR-0004 deviation) that lifted
|
|
1666
|
+
all 0.9.0-parked breaking cuts onto `0.8.43`.
|
|
1667
|
+
[ADR-0063](../../docs/ops/adr/adr-0063-attribute-grammar-addendum.md)
|
|
1665
1668
|
ratified six decisions from the catalog-regularity audit
|
|
1666
1669
|
([gh#1363](https://github.com/adiahealth/gen-ui-kit/issues/1363)); this
|
|
1667
1670
|
entry covers the five identifiers gh#1563's own build scope named. (The
|
|
@@ -1670,42 +1673,36 @@ convergence — and the `alert`/`card`/`drilldown`/`noodles` decision-2
|
|
|
1670
1673
|
items ship under their own separately-scoped follow-up tickets, not
|
|
1671
1674
|
this one.)
|
|
1672
1675
|
|
|
1673
|
-
### What changed (
|
|
1676
|
+
### What changed (BREAKING, 0.8.43)
|
|
1674
1677
|
|
|
1675
|
-
| Component | Old (
|
|
1678
|
+
| Component | Old (removed) | New (sole spelling) | Shape |
|
|
1676
1679
|
|---|---|---|---|
|
|
1677
1680
|
| `<chart-ui>` | `[hide-average]` | `[no-average]` | straight rename, same polarity |
|
|
1678
1681
|
| `<chart-ui>` | `[hide-grid]` | `[no-grid]` | straight rename, same polarity |
|
|
1679
1682
|
| `<chart-ui>` | `[hide-values]` | `[no-values]` | straight rename, same polarity |
|
|
1680
|
-
| `<chart-legend-ui>` | `[static]` (opt-out) | `[interactive]` (opt-in) | polarity flip — **default NOT
|
|
1683
|
+
| `<chart-legend-ui>` | `[static]` (opt-out) | `[interactive]` (opt-in) | polarity flip — **default still NOT flipped**, see below |
|
|
1681
1684
|
| `<pane-ui>` | `[side]` | `[edge]` | straight rename, same type/default/enum (`drawer-ui[side]` is untouched — different component, different vocabulary) |
|
|
1682
1685
|
| `<menu-item-ui>` | `[subtitle]` prop | `[description]` prop | straight rename — the `subtitle` **slot** is a separate surface, deliberately left unrenamed |
|
|
1683
|
-
| `<color-picker-ui>` (tag) | `color-picker-ui` / `ColorPicker` / `UIColorPicker` | `color-area-ui` / `ColorArea` / `UIColorArea` | tag/component/class
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
`
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
[
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
"default-inversion" consumer-scan requirement — every `<chart-legend-ui>`
|
|
1704
|
-
tag, with or without either attribute, reviewed for whether omission
|
|
1705
|
-
was relying on the old default — is the 0.9.0 cut's own prerequisite,
|
|
1706
|
-
not this one's.
|
|
1707
|
-
|
|
1708
|
-
### Migration (mechanical, recommended now / required at the 0.9.0 cut)
|
|
1686
|
+
| `<color-picker-ui>` (tag) | `color-picker-ui` / `ColorPicker` / `UIColorPicker` | `color-area-ui` / `ColorArea` / `UIColorArea` | tag/component/class removed outright (B11, picker-naming convention) — `color-area-ui` is the sole tag now |
|
|
1687
|
+
|
|
1688
|
+
The old names/tag no longer resolve: `[hide-average]`/`[hide-grid]`/
|
|
1689
|
+
`[hide-values]` are inert attributes on `<chart-ui>` (no property, no
|
|
1690
|
+
dual-read); `<chart-legend-ui>`'s `[static]` is likewise inert;
|
|
1691
|
+
`<pane-ui>`'s `[side]` is inert; `<menu-item-ui>`'s `[subtitle]` PROP is
|
|
1692
|
+
inert (the `subtitle` **slot** is unchanged); and `<color-picker-ui>` no
|
|
1693
|
+
longer registers as a custom element at all — `<color-area-ui>` is the
|
|
1694
|
+
sole tag, class, and catalog identity.
|
|
1695
|
+
|
|
1696
|
+
**`chart-legend-ui[interactive]`'s default is still NOT flipped in this
|
|
1697
|
+
release.** `[interactive]` defaults `true` — a `<chart-legend-ui>` naming
|
|
1698
|
+
neither attribute renders exactly as it does today (interactive
|
|
1699
|
+
`<button>`-role rows). The ADR's own "default-inversion" consumer-scan
|
|
1700
|
+
requirement — every `<chart-legend-ui>` tag, with or without the
|
|
1701
|
+
attribute, reviewed for whether omission was relying on the old default —
|
|
1702
|
+
remains open and is out of this ticket's scope (gh#1617); it ships under
|
|
1703
|
+
its own separately-scoped follow-up.
|
|
1704
|
+
|
|
1705
|
+
### Migration (mechanical — already applied repo-wide in gh#1617)
|
|
1709
1706
|
|
|
1710
1707
|
```bash
|
|
1711
1708
|
git grep -l 'hide-average\|hide-grid\|hide-values' -- packages apps playgrounds site site-a2ui \
|
|
@@ -1721,12 +1718,13 @@ git grep -rl 'color-picker-ui\|UIColorPicker' -- packages apps playgrounds site
|
|
|
1721
1718
|
| xargs perl -pi -e 's/color-picker-ui/color-area-ui/g; s/UIColorPicker/UIColorArea/g'
|
|
1722
1719
|
```
|
|
1723
1720
|
|
|
1724
|
-
Every `<chart-legend-ui>` tag
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1721
|
+
Every `<chart-legend-ui>` tag still needs a manual (not mechanical)
|
|
1722
|
+
review pass: add `[interactive]` explicitly wherever the page relied on
|
|
1723
|
+
the current "interactive by default" behavior, ahead of the still-open
|
|
1724
|
+
default-inversion follow-up.
|
|
1728
1725
|
|
|
1729
|
-
**Find every
|
|
1726
|
+
**Find every remaining consumer site (external consumers upgrading from
|
|
1727
|
+
pre-0.8.42):**
|
|
1730
1728
|
|
|
1731
1729
|
```bash
|
|
1732
1730
|
npm run qa:contract-migration-scan -- --roots packages,apps,playgrounds,site,site-a2ui \
|
|
@@ -1740,24 +1738,19 @@ scanner's own default) — `site-a2ui/` is a separate top-level directory
|
|
|
1740
1738
|
the default roots miss entirely (ADR-0063's own consumer-scan
|
|
1741
1739
|
mechanism section explains why).
|
|
1742
1740
|
|
|
1743
|
-
### Rejected / deferred (explicitly out of gh#
|
|
1741
|
+
### Rejected / deferred (explicitly out of gh#1617's scope)
|
|
1744
1742
|
|
|
1745
|
-
- `action-item-ui[subtitle]` — once `menu-item-ui` converges onto
|
|
1746
|
-
`description`, `action-item-ui` becomes the corpus's new sole
|
|
1747
|
-
`subtitle` outlier (the same shape of defect ADR-0063 just fixed for
|
|
1748
|
-
menu-item). Flagged as a discovered follow-up candidate for a human
|
|
1749
|
-
ticketing decision — not fixed in this dispatch.
|
|
1750
1743
|
- `segmented-ui[multiple]`'s comma-separated value encoding — sanctioned
|
|
1751
1744
|
as-is (operator ruling, gh#1563, 2026-08-17).
|
|
1752
|
-
- `
|
|
1753
|
-
|
|
1754
|
-
|
|
1745
|
+
- `chart-legend-ui[interactive]`'s default-inversion to `false` — the
|
|
1746
|
+
ADR's own consumer-scan requirement is still unmet; ships under its own
|
|
1747
|
+
separately-scoped follow-up, not this ticket.
|
|
1755
1748
|
- `drilldown-ui[static]` → `[no-slide-transition]`, `alert-ui[dismissible]`
|
|
1756
1749
|
retirement, `card-ui[outline]` retirement,
|
|
1757
1750
|
`agent-reasoning-ui[status="done"]` → `"completed"`, and
|
|
1758
1751
|
`noodles-ui[port-size]`/`[show-ports]` duplicate-entry cleanup — all
|
|
1759
1752
|
real ADR-0063 decisions, each its own separately-scoped follow-up
|
|
1760
|
-
build, not part of
|
|
1753
|
+
build, not part of this ticket's scope.
|
|
1761
1754
|
- `menu-item-ui`'s `subtitle` **slot** (distinct from the prop) — left
|
|
1762
1755
|
unrenamed by design; renaming a slot is a different, unscoped surface.
|
|
1763
1756
|
|
|
@@ -1772,43 +1765,38 @@ npm run check
|
|
|
1772
1765
|
|
|
1773
1766
|
---
|
|
1774
1767
|
|
|
1775
|
-
##
|
|
1768
|
+
## Shipped in `0.8.43` — `action-item-ui[description]` ADR-0063 convergence (gh#1571/gh#1617)
|
|
1776
1769
|
|
|
1777
|
-
**
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
#1569](https://github.com/adiahealth/gen-ui-kit/pull/1569) itself
|
|
1782
|
-
under its own "Rejected/deferred" section: once `<menu-item-ui>`
|
|
1783
|
-
its `subtitle` prop onto `description`
|
|
1770
|
+
**BREAKING.** The additive dual-read compat shim shipped ahead of this cut
|
|
1771
|
+
(previous entry below); this cut removes the deprecated `[subtitle]` prop
|
|
1772
|
+
per the operator ruling recorded on gh#1562 (IDR-0004 deviation) that
|
|
1773
|
+
lifted all 0.9.0-parked breaking cuts onto `0.8.43`. This closes the gap
|
|
1774
|
+
[PR #1569](https://github.com/adiahealth/gen-ui-kit/pull/1569) itself
|
|
1775
|
+
flagged under its own "Rejected/deferred" section: once `<menu-item-ui>`
|
|
1776
|
+
converged its `subtitle` prop onto `description`
|
|
1777
|
+
([ADR-0063](../../docs/ops/adr/adr-0063-attribute-grammar-addendum.md),
|
|
1784
1778
|
gh#1563), `<action-item-ui>` became the corpus's remaining sole `subtitle`
|
|
1785
1779
|
outlier — the same shape of defect ADR-0063 fixed for menu-item.
|
|
1786
1780
|
|
|
1787
|
-
### What changed (
|
|
1781
|
+
### What changed (BREAKING, 0.8.43)
|
|
1788
1782
|
|
|
1789
|
-
| Component | Old (
|
|
1783
|
+
| Component | Old (removed) | New (sole spelling) | Shape |
|
|
1790
1784
|
|---|---|---|---|
|
|
1791
1785
|
| `<action-item-ui>` | `[subtitle]` prop | `[description]` prop | straight rename — the `subtitle` **slot** is a separate surface, deliberately left unrenamed |
|
|
1792
1786
|
|
|
1793
|
-
`[description]`
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
set; neither present keeps today's default (empty string, no rendered
|
|
1797
|
-
subtitle row). Unlike `menu-item-ui`'s own gh#1563 shim (which only
|
|
1798
|
-
resolves once, at `connected()`), `action-item-ui`'s shim re-resolves on
|
|
1799
|
-
every render until `[description]` is authored directly, so a post-mount
|
|
1800
|
-
`[subtitle]` attribute update keeps propagating exactly as it did before
|
|
1801
|
-
this shim existed — once `[description]` is set directly (by attribute or
|
|
1802
|
-
property), it wins permanently and further `[subtitle]` churn is ignored.
|
|
1787
|
+
`[description]` is now the only prop — `[subtitle]` no longer resolves,
|
|
1788
|
+
mirrors, or warns (it is an inert attribute; the `subtitle` **slot** is
|
|
1789
|
+
unaffected and still renders custom content the same way it always did).
|
|
1803
1790
|
|
|
1804
|
-
### Migration (mechanical
|
|
1791
|
+
### Migration (mechanical — already applied repo-wide in gh#1617)
|
|
1805
1792
|
|
|
1806
1793
|
```bash
|
|
1807
1794
|
git grep -l '<action-item-ui\b' -- packages apps playgrounds site site-a2ui \
|
|
1808
1795
|
| xargs perl -pi -e 's/(<action-item-ui\b[^>]*\b)subtitle=/\1description=/g'
|
|
1809
1796
|
```
|
|
1810
1797
|
|
|
1811
|
-
**Find every
|
|
1798
|
+
**Find every remaining consumer site (external consumers upgrading from
|
|
1799
|
+
pre-0.8.43):**
|
|
1812
1800
|
|
|
1813
1801
|
```bash
|
|
1814
1802
|
npm run qa:contract-migration-scan -- --roots packages,apps,playgrounds,site,site-a2ui \
|
|
@@ -1819,9 +1807,6 @@ rg -nU '<action-item-ui\b[^>]*\bsubtitle=' \
|
|
|
1819
1807
|
|
|
1820
1808
|
### Rejected / deferred
|
|
1821
1809
|
|
|
1822
|
-
- The 0.9.0 breaking removal itself — deferred under the same "no breaking
|
|
1823
|
-
rename in a patch" 2026-08-14 standing ruling every sibling rename-wave
|
|
1824
|
-
entry in this guide follows.
|
|
1825
1810
|
- `action-item-ui`'s `subtitle` **slot** (distinct from the prop) — left
|
|
1826
1811
|
unrenamed by design, same as `menu-item-ui`'s own gh#1563 shape;
|
|
1827
1812
|
renaming a slot is a different, unscoped surface.
|
|
@@ -1837,6 +1822,71 @@ npm run check
|
|
|
1837
1822
|
|
|
1838
1823
|
---
|
|
1839
1824
|
|
|
1825
|
+
## Shipped in `0.8.43` — three 0.8.41-era deprecated components removed (toggle-group-ui/toggle-option-ui, progress-row-ui, datetime-picker-ui, gh#1617)
|
|
1826
|
+
|
|
1827
|
+
**BREAKING.** These three components shipped their `status: deprecated`
|
|
1828
|
+
soft-deprecation additively in `0.8.41` (each entry above) — behavior
|
|
1829
|
+
unchanged, a one-time `console.warn`, kept fully working. This cut removes
|
|
1830
|
+
them outright, per the operator ruling recorded on gh#1562 (IDR-0004
|
|
1831
|
+
deviation) that lifted all 0.9.0-parked breaking cuts onto `0.8.43`. Each
|
|
1832
|
+
alias's successor shipped ≥1 release before `0.8.43` (`0.8.41`, with
|
|
1833
|
+
`0.8.42` released in between) — the maturity guard gh#1617 verified
|
|
1834
|
+
against CHANGELOG/git history before cutting.
|
|
1835
|
+
|
|
1836
|
+
### What changed (BREAKING, 0.8.43)
|
|
1837
|
+
|
|
1838
|
+
| Removed component | Successor | Migration |
|
|
1839
|
+
|---|---|---|
|
|
1840
|
+
| `<toggle-group-ui>` + `<toggle-option-ui>` | `<segmented-ui multiple>` + `<segment-ui>` | `<toggle-group-ui value="…">` + `<toggle-option-ui>` children → `<segmented-ui multiple value="…">` + `<segment-ui>` children (identical comma-separated `value` encoding; `text`/`icon`/`disabled` map directly). `<toggle-group-ui single value="…">` → `<segmented-ui value="…">` (no `[multiple]`) |
|
|
1841
|
+
| `<progress-row-ui>` | `<progress-ui label meta>` | `<progress-row-ui label="…" value="…" meta="…">` → `<progress-ui label="…" value="…" meta="…">` (mechanical tag rename, identical attribute names). `variant` (color-family prop) has no successor — recolor via `--progress-fill` |
|
|
1842
|
+
| `<datetime-picker-ui>` | `<calendar-picker-ui precision="minute">` | `<datetime-picker-ui>` → `<calendar-picker-ui precision="minute">` (or `precision="second"`) |
|
|
1843
|
+
|
|
1844
|
+
None of the three tags register as custom elements anymore — mounting
|
|
1845
|
+
one is inert markup (no upgrade, no shadow/light DOM stamped). The A2UI
|
|
1846
|
+
catalog identities `ToggleGroup`, `ToggleOption`, `ProgressRow`, and
|
|
1847
|
+
`DatetimePicker` are removed from `registry.js`; generation should never
|
|
1848
|
+
emit them.
|
|
1849
|
+
|
|
1850
|
+
**Behavioral gap carried over from the `0.8.41` entry:** `<toggle-group-ui
|
|
1851
|
+
single>`'s clear-on-reclick has no `<segmented-ui>` equivalent — see the
|
|
1852
|
+
`0.8.41` entry above for the capture-phase workaround if a migrated
|
|
1853
|
+
consumer relied on it.
|
|
1854
|
+
|
|
1855
|
+
### Migration (mechanical)
|
|
1856
|
+
|
|
1857
|
+
```bash
|
|
1858
|
+
git grep -l '<toggle-group-ui\|<toggle-option-ui' -- packages apps playgrounds site site-a2ui \
|
|
1859
|
+
-g '!*CHANGELOG*.md' -g '!**/dist/**' -g '!*.examples.md' -g '!*MIGRATION*' -g '!.claude/docs/**'
|
|
1860
|
+
# Rewrite by hand — this is a tag + structural rename, not an attribute
|
|
1861
|
+
# rename: parent AND child tags change, and `single` mode maps to
|
|
1862
|
+
# segmented-ui's OWN single-select (absence of [multiple]), not a prop.
|
|
1863
|
+
|
|
1864
|
+
git grep -l '<progress-row-ui\b' -- packages apps playgrounds site site-a2ui \
|
|
1865
|
+
| xargs perl -pi -e 's/<progress-row-ui\b/<progress-ui/g; s/<\/progress-row-ui>/<\/progress-ui>/g'
|
|
1866
|
+
|
|
1867
|
+
git grep -l '<datetime-picker-ui\b' -- packages apps playgrounds site site-a2ui \
|
|
1868
|
+
| xargs perl -pi -e 's/<datetime-picker-ui(\s|>)/<calendar-picker-ui precision="minute"\1/g; s/<\/datetime-picker-ui>/<\/calendar-picker-ui>/g'
|
|
1869
|
+
```
|
|
1870
|
+
|
|
1871
|
+
**Find every remaining consumer site (external consumers upgrading from
|
|
1872
|
+
pre-0.8.43):**
|
|
1873
|
+
|
|
1874
|
+
```bash
|
|
1875
|
+
rg -nU '<toggle-group-ui[^>]*>|<toggle-option-ui[^>]*>|<progress-row-ui[^>]*>|<datetime-picker-ui[^>]*>' \
|
|
1876
|
+
-g '!*CHANGELOG*.md' -g '!**/dist/**' -g '!*.examples.md' -g '!*MIGRATION*' -g '!.claude/docs/**'
|
|
1877
|
+
```
|
|
1878
|
+
|
|
1879
|
+
A hit means a broken page — none of these three tags register anymore.
|
|
1880
|
+
|
|
1881
|
+
### Verify
|
|
1882
|
+
|
|
1883
|
+
```bash
|
|
1884
|
+
node scripts/build/components.mjs --verify
|
|
1885
|
+
npm run check
|
|
1886
|
+
```
|
|
1887
|
+
|
|
1888
|
+
---
|
|
1889
|
+
|
|
1840
1890
|
## Migrating to `@adia-ai/*@v0.8.23` (2026-07-30)
|
|
1841
1891
|
|
|
1842
1892
|
- **Removed: the `--a-font` alias** (pre-ADR-0035 name, DEPRECATED since the 0.8.x line). Any surviving `font-family: var(--a-font)` goes invalid-at-computed-value-time → `inherit` → UA **serif** — the visible symptom is Times-faced labels on an otherwise-correct page.
|
package/USAGE.md
CHANGED
|
@@ -1219,7 +1219,7 @@ For a compact swatch-and-popover authoring shape:
|
|
|
1219
1219
|
</popover-ui>
|
|
1220
1220
|
```
|
|
1221
1221
|
|
|
1222
|
-
The popover handles focus management + click-outside dismiss; the button-ui exposes the right ARIA semantics. `<color-area-ui>` fires `change` events that bubble through the popover — listen on the popover host. (`<color-area-ui>` is the ADR-0063/gh#1563 rename of `<color-picker-ui
|
|
1222
|
+
The popover handles focus management + click-outside dismiss; the button-ui exposes the right ARIA semantics. `<color-area-ui>` fires `change` events that bubble through the popover — listen on the popover host. (`<color-area-ui>` is the ADR-0063/gh#1563 rename of `<color-picker-ui>`; the old tag was cut in 0.8.43, gh#1617 — this recipe is exactly what `<color-input-ui>` canonicalizes.)
|
|
1223
1223
|
|
|
1224
1224
|
### §221g — `[data-scheme]` ancestor opt-in for color scheme
|
|
1225
1225
|
|
package/color/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @adia-ai/web-components/color — color-space conversion + gamut utilities
|
|
3
|
-
* shared between primitives (color-
|
|
3
|
+
* shared between primitives (color-area, swatch, contrast-badge) and
|
|
4
4
|
* available to consumers as a standalone subpath.
|
|
5
5
|
*
|
|
6
6
|
* §301 (v0.5.12, FEEDBACK-29 re-bucket from v0.6.0). Pure functions; no
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/ActionItem.json",
|
|
4
4
|
"title": "ActionItem",
|
|
5
|
-
"description": "Child of <action-list-ui>. One actionable row — icon + label + optional\ndescription, forwards activation to the parent action-list. Row contract\nconverges on <menu-item-ui>: icon/text/description/value/variant/disabled\nprops and icon/text/subtitle/trailing slot overrides (#1363 C5)
|
|
5
|
+
"description": "Child of <action-list-ui>. One actionable row — icon + label + optional\ndescription, forwards activation to the parent action-list. Row contract\nconverges on <menu-item-ui>: icon/text/description/value/variant/disabled\nprops and icon/text/subtitle/trailing slot overrides (#1363 C5). (The\ndeprecated `subtitle` prop alias for `description` was cut in 0.8.43 —\nADR-0063, gh#1571/gh#1617.)",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
],
|
|
15
15
|
"properties": {
|
|
16
16
|
"description": {
|
|
17
|
-
"description": "Optional secondary description line rendered under the label. Canonical spelling (ADR-0063, gh#1571) replacing `subtitle` — converges action-item onto the same spelling <menu-item-ui> adopted under gh#1563.",
|
|
17
|
+
"description": "Optional secondary description line rendered under the label. Canonical spelling (ADR-0063, gh#1571) replacing `subtitle` — converges action-item onto the same spelling <menu-item-ui> adopted under gh#1563. The deprecated `subtitle` prop alias was cut in 0.8.43 (gh#1617).",
|
|
18
18
|
"type": "string",
|
|
19
19
|
"default": ""
|
|
20
20
|
},
|
|
@@ -30,11 +30,6 @@
|
|
|
30
30
|
"description": "Leading icon name (Phosphor).",
|
|
31
31
|
"type": "string"
|
|
32
32
|
},
|
|
33
|
-
"subtitle": {
|
|
34
|
-
"description": "DEPRECATED (ADR-0063, gh#1571) — use `description` instead. Same type/default/rendered position; kept working as a dual-read compat shim (one-time console.warn when it's the name that resolves). Removed in 0.9.0. (The `subtitle` SLOT below is a separate surface, deliberately left unrenamed in this pass — see its own description.)",
|
|
35
|
-
"type": "string",
|
|
36
|
-
"default": ""
|
|
37
|
-
},
|
|
38
33
|
"text": {
|
|
39
34
|
"description": "Action label.",
|
|
40
35
|
"type": "string"
|
|
@@ -85,7 +80,7 @@
|
|
|
85
80
|
"description": "Override the [icon] glyph with a custom slotted element (custom icon-ui, image, avatar). Mutually exclusive with the [icon] attribute — slot child wins."
|
|
86
81
|
},
|
|
87
82
|
"subtitle": {
|
|
88
|
-
"description": "Custom secondary-line content override; falls through to the [description] prop (
|
|
83
|
+
"description": "Custom secondary-line content override; falls through to the [description] prop if not slotted (ADR-0063, gh#1571 — the deprecated [subtitle] prop alias was cut in 0.8.43, gh#1617). The slot's own name is unchanged by that rename — this is a distinct, deliberately-unrenamed surface."
|
|
89
84
|
},
|
|
90
85
|
"text": {
|
|
91
86
|
"description": "Custom label content; falls through to [text] prop if not slotted."
|
|
@@ -19,8 +19,9 @@ description: |-
|
|
|
19
19
|
Child of <action-list-ui>. One actionable row — icon + label + optional
|
|
20
20
|
description, forwards activation to the parent action-list. Row contract
|
|
21
21
|
converges on <menu-item-ui>: icon/text/description/value/variant/disabled
|
|
22
|
-
props and icon/text/subtitle/trailing slot overrides (#1363 C5).
|
|
23
|
-
|
|
22
|
+
props and icon/text/subtitle/trailing slot overrides (#1363 C5). (The
|
|
23
|
+
deprecated `subtitle` prop alias for `description` was cut in 0.8.43 —
|
|
24
|
+
ADR-0063, gh#1571/gh#1617.)
|
|
24
25
|
|
|
25
26
|
props:
|
|
26
27
|
icon:
|
|
@@ -29,21 +30,13 @@ props:
|
|
|
29
30
|
text:
|
|
30
31
|
description: Action label.
|
|
31
32
|
type: string
|
|
32
|
-
subtitle:
|
|
33
|
-
description: >-
|
|
34
|
-
DEPRECATED (ADR-0063, gh#1571) — use `description` instead. Same
|
|
35
|
-
type/default/rendered position; kept working as a dual-read compat
|
|
36
|
-
shim (one-time console.warn when it's the name that resolves).
|
|
37
|
-
Removed in 0.9.0. (The `subtitle` SLOT below is a separate surface,
|
|
38
|
-
deliberately left unrenamed in this pass — see its own description.)
|
|
39
|
-
type: string
|
|
40
|
-
default: ''
|
|
41
33
|
description:
|
|
42
34
|
description: >-
|
|
43
35
|
Optional secondary description line rendered under the label.
|
|
44
36
|
Canonical spelling (ADR-0063, gh#1571) replacing `subtitle` —
|
|
45
37
|
converges action-item onto the same spelling <menu-item-ui> adopted
|
|
46
|
-
under gh#1563.
|
|
38
|
+
under gh#1563. The deprecated `subtitle` prop alias was cut in
|
|
39
|
+
0.8.43 (gh#1617).
|
|
47
40
|
type: string
|
|
48
41
|
default: ''
|
|
49
42
|
value:
|
|
@@ -70,9 +63,10 @@ slots:
|
|
|
70
63
|
subtitle:
|
|
71
64
|
description: >-
|
|
72
65
|
Custom secondary-line content override; falls through to the
|
|
73
|
-
[description] prop
|
|
74
|
-
|
|
75
|
-
rename — this is a distinct,
|
|
66
|
+
[description] prop if not slotted (ADR-0063, gh#1571 — the
|
|
67
|
+
deprecated [subtitle] prop alias was cut in 0.8.43, gh#1617). The
|
|
68
|
+
slot's own name is unchanged by that rename — this is a distinct,
|
|
69
|
+
deliberately-unrenamed surface.
|
|
76
70
|
trailing:
|
|
77
71
|
description: >-
|
|
78
72
|
Trailing element pinned to the far edge (shortcut hint, badge, caret).
|
|
@@ -108,5 +102,5 @@ a2ui:
|
|
|
108
102
|
reason: 'Converged with <menu-item-ui>''s danger-variant guidance (#1363 C5).'
|
|
109
103
|
- rule: 'Prefer [icon]/[text]/[description] props over slotted markup; use slot="icon"/"text"/"subtitle"/"trailing" only for custom markup (e.g. a slotted <kbd> shortcut hint).'
|
|
110
104
|
reason: 'Row-contract convergence with <menu-item-ui> (#1363 C5).'
|
|
111
|
-
- rule: 'NOTE (ADR-0063, gh#1571): [subtitle]
|
|
105
|
+
- rule: 'NOTE (ADR-0063, gh#1571): the deprecated [subtitle] prop alias for [description] was cut in 0.8.43 (gh#1617) — [description] is the sole prop now.'
|
|
112
106
|
reason: 'Convergence with <menu-item-ui>''s own subtitle -> description rename (gh#1563).'
|
|
@@ -94,13 +94,11 @@ export class UIActionItem extends UIElement {
|
|
|
94
94
|
static properties = {
|
|
95
95
|
icon: { type: String, default: '', reflect: true },
|
|
96
96
|
text: { type: String, default: '', reflect: true },
|
|
97
|
-
// ADR-0063 (gh#1571) — `
|
|
98
|
-
// corpus's remaining `subtitle` outlier once <menu-item-ui>
|
|
99
|
-
// under gh#1563);
|
|
100
|
-
//
|
|
101
|
-
// surface — see action-item.yaml) is
|
|
102
|
-
// PROP renames.
|
|
103
|
-
subtitle: { type: String, default: '', reflect: true },
|
|
97
|
+
// ADR-0063 (gh#1571) — `description` is canonical (action-item was
|
|
98
|
+
// the corpus's remaining `subtitle` outlier once <menu-item-ui>
|
|
99
|
+
// converged under gh#1563); the deprecated `subtitle` PROP dual-read
|
|
100
|
+
// shim was cut in 0.8.43 (gh#1617). The `subtitle` SLOT (a separate
|
|
101
|
+
// surface — see action-item.yaml) is unchanged.
|
|
104
102
|
description: { type: String, default: '', reflect: true },
|
|
105
103
|
value: { type: String, default: '', reflect: true },
|
|
106
104
|
variant: { type: String, default: 'default', reflect: true },
|
|
@@ -109,51 +107,6 @@ export class UIActionItem extends UIElement {
|
|
|
109
107
|
|
|
110
108
|
static template = () => null;
|
|
111
109
|
|
|
112
|
-
// ADR-0063 (gh#1571) one-shot-per-class deprecation warn for [subtitle].
|
|
113
|
-
static #warnedSubtitle = false;
|
|
114
|
-
|
|
115
|
-
// Guards + tracks the [subtitle] -> [description] compat mirror (below).
|
|
116
|
-
// action-item-ui (unlike menu-item-ui) has pre-existing tests that set
|
|
117
|
-
// [subtitle] AFTER mount and expect the rendered row to keep tracking it
|
|
118
|
-
// (gh#1374) — a resolve-once-at-connect shim (menu-item-ui's own shape)
|
|
119
|
-
// would silently stop mirroring once `description` picks up its first
|
|
120
|
-
// reflected value. `#mirroring` suppresses the authored-flag while WE
|
|
121
|
-
// write `this.description` ourselves; `#descriptionAuthored` latches
|
|
122
|
-
// true the moment a REAL (non-mirrored) `description` attribute shows
|
|
123
|
-
// up, so [description] wins permanently from that point on, even
|
|
124
|
-
// across later [subtitle] attribute churn.
|
|
125
|
-
#mirroring = false;
|
|
126
|
-
#descriptionAuthored = false;
|
|
127
|
-
|
|
128
|
-
attributeChangedCallback(name, oldVal, val) {
|
|
129
|
-
if (name === 'description' && !this.#mirroring) this.#descriptionAuthored = true;
|
|
130
|
-
super.attributeChangedCallback(name, oldVal, val);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// ADR-0063 (gh#1571) compat shim. New-name precedence: once [description]
|
|
134
|
-
// has ever been authored directly, it wins outright and [subtitle] is
|
|
135
|
-
// ignored from then on. Until then, [subtitle] mirrors into [description]
|
|
136
|
-
// on every resolve (initial connect AND every subsequent render), so a
|
|
137
|
-
// post-mount [subtitle] update keeps propagating exactly like it did
|
|
138
|
-
// before this shim existed.
|
|
139
|
-
#resolveSubtitleCompat() {
|
|
140
|
-
if (this.#descriptionAuthored) return;
|
|
141
|
-
const mirrored = this.hasAttribute('subtitle') ? this.subtitle : '';
|
|
142
|
-
if (this.description === mirrored) return;
|
|
143
|
-
this.#mirroring = true;
|
|
144
|
-
this.description = mirrored;
|
|
145
|
-
this.#mirroring = false;
|
|
146
|
-
if (mirrored && !UIActionItem.#warnedSubtitle) {
|
|
147
|
-
UIActionItem.#warnedSubtitle = true;
|
|
148
|
-
// eslint-disable-next-line no-console
|
|
149
|
-
console.warn(
|
|
150
|
-
'[AdiaUI] <action-item-ui [subtitle]> is deprecated — use ' +
|
|
151
|
-
'[description] instead (ADR-0063, gh#1571). Kept working as-is; ' +
|
|
152
|
-
'no behavior change.',
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
110
|
// Set when connected()/render() stamped this fallback child from a prop —
|
|
158
111
|
// never touch a consumer-authored slot="icon"/"text"/"subtitle" child
|
|
159
112
|
// (ADR-0010, slot content is source of truth). Mirrors menu-item-ui's
|
|
@@ -170,10 +123,6 @@ export class UIActionItem extends UIElement {
|
|
|
170
123
|
}
|
|
171
124
|
|
|
172
125
|
connected() {
|
|
173
|
-
// ADR-0063 (gh#1571) compat shim — resolve BEFORE #stamp() reads
|
|
174
|
-
// `this.description`, so there's no wrong-then-right flash.
|
|
175
|
-
this.#resolveSubtitleCompat();
|
|
176
|
-
|
|
177
126
|
// Adopt-or-stamp (gh#753): a consumer-authored role survives connect —
|
|
178
127
|
// only stamp "listitem" when the host has no author-set role at all.
|
|
179
128
|
if (!this.hasAttribute('role')) this.setAttribute('role', 'listitem');
|
|
@@ -218,11 +167,6 @@ export class UIActionItem extends UIElement {
|
|
|
218
167
|
}
|
|
219
168
|
|
|
220
169
|
render() {
|
|
221
|
-
// ADR-0063 (gh#1571) compat shim — re-resolve on every render so a
|
|
222
|
-
// post-mount [subtitle] update keeps mirroring into [description]
|
|
223
|
-
// until an author sets [description] directly (see #resolveSubtitleCompat).
|
|
224
|
-
this.#resolveSubtitleCompat();
|
|
225
|
-
|
|
226
170
|
// Sync icon — only touch elements we stamped.
|
|
227
171
|
const iconEl = this.#ownChild('[slot="icon"]');
|
|
228
172
|
if (this.icon) {
|