@adia-ai/a2ui 0.8.41 → 0.8.42

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog — @adia-ai/a2ui
2
2
 
3
+ ## [0.8.42] — 2026-08-17
4
+
5
+ ### Maintenance
6
+ - Catalog artifacts re-derived for the ADR-0063 compat-shim surface and rename-wave W2 names (PRs #1567/#1568/#1569, ADR-0069 Class-R resync). No protocol/runtime API change.
7
+
8
+
3
9
  > Formerly `@adia-ai/a2ui-runtime`; renamed at ADR-0048 P3. Entries below
4
10
  > 0.8.37 (the estate-split cut) were released under the old name and are kept
5
11
  > verbatim.
@@ -416,7 +416,7 @@
416
416
  },
417
417
  "ActionItem": {
418
418
  "title": "ActionItem",
419
- "description": "Child of <action-list-ui>. One actionable row — icon + label + optional\nsubtitle, forwards activation to the parent action-list. Row contract\nconverges on <menu-item-ui>: icon/text/subtitle/value/variant/disabled\nprops and icon/text/subtitle/trailing slot overrides (#1363 C5).",
419
+ "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).\n(`subtitle` is a deprecated alias for `description` — ADR-0063, gh#1571.)",
420
420
  "type": "object",
421
421
  "allOf": [
422
422
  {
@@ -427,6 +427,11 @@
427
427
  }
428
428
  ],
429
429
  "properties": {
430
+ "description": {
431
+ "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.",
432
+ "type": "string",
433
+ "default": ""
434
+ },
430
435
  "component": {
431
436
  "const": "ActionItem"
432
437
  },
@@ -440,7 +445,7 @@
440
445
  "type": "string"
441
446
  },
442
447
  "subtitle": {
443
- "description": "Optional secondary description line rendered under the label.",
448
+ "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.)",
444
449
  "type": "string",
445
450
  "default": ""
446
451
  },
@@ -494,7 +499,7 @@
494
499
  "description": "Override the [icon] glyph with a custom slotted element (custom icon-ui, image, avatar). Mutually exclusive with the [icon] attribute — slot child wins."
495
500
  },
496
501
  "subtitle": {
497
- "description": "Custom secondary-line content override; falls through to [subtitle] prop if not slotted."
502
+ "description": "Custom secondary-line content override; falls through to the [description] prop (or its deprecated [subtitle] alias — ADR-0063, gh#1571) if not slotted. The slot's own name is unchanged by that rename — this is a distinct, deliberately-unrenamed surface."
498
503
  },
499
504
  "text": {
500
505
  "description": "Custom label content; falls through to [text] prop if not slotted."
@@ -1781,7 +1786,7 @@
1781
1786
  },
1782
1787
  "AdminShell": {
1783
1788
  "title": "AdminShell",
1784
- "description": "Behavior-only application shell. Canonical authoring shape uses\ncluster-namespaced bespoke children — <admin-topbar> at the top,\n<admin-sidebar slot=\"leading|trailing\"> rails, <admin-content> for\nthe main content region, <admin-command> for the Cmd+K palette, and\noptional <admin-statusbar> at the bottom. The shell wires sidebar\ntoggle forwarding, command-palette triggers, and the ResizeObserver\nthat drives responsive sidebar collapse; each bespoke child owns\nits own resize / collapse / open state-as-attribute semantics per\nADR-0023.\n\nLegacy data-attribute shapes (<aside data-sidebar>, <dialog\ndata-command>, [data-resize], <aside-ui slot=>, <span data-spacer>,\n<div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no\nlonger recognized. Consumers must use the bespoke vocabulary.\n",
1789
+ "description": "Behavior-only application shell. Canonical authoring shape uses\ncluster-namespaced bespoke children — <admin-topbar> at the top,\n<admin-sidebar slot=\"leading|trailing\"> rails, <admin-content> for\nthe main content region, <admin-command> for the Cmd+K palette, and\noptional <admin-statusbar> at the bottom. The shell wires sidebar\ntoggle forwarding, command-palette triggers, and the ResizeObserver\nthat drives responsive sidebar collapse; each bespoke child owns\nits own resize / collapse / open state-as-attribute semantics per\nADR-0023.\n\nLegacy data-attribute shapes (<aside data-sidebar>, <dialog\ndata-command>, [data-sidebar-resize], <aside-ui slot=>, <span data-spacer>,\n<div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no\nlonger recognized. Consumers must use the bespoke vocabulary.\n",
1785
1790
  "type": "object",
1786
1791
  "allOf": [
1787
1792
  {
@@ -1934,7 +1939,7 @@
1934
1939
  "default": ""
1935
1940
  },
1936
1941
  "resizable": {
1937
- "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-resize] element as the drag handle.\n",
1942
+ "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-sidebar-resize] element as the drag handle.\n",
1938
1943
  "type": "boolean",
1939
1944
  "default": false
1940
1945
  },
@@ -5862,17 +5867,17 @@
5862
5867
  "default": "abbr"
5863
5868
  },
5864
5869
  "hideAverage": {
5865
- "description": "When true, suppress the overlaid average line",
5870
+ "description": "DEPRECATED (ADR-0063, gh#1563) — use `noAverage` instead. Same meaning, same default; kept working as a dual-read compat shim (one- time console.warn when it's the name that resolves). Removed in 0.9.0.",
5866
5871
  "type": "boolean",
5867
5872
  "default": false
5868
5873
  },
5869
5874
  "hideGrid": {
5870
- "description": "Hide gridlines",
5875
+ "description": "DEPRECATED (ADR-0063, gh#1563) — use `noGrid` instead. Same meaning, same default; kept working as a dual-read compat shim (one-time console.warn when it's the name that resolves). Removed in 0.9.0.",
5871
5876
  "type": "boolean",
5872
5877
  "default": false
5873
5878
  },
5874
5879
  "hideValues": {
5875
- "description": "Hide value labels",
5880
+ "description": "DEPRECATED (ADR-0063, gh#1563) — use `noValues` instead. Same meaning, same default; kept working as a dual-read compat shim (one- time console.warn when it's the name that resolves). Removed in 0.9.0.",
5876
5881
  "type": "boolean",
5877
5882
  "default": false
5878
5883
  },
@@ -5881,6 +5886,21 @@
5881
5886
  "type": "boolean",
5882
5887
  "default": false
5883
5888
  },
5889
+ "noAverage": {
5890
+ "description": "When true, suppress the overlaid average line. Canonical spelling (ADR-0063, gh#1563) replacing `hideAverage`.",
5891
+ "type": "boolean",
5892
+ "default": false
5893
+ },
5894
+ "noGrid": {
5895
+ "description": "Hide gridlines. Canonical spelling (ADR-0063, gh#1563) replacing `hideGrid`.",
5896
+ "type": "boolean",
5897
+ "default": false
5898
+ },
5899
+ "noValues": {
5900
+ "description": "Hide value labels. Canonical spelling (ADR-0063, gh#1563) replacing `hideValues`.",
5901
+ "type": "boolean",
5902
+ "default": false
5903
+ },
5884
5904
  "seriesEmphasis": {
5885
5905
  "description": "Multi-line only. Names one series key (matching a `y` key) to render at full strength — area fill + full-opacity line. Every other series drops its area fill and renders line-only at --chart-deemphasized-opacity. Empty (default) applies full treatment to every series, unchanged from pre-gh#561 behavior.",
5886
5906
  "type": "string",
@@ -6154,6 +6174,11 @@
6154
6174
  "type": "string",
6155
6175
  "default": ""
6156
6176
  },
6177
+ "interactive": {
6178
+ "description": "Canonical opt-in spelling (ADR-0063, gh#1563) replacing `static`'s opt-out polarity. Rows are interactive <button>-role badges by default — this default stays `true` in 0.8.42 (deliberately NOT flipped yet; the 0.9.0 cut inverts it to `false` after a full consumer scan of every `<chart-legend-ui>` tag per the ADR).",
6179
+ "type": "boolean",
6180
+ "default": true
6181
+ },
6157
6182
  "onToggle": {
6158
6183
  "description": "Series-toggle mode emitted via the `toggle` event. `hide` removes the series from the render; `opacity` fades it. Wired via [for] on chart-ui.",
6159
6184
  "type": "string",
@@ -6186,7 +6211,7 @@
6186
6211
  "default": "dot"
6187
6212
  },
6188
6213
  "static": {
6189
- "description": "When set, rows are non-interactive <span>s (no click, no toggle).",
6214
+ "description": "DEPRECATED (ADR-0063, gh#1563) — use `interactive` instead. When set (and `interactive` is absent), rows are non-interactive <span>s (no click, no toggle). Kept working as a dual-read compat shim (one-time console.warn when it's the name that resolves). Removed in 0.9.0.",
6190
6215
  "type": "boolean",
6191
6216
  "default": false
6192
6217
  }
@@ -6895,7 +6920,7 @@
6895
6920
  "default": ""
6896
6921
  },
6897
6922
  "resizable": {
6898
- "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-resize] element as the drag handle.\n",
6923
+ "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-sidebar-resize] element as the drag handle.\n",
6899
6924
  "type": "boolean",
6900
6925
  "default": false
6901
6926
  },
@@ -7668,9 +7693,155 @@
7668
7693
  "version": 1
7669
7694
  }
7670
7695
  },
7696
+ "ColorArea": {
7697
+ "title": "ColorArea",
7698
+ "description": "OKLCH-native color picker with 2D area and H/C/L sliders. Form-associated input emitting OKLCH color strings; canonical color authoring surface in the AdiaUI token system. Use for color input in design tools or theming UIs; for simple color swatches use <swatch-ui> or <color-input-ui> instead. Renamed from `<color-picker-ui>` (ADR-0063, gh#1563 — `-picker` is reserved for the outer trigger + popover composite shape; this is the inline substrate, mirroring <calendar-grid-ui>'s naming precedent). `<color-picker-ui>` is now a thin deprecated alias subclassing this component.",
7699
+ "type": "object",
7700
+ "allOf": [
7701
+ {
7702
+ "$ref": "#/$defs/ComponentCommon"
7703
+ },
7704
+ {
7705
+ "$ref": "#/$defs/CatalogComponentCommon"
7706
+ }
7707
+ ],
7708
+ "properties": {
7709
+ "baseHue": {
7710
+ "description": "Reference hue (degrees) for the [hue-drift-max] constraint. Default\nNaN — falls back to the picker's hue at first commit so the consumer\ncan pre-seed the picker and constrain drift from that initial value.\n",
7711
+ "type": "number",
7712
+ "default": "NaN"
7713
+ },
7714
+ "component": {
7715
+ "const": "ColorArea"
7716
+ },
7717
+ "disabled": {
7718
+ "description": "Disables all interaction",
7719
+ "type": "boolean",
7720
+ "default": false
7721
+ },
7722
+ "format": {
7723
+ "description": "Output format for the value property",
7724
+ "type": "string",
7725
+ "enum": [
7726
+ "hex",
7727
+ "oklch"
7728
+ ],
7729
+ "default": "hex"
7730
+ },
7731
+ "hueDriftMax": {
7732
+ "description": "Generation constraint — maximum allowed signed-shortest-path hue\ndeviation (degrees) from [base-hue] (or the first-committed hue\nif [base-hue] is unset). Default NaN (no constraint). Wrap-aware\nso a drift of 350 degrees resolves as -10.\n",
7733
+ "type": "number",
7734
+ "default": "NaN"
7735
+ },
7736
+ "maxChroma": {
7737
+ "description": "Generation constraint (v0.4.9 §99h, FEEDBACK-02 #7) — clamp the\nOKLCH chroma channel to at most this value before commit. Out-of-\nbound mutations round-trip to the nearest in-bound equivalent +\nfire `constraint-clamp`. Default Infinity (no constraint).\n",
7738
+ "type": "number",
7739
+ "default": "Infinity"
7740
+ },
7741
+ "maxL": {
7742
+ "description": "Generation constraint — clamp OKLCH lightness to at most this value (0..1). Default 1 (no constraint).",
7743
+ "type": "number",
7744
+ "default": 1
7745
+ },
7746
+ "minL": {
7747
+ "description": "Generation constraint — clamp OKLCH lightness to at least this value (0..1). Default 0 (no constraint).",
7748
+ "type": "number",
7749
+ "default": 0
7750
+ },
7751
+ "name": {
7752
+ "description": "Form field name",
7753
+ "type": "string",
7754
+ "default": ""
7755
+ },
7756
+ "value": {
7757
+ "description": "Current color as hex string",
7758
+ "type": "string",
7759
+ "default": "#3b82f6"
7760
+ }
7761
+ },
7762
+ "required": [
7763
+ "component"
7764
+ ],
7765
+ "unevaluatedProperties": false,
7766
+ "x-adiaui": {
7767
+ "anti_patterns": [],
7768
+ "category": "input",
7769
+ "composes": [
7770
+ "slider-ui"
7771
+ ],
7772
+ "events": {
7773
+ "change": {
7774
+ "description": "Fired on every color change"
7775
+ },
7776
+ "constraint-clamp": {
7777
+ "description": "Fired immediately before `change` / `input` when one or more\nconsumer-declared constraints (max-chroma / max-l / min-l /\nhue-drift-max) clamped a channel away from the user-requested\nvalue. detail.clamps is an array of axis-specific clamp records.\n",
7778
+ "detail": {
7779
+ "clamps": {
7780
+ "description": "Array of `{ axis, requested, clamped, reason }` objects. axis is\none of \"l\" / \"c\" / \"h\". reason names the triggering constraint\nprop. Empty arrays are never emitted.\n",
7781
+ "type": "array"
7782
+ }
7783
+ }
7784
+ },
7785
+ "input": {
7786
+ "description": "Fired during continuous interaction (drag)"
7787
+ }
7788
+ },
7789
+ "examples": [
7790
+ {
7791
+ "description": "Color picker card with a color picker component for selecting colors with swatches.",
7792
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"ColorArea\",\n \"value\": \"#6366f1\"\n }\n]",
7793
+ "name": "color-area-demo"
7794
+ },
7795
+ {
7796
+ "description": "Color picker with swatch selection in a card.",
7797
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"ColorArea\",\n \"value\": \"#3b82f6\"\n }\n]",
7798
+ "name": "color-area-panel"
7799
+ }
7800
+ ],
7801
+ "keywords": [
7802
+ "colorarea",
7803
+ "color-area",
7804
+ "colorpicker",
7805
+ "color-picker",
7806
+ "color",
7807
+ "picker"
7808
+ ],
7809
+ "name": "UIColorArea",
7810
+ "parts": {},
7811
+ "related": [
7812
+ "grid",
7813
+ "button"
7814
+ ],
7815
+ "slots": {},
7816
+ "states": [
7817
+ {
7818
+ "description": "Default, ready for interaction.",
7819
+ "name": "idle"
7820
+ },
7821
+ {
7822
+ "description": "Non-interactive; dimmed.",
7823
+ "attribute": "disabled",
7824
+ "name": "disabled"
7825
+ }
7826
+ ],
7827
+ "status": "stable",
7828
+ "synonyms": {
7829
+ "color-area": [
7830
+ "color-canvas",
7831
+ "color-surface",
7832
+ "swatch-picker",
7833
+ "color-picker"
7834
+ ]
7835
+ },
7836
+ "tag": "color-area-ui",
7837
+ "tokens": {},
7838
+ "traits": [],
7839
+ "version": 1
7840
+ }
7841
+ },
7671
7842
  "ColorInput": {
7672
7843
  "title": "ColorInput",
7673
- "description": "Compact form-bearing color input — opens a popover-anchored\n`<color-picker-ui>` from an inline swatch button. §302 (v0.5.12,\nFEEDBACK-29 re-bucket from v0.6.0). Canonicalizes the USAGE.md §221f\nOption B recipe (popover + button + color-picker) into a single\nform-associated tag for inline form contexts (settings drawer \"source\ncolor\" field, swatch-row inline-edit, etc.).",
7844
+ "description": "Compact form-bearing color input — opens a popover-anchored\n`<color-area-ui>` from an inline swatch button. §302 (v0.5.12,\nFEEDBACK-29 re-bucket from v0.6.0). Canonicalizes the USAGE.md §221f\nOption B recipe (popover + button + color-area) into a single\nform-associated tag for inline form contexts (settings drawer \"source\ncolor\" field, swatch-row inline-edit, etc.). Composes `<color-area-ui>`\n(ADR-0063, gh#1563 — renamed from `<color-picker-ui>`, which is now a\ndeprecated alias); `color-input-ui`'s own tag/name is unaffected.",
7674
7845
  "type": "object",
7675
7846
  "allOf": [
7676
7847
  {
@@ -7709,7 +7880,7 @@
7709
7880
  "default": "NaN"
7710
7881
  },
7711
7882
  "maxChroma": {
7712
- "description": "Generation constraint forwarded to the inner `<color-picker-ui>` (v0.5.13\n§-TBD, FB-33 §1). Clamp the OKLCH chroma channel to at most this value.\nDefault Infinity (no constraint).\n",
7883
+ "description": "Generation constraint forwarded to the inner `<color-area-ui>` (v0.5.13\n§-TBD, FB-33 §1). Clamp the OKLCH chroma channel to at most this value.\nDefault Infinity (no constraint).\n",
7713
7884
  "type": "number",
7714
7885
  "default": "Infinity"
7715
7886
  },
@@ -7734,7 +7905,7 @@
7734
7905
  "default": false
7735
7906
  },
7736
7907
  "placement": {
7737
- "description": "Popover placement relative to the trigger. Default `bottom` centers the color-picker panel under the swatch button (ADR-0034 Rule 2 — panel wider than trigger).",
7908
+ "description": "Popover placement relative to the trigger. Default `bottom` centers the color-area panel under the swatch button (ADR-0034 Rule 2 — panel wider than trigger).",
7738
7909
  "type": "string",
7739
7910
  "enum": [
7740
7911
  "top",
@@ -7764,7 +7935,7 @@
7764
7935
  "composes": [
7765
7936
  "button-ui",
7766
7937
  "popover-ui",
7767
- "color-picker-ui"
7938
+ "color-area-ui"
7768
7939
  ],
7769
7940
  "events": {
7770
7941
  "change": {
@@ -7845,7 +8016,7 @@
7845
8016
  "name": "UIColorInput",
7846
8017
  "parts": {},
7847
8018
  "related": [
7848
- "color-picker",
8019
+ "color-area",
7849
8020
  "popover",
7850
8021
  "button",
7851
8022
  "swatch"
@@ -7888,7 +8059,7 @@
7888
8059
  },
7889
8060
  "ColorPicker": {
7890
8061
  "title": "ColorPicker",
7891
- "description": "OKLCH-native color picker with 2D area and H/C/L sliders. Form-associated input emitting OKLCH color strings; canonical color authoring surface in the AdiaUI token system. Use for color input in design tools or theming UIs; for simple color swatches use <swatch-ui> or <color-input-ui> instead.",
8062
+ "description": "DEPRECATED (ADR-0063, gh#1563, gh#1377 B11) — `-picker` is reserved for the outer, trigger + popover, form-associated composite shape (`calendar-picker-ui` / `date-range-picker-ui` / `datetime-picker-ui` / `time-picker-ui`); `color-picker-ui` was the sole violator, playing `calendar-grid-ui`'s inline-substrate role under a `-picker` name. `<color-picker-ui>` is now a thin `UIColorArea` subclass (see color-picker.class.js) rather than an independent implementation every prop/event/token is inherited unchanged from `<color-area-ui>`. Existing markup keeps working, but new markup should reach for `<color-area-ui>` directly. See `<color-area-ui>` for the full contract.",
7892
8063
  "type": "object",
7893
8064
  "allOf": [
7894
8065
  {
@@ -7957,7 +8128,13 @@
7957
8128
  ],
7958
8129
  "unevaluatedProperties": false,
7959
8130
  "x-adiaui": {
7960
- "anti_patterns": [],
8131
+ "anti_patterns": [
8132
+ {
8133
+ "fix": "{\"component\": \"ColorArea\", \"name\": \"brand\"}\n",
8134
+ "why": "ColorPicker is deprecated (ADR-0063, gh#1563) — new generation should\nreach for ColorArea instead.\n",
8135
+ "wrong": "{\"component\": \"ColorPicker\", \"name\": \"brand\"}\n"
8136
+ }
8137
+ ],
7961
8138
  "category": "input",
7962
8139
  "composes": [
7963
8140
  "slider-ui"
@@ -7981,14 +8158,9 @@
7981
8158
  },
7982
8159
  "examples": [
7983
8160
  {
7984
- "description": "Color picker card with a color picker component for selecting colors with swatches.",
7985
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"ColorPicker\",\n \"value\": \"#6366f1\"\n }\n]",
7986
- "name": "color-picker-demo"
7987
- },
7988
- {
7989
- "description": "Color picker with swatch selection in a card.",
8161
+ "description": "Deprecated tag prefer ColorArea's own \"color-area-demo\" example for NEW markup.",
7990
8162
  "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"cp\"\n ]\n },\n {\n \"id\": \"cp\",\n \"component\": \"ColorPicker\",\n \"value\": \"#3b82f6\"\n }\n]",
7991
- "name": "color-picker-panel"
8163
+ "name": "color-picker-legacy"
7992
8164
  }
7993
8165
  ],
7994
8166
  "keywords": [
@@ -8000,6 +8172,7 @@
8000
8172
  "name": "UIColorPicker",
8001
8173
  "parts": {},
8002
8174
  "related": [
8175
+ "color-area",
8003
8176
  "grid",
8004
8177
  "button"
8005
8178
  ],
@@ -8015,18 +8188,19 @@
8015
8188
  "name": "disabled"
8016
8189
  }
8017
8190
  ],
8018
- "status": "stable",
8191
+ "status": "deprecated",
8019
8192
  "synonyms": {
8020
8193
  "color-picker": [
8021
8194
  "color-canvas",
8022
8195
  "color-surface",
8023
- "swatch-picker"
8196
+ "swatch-picker",
8197
+ "color-area"
8024
8198
  ]
8025
8199
  },
8026
8200
  "tag": "color-picker-ui",
8027
8201
  "tokens": {},
8028
8202
  "traits": [],
8029
- "version": 1
8203
+ "version": 2
8030
8204
  }
8031
8205
  },
8032
8206
  "Combobox": {
@@ -10235,7 +10409,7 @@
10235
10409
  "$ref": "#/$defs/DynamicStringList"
10236
10410
  },
10237
10411
  "align": {
10238
- "description": "Alignment for inline layout. `start` (default): term and value pack to the term column edge. `between`: term left, value right-aligned with `text-align: end`. `stretch`: value fills the remaining track width (e.g. for a `<slider-ui>` / `<select-ui>` / `<color-picker-ui>` as `<dd>` that should span the full row). Sets `justify-self: stretch` and `width: 100%` on `dd` so block-level form controls inside reach the column edge rather than shrink-wrapping to content.\n",
10412
+ "description": "Alignment for inline layout. `start` (default): term and value pack to the term column edge. `between`: term left, value right-aligned with `text-align: end`. `stretch`: value fills the remaining track width (e.g. for a `<slider-ui>` / `<select-ui>` / `<color-area-ui>` as `<dd>` that should span the full row). Sets `justify-self: stretch` and `width: 100%` on `dd` so block-level form controls inside reach the column edge rather than shrink-wrapping to content.\n",
10239
10413
  "type": "string",
10240
10414
  "enum": [
10241
10415
  "start",
@@ -12321,7 +12495,7 @@
12321
12495
  ],
12322
12496
  "slots": {
12323
12497
  "default": {
12324
- "description": "The form control — a WIDE control like input-ui, select-ui, textarea-ui, slider-ui, range-ui, calendar-picker-ui, color-picker-ui, upload-ui, otp-input-ui. Auto-id'd for the label's [for] binding.\nDO NOT wrap small self-labeling widgets here. check-ui, switch-ui, radio-ui, toggle-ui all carry their own [label] attribute that renders inline next to the control — wrapping them in field-ui produces broken layouts (settings-row `justify-self: end` rule pushes the control to the trailing edge, away from the label that field-ui stamps; the widget's own label then renders again on the right, creating a doubled / right-justified affordance). See anti_patterns below for the canonical alternatives."
12498
+ "description": "The form control — a WIDE control like input-ui, select-ui, textarea-ui, slider-ui, range-ui, calendar-picker-ui, color-area-ui, upload-ui, otp-input-ui. Auto-id'd for the label's [for] binding.\nDO NOT wrap small self-labeling widgets here. check-ui, switch-ui, radio-ui, toggle-ui all carry their own [label] attribute that renders inline next to the control — wrapping them in field-ui produces broken layouts (settings-row `justify-self: end` rule pushes the control to the trailing edge, away from the label that field-ui stamps; the widget's own label then renders again on the right, creating a doubled / right-justified affordance). See anti_patterns below for the canonical alternatives."
12325
12499
  },
12326
12500
  "action": {
12327
12501
  "description": "Button adjacent to the control for inline actions (clear, reset, help popover)."
@@ -16873,7 +17047,7 @@
16873
17047
  },
16874
17048
  "MenuItem": {
16875
17049
  "title": "MenuItem",
16876
- "description": "Child of `<menu-ui>`. One actionable row inside a menu, with optional leading icon + label + subtitle + value.",
17050
+ "description": "Child of `<menu-ui>`. One actionable row inside a menu, with optional leading icon + label + description + value. (`subtitle` is a deprecated alias for `description` — ADR-0063, gh#1563.)",
16877
17051
  "type": "object",
16878
17052
  "allOf": [
16879
17053
  {
@@ -16884,6 +17058,11 @@
16884
17058
  }
16885
17059
  ],
16886
17060
  "properties": {
17061
+ "description": {
17062
+ "description": "Optional secondary description line rendered under the label. Canonical spelling (ADR-0063, gh#1563) replacing `subtitle` — converges menu-item onto the ~20-component corpus majority that already names this concept `description`.",
17063
+ "type": "string",
17064
+ "default": ""
17065
+ },
16887
17066
  "component": {
16888
17067
  "const": "MenuItem"
16889
17068
  },
@@ -16898,7 +17077,7 @@
16898
17077
  "default": ""
16899
17078
  },
16900
17079
  "subtitle": {
16901
- "description": "Optional secondary description line rendered under the label.",
17080
+ "description": "DEPRECATED (ADR-0063, gh#1563) — 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.)",
16902
17081
  "type": "string",
16903
17082
  "default": ""
16904
17083
  },
@@ -16952,7 +17131,7 @@
16952
17131
  "description": "Custom leading element override; falls through to `[icon]` prop if not slotted."
16953
17132
  },
16954
17133
  "subtitle": {
16955
- "description": "Custom secondary-line content override; falls through to `[subtitle]` prop if not slotted."
17134
+ "description": "Custom secondary-line content override; falls through to the `[description]` prop (or its deprecated `[subtitle]` alias — ADR-0063, gh#1563) if not slotted. The slot's own name is unchanged by that rename — this is a distinct, deliberately-unrenamed surface."
16956
17135
  },
16957
17136
  "text": {
16958
17137
  "description": "Custom label content; falls through to `[text]` prop if not slotted."
@@ -19148,6 +19327,16 @@
19148
19327
  "component": {
19149
19328
  "const": "Pane"
19150
19329
  },
19330
+ "edge": {
19331
+ "description": "Opts a pane into horizontal-sibling chrome: suppresses the default\nfour-sided border and moves the resize grabber to the inner edge\n(right edge for `leading`, left edge for `trailing`). Also flips the\nresize-drag direction so `trailing` panes grow when dragged leftward.\nUnset keeps the pane-intrinsic chrome (full border, right-edge\ngrabber when resizable). Canonical spelling (ADR-0063, gh#1563)\nreplacing `side`.\n",
19332
+ "type": "string",
19333
+ "enum": [
19334
+ "",
19335
+ "leading",
19336
+ "trailing"
19337
+ ],
19338
+ "default": ""
19339
+ },
19151
19340
  "maxWidth": {
19152
19341
  "description": "Component property: maxWidth.",
19153
19342
  "type": "number",
@@ -19164,7 +19353,7 @@
19164
19353
  "default": false
19165
19354
  },
19166
19355
  "side": {
19167
- "description": "Opts a pane into horizontal-sibling chrome: suppresses the default\nfour-sided border and moves the resize grabber to the inner edge\n(right edge for `leading`, left edge for `trailing`). Also flips the\nresize-drag direction so `trailing` panes grow when dragged leftward.\nUnset keeps the pane-intrinsic chrome (full border, right-edge\ngrabber when resizable).\n",
19356
+ "description": "DEPRECATED (ADR-0063, gh#1563) use `edge` instead. Same type/default/enum; kept working as a dual-read compat shim (one-time console.warn when it's the name that resolves). Removed in 0.9.0.",
19168
19357
  "type": "string",
19169
19358
  "enum": [
19170
19359
  "",
@@ -17,11 +17,12 @@
17
17
  - Set variant="contained" for a bounded per-item surface (background, border, radius, and an open-state divider) — the composition to reach for when nesting inside <card-ui>. Default variant="flat" (no chrome) suits settings pages and FAQ blocks sitting on the page canvas.
18
18
 
19
19
  ## ActionItem
20
- - Child of <action-list-ui> — one inline-action row with icon + label + optional subtitle + optional trailing shortcut/badge.
20
+ - Child of <action-list-ui> — one inline-action row with icon + label + optional description + optional trailing shortcut/badge.
21
21
  - Different from <menu-item-ui>: action-items live inline in content surfaces; menu-items live inside <menu-ui> popovers.
22
22
  - For navigation entries (route-changing) use <nav-item-ui> instead.
23
23
  - Use [variant="danger"] exclusively for destructive/irreversible actions (Delete, Remove). Pair danger items with an explicit confirm flow when the action cannot be undone.
24
- - Prefer [icon]/[text]/[subtitle] props over slotted markup; use slot="icon"/"text"/"subtitle"/"trailing" only for custom markup (e.g. a slotted <kbd> shortcut hint).
24
+ - 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).
25
+ - NOTE (ADR-0063, gh#1571): [subtitle] is now a deprecated alias for [description] — kept as a dual-read compat shim (new-name precedence, one-time console.warn), removed at the 0.9.0 cut.
25
26
 
26
27
  ## ActionList
27
28
  - Hosts <action-item-ui> children as a vertical command list inline in content surfaces.
@@ -201,17 +202,22 @@
201
202
  - Pair with <row-ui> for horizontal layouts; both share the same gap-token contract.
202
203
  - Set align/justify attributes for cross-axis / main-axis alignment; default is start/start.
203
204
 
205
+ ## ColorArea
206
+ - OKLCH-native color picker with 2D color area + H/C/L sliders. Form-associated; emits OKLCH color strings.
207
+ - For simple color swatches (read-only display) use <swatch-ui>; for hex/rgb text input use <color-input-ui>.
208
+ - Renamed from <color-picker-ui> (ADR-0063, gh#1563); the old tag is a deprecated alias that still works — new generation should reach for ColorArea directly.
209
+ - Output format defaults to oklch(); set format= to override (hex, rgb, hsl).
210
+
204
211
  ## ColorInput
205
- - Use <color-input-ui> for any form-row color field — it canonicalizes the popover + button + color-picker recipe and is the only form-bearing color primitive. Do not hand-roll the composition; reach for color-input-ui directly.
212
+ - Use <color-input-ui> for any form-row color field — it canonicalizes the popover + button + color-area recipe and is the only form-bearing color primitive. Do not hand-roll the composition; reach for color-input-ui directly.
206
213
  - Set [format="oklch"] when the persisted value feeds CSS tokens or perceptual math; [format="hex"] for legacy / design-tool interop. Event detail (`change` / `input`) carries BOTH `hex` and `oklch` views regardless of [format], plus parsed `{l, c, h}` channel scalars.
207
- - For brand-palette constraints, set [maxChroma] / [minL] / [maxL] / [hueDriftMax] (with [baseHue]) on the host — they forward to the inner <color-picker-ui> and clamp generation. Useful for Tokens-Studio-style guarded color generation.
208
- - Use <color-picker-ui> DIRECTLY (no color-input-ui wrapper) only for full-surface editors where the picker IS the page (e.g. Tokens Studio main canvas). For inline form-row use, always reach for <color-input-ui>.
209
- - Per ADR-0027 (cross-primitive composition imports), consumer pages MUST explicitly import <button-ui>, <popover-ui>, and <color-picker-ui> before <color-input-ui>. The primitive composes them but does NOT auto-register them.
214
+ - For brand-palette constraints, set [maxChroma] / [minL] / [maxL] / [hueDriftMax] (with [baseHue]) on the host — they forward to the inner <color-area-ui> and clamp generation. Useful for Tokens-Studio-style guarded color generation.
215
+ - Use <color-area-ui> DIRECTLY (no color-input-ui wrapper) only for full-surface editors where the picker IS the page (e.g. Tokens Studio main canvas). For inline form-row use, always reach for <color-input-ui>.
216
+ - Per ADR-0027 (cross-primitive composition imports), consumer pages MUST explicitly import <button-ui>, <popover-ui>, and <color-area-ui> before <color-input-ui>. The primitive composes them but does NOT auto-register them.
210
217
 
211
218
  ## ColorPicker
212
- - OKLCH-native color picker with 2D color area + H/C/L sliders. Form-associated; emits OKLCH color strings.
219
+ - DEPRECATED prefer `{"component": "ColorArea"}` over `{"component": "ColorPicker"}`. Both render and behave identically; ColorPicker is a thin compatibility alias.
213
220
  - For simple color swatches (read-only display) use <swatch-ui>; for hex/rgb text input use <color-input-ui>.
214
- - Output format defaults to oklch(); set format= to override (hex, rgb, hsl).
215
221
 
216
222
  ## Combobox
217
223
  - Use <combobox-ui> for typeahead-filterable single-select with a constrained-choice value model. `value` MUST be one of `options[].value` unless `[free-text]` is set. For ≤ 4 options, use <segmented-ui> or <radio-ui> instead.
@@ -447,7 +453,7 @@
447
453
  - Use [variant="danger"] exclusively for destructive / irreversible actions (Delete, Remove). "Sign out" is NOT danger. Pair danger items with an explicit confirm flow (<modal-ui> destructive-confirm pattern) when the action cannot be undone.
448
454
  - Set [disabled] (not [hidden]) when an action is contextually unavailable — disabled items remain visible for affordance discoverability but skip roving focus + don't fire `action`.
449
455
  - Prefer [icon] + [text] props over slotted markup for consistency. Use slot="icon" / slot="text" only when you need custom markup (e.g. <avatar-ui slot="icon">, <kbd slot="trailing"> shortcut hint).
450
- - <action-item-ui> (child of <action-list-ui>) shares this row contract (icon/text/subtitle/value/variant/disabled props, icon/text/subtitle/ trailing slot overrides) for inline, non-popover command rows — use it instead when the surface isn't a <menu-ui> popover (#1363 C5).
456
+ - <action-item-ui> (child of <action-list-ui>) shares this row contract (icon/text/subtitle/value/variant/disabled props, icon/text/subtitle/ trailing slot overrides) for inline, non-popover command rows — use it instead when the surface isn't a <menu-ui> popover (#1363 C5). NOTE (ADR-0063, gh#1563): <menu-item-ui>'s own `subtitle` PROP is now a deprecated alias for `description` — <action-item-ui> still uses `subtitle` as its own primary spelling and was NOT renamed in this pass (flagged as a discovered follow-up candidate, not fixed here).
451
457
 
452
458
  ## MenuLabel
453
459
  - <menu-label-ui> MUST be a direct child of <menu-ui>; like menu-item-ui and menu-divider-ui it is hoisted into the top-layer popover via <menu-ui>'s direct-descendant query — a label nested elsewhere renders outside the popover.
@@ -693,7 +699,7 @@
693
699
  - For static (post-stream) display use <text-ui> or <richtext-ui>; stream-ui assumes live token feed.
694
700
 
695
701
  ## Swatch
696
- - Use to display a single color sample with optional label. For interactive color picking use <color-picker-ui>.
702
+ - Use to display a single color sample with optional label. For interactive color picking use <color-area-ui>.
697
703
  - Inside design-token displays or palette grids; not for general decoration.
698
704
  - Color value accepts hex, rgb, hsl, or oklch; oklch preferred for AdiaUI token alignment.
699
705
 
@@ -1186,7 +1192,7 @@ inside <grid-ui>; reach for the page composite only when search
1186
1192
  - admin-shell takes bespoke admin-* children only. The canonical composition is <admin-topbar> + <admin-sidebar slot="leading"> + <admin-content> + <admin-sidebar slot="trailing"> + <admin-command> + optional <admin-statusbar>. The shell's CSS grid reads child tag selectors to place them.
1187
1193
  - Don't nest col-ui / row-ui or generic layout primitives directly inside admin-shell — app-shell.css handles grid layout based on bespoke child tags. Generic layout goes inside <admin-content> or inside <admin-page-body>.
1188
1194
  - Click forwarding patterns — [data-sidebar-toggle="<name>"] on a button forwards to <admin-sidebar[slot="<name>"]>.toggle(); [data-command-trigger] on a button forwards to <admin-command>.show(). The shell doesn't need to know about the buttons; the bespoke children own the behavior.
1189
- - Legacy data-attribute shapes were retired in v0.4.0 per ADR-0024. Do not author <aside data-sidebar>, <dialog data-command>, [data-resize], <aside-ui slot=>, <span data-spacer>, or <div data-actions> inside admin-shell.
1195
+ - Legacy data-attribute shapes were retired in v0.4.0 per ADR-0024. Do not author <aside data-sidebar>, <dialog data-command>, [data-sidebar-resize], <aside-ui slot=>, <span data-spacer>, or <div data-actions> inside admin-shell.
1190
1196
 
1191
1197
  ## AdminSidebar
1192
1198
  - admin-sidebar is the bespoke replacement for legacy <aside data-sidebar>. Use slot="leading" or slot="trailing" to position. Add resizable + collapsible attributes to opt in to interactive behaviors.
@@ -1,14 +1,14 @@
1
1
  {
2
- "catalogId": "adia.tiers@0.8.41",
2
+ "catalogId": "adia.tiers@0.8.42",
3
3
  "description": "Tier index of the AdiaUI catalog contract (ADR-0050). L0-L4 ladder; every tier-N entry is a declared composition of tier-(N-1) entries. L1 `composes` edges speak A2UI component TYPE names — the R-C7 catalogs’ `components` keys (genui-system SPEC R-C13). Derived — regenerate with `npm run build:catalog-tiers`, never hand-edit.",
4
4
  "extends": {
5
5
  "catalogId": "adia.base",
6
- "version": "0.8.41"
6
+ "version": "0.8.42"
7
7
  },
8
8
  "tiers": {
9
9
  "L0": {
10
10
  "composesTier": null,
11
- "count": 193,
11
+ "count": 194,
12
12
  "entries": {
13
13
  "A2UIRoot": {
14
14
  "category": "container",
@@ -352,6 +352,12 @@
352
352
  "origin": "primitive",
353
353
  "tag": "col-ui"
354
354
  },
355
+ "ColorArea": {
356
+ "category": "input",
357
+ "composes": [],
358
+ "origin": "primitive",
359
+ "tag": "color-area-ui"
360
+ },
355
361
  "ColorInput": {
356
362
  "category": "input",
357
363
  "composes": [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/a2ui",
3
- "version": "0.8.41",
3
+ "version": "0.8.42",
4
4
  "description": "The A2UI protocol — runtime (renderer, registry, streams, surface manifest, wiring primitives, dockable base classes) plus protocol-side validation. Framework-agnostic and dependency-free; pairs with any A2UI-conformant component set. Folded from @adia-ai/a2ui-runtime + the protocol half of @adia-ai/a2ui-validator (ADR-0048).",
5
5
  "type": "module",
6
6
  "exports": {
package/registry.js CHANGED
@@ -65,6 +65,7 @@ export const registry = new Map([
65
65
  ['RadioGroup', 'radio-group-ui'],
66
66
  ['DateTimeInput', 'calendar-picker-ui'],
67
67
  ['CalendarPicker', 'calendar-picker-ui'],
68
+ ['ColorArea', 'color-area-ui'],
68
69
  ['ColorPicker', 'color-picker-ui'],
69
70
  // Search deprecated — use Input type="search" prefix="magnifying-glass"
70
71
  ['Upload', 'upload-ui'],
@@ -187,6 +188,7 @@ export const registry = new Map([
187
188
  ['segment-ui', 'segment-ui'],
188
189
  ['command-ui', 'command-ui'],
189
190
  ['calendar-picker-ui', 'calendar-picker-ui'],
191
+ ['color-area-ui', 'color-area-ui'],
190
192
  ['color-picker-ui', 'color-picker-ui'],
191
193
  ['kbd-ui', 'kbd-ui'],
192
194
  ['toolbar-ui', 'toolbar-ui'],