@adia-ai/web-components 0.8.41 → 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.
Files changed (134) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/MIGRATION.md +240 -3
  3. package/USAGE.md +4 -4
  4. package/color/index.js +1 -1
  5. package/components/action-list/action-item.a2ui.json +7 -7
  6. package/components/action-list/action-item.yaml +21 -9
  7. package/components/action-list/action-list.class.js +13 -7
  8. package/components/action-list/action-list.d.ts +2 -2
  9. package/components/button/button.yaml +1 -1
  10. package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
  11. package/components/calendar-picker/calendar-picker.class.js +2 -3
  12. package/components/calendar-picker/calendar-picker.css +16 -18
  13. package/components/calendar-picker/calendar-picker.yaml +2 -2
  14. package/components/card/card.css +3 -3
  15. package/components/chart/chart.a2ui.json +8 -8
  16. package/components/chart/chart.class.js +21 -19
  17. package/components/chart/chart.d.ts +6 -6
  18. package/components/chart/chart.yaml +16 -9
  19. package/components/chart-legend/chart-legend.a2ui.json +7 -11
  20. package/components/chart-legend/chart-legend.class.js +17 -8
  21. package/components/chart-legend/chart-legend.css +5 -2
  22. package/components/chart-legend/chart-legend.d.ts +2 -2
  23. package/components/chart-legend/chart-legend.yaml +12 -8
  24. package/components/check/check.css +9 -0
  25. package/components/{color-picker/color-picker.a2ui.json → color-area/color-area.a2ui.json} +15 -12
  26. package/components/{color-picker/color-picker.class.js → color-area/color-area.class.js} +10 -8
  27. package/components/color-area/color-area.css +185 -0
  28. package/components/color-area/color-area.d.ts +66 -0
  29. package/components/color-area/color-area.examples.md +19 -0
  30. package/components/color-area/color-area.js +17 -0
  31. package/components/{color-picker/color-picker.yaml → color-area/color-area.yaml} +17 -9
  32. package/components/color-input/color-input.a2ui.json +5 -5
  33. package/components/color-input/color-input.class.js +9 -6
  34. package/components/color-input/color-input.css +1 -1
  35. package/components/color-input/color-input.js +2 -2
  36. package/components/color-input/color-input.yaml +14 -12
  37. package/components/description-list/description-list.a2ui.json +1 -1
  38. package/components/description-list/description-list.css +1 -1
  39. package/components/description-list/description-list.d.ts +1 -1
  40. package/components/description-list/description-list.yaml +1 -1
  41. package/components/drilldown/drilldown.a2ui.json +3 -0
  42. package/components/drilldown/drilldown.css +8 -1
  43. package/components/drilldown/drilldown.yaml +2 -0
  44. package/components/field/field.a2ui.json +1 -1
  45. package/components/field/field.class.js +5 -2
  46. package/components/field/field.yaml +1 -1
  47. package/components/index.js +1 -4
  48. package/components/input/input.a2ui.json +4 -4
  49. package/components/input/input.class.js +8 -0
  50. package/components/input/input.css +6 -0
  51. package/components/input/input.yaml +11 -8
  52. package/components/integration-card/integration-card.examples.md +2 -1
  53. package/components/menu/menu-item.a2ui.json +7 -7
  54. package/components/menu/menu-item.yaml +20 -7
  55. package/components/menu/menu.class.js +13 -7
  56. package/components/menu/menu.d.ts +2 -2
  57. package/components/pane/pane.a2ui.json +11 -11
  58. package/components/pane/pane.class.js +8 -4
  59. package/components/pane/pane.css +15 -10
  60. package/components/pane/pane.d.ts +10 -9
  61. package/components/pane/pane.yaml +9 -7
  62. package/components/progress/progress.a2ui.json +1 -1
  63. package/components/progress/progress.class.js +2 -2
  64. package/components/progress/progress.d.ts +1 -1
  65. package/components/progress/progress.yaml +2 -2
  66. package/components/radio/radio.css +7 -0
  67. package/components/search/search.css +10 -1
  68. package/components/segment/segment.a2ui.json +1 -2
  69. package/components/segment/segment.css +10 -0
  70. package/components/segment/segment.yaml +1 -2
  71. package/components/segmented/segmented.a2ui.json +1 -3
  72. package/components/segmented/segmented.class.js +2 -2
  73. package/components/segmented/segmented.yaml +2 -4
  74. package/components/select/select.css +6 -0
  75. package/components/step-progress/step-progress.yaml +1 -1
  76. package/components/swatch/swatch.yaml +1 -1
  77. package/components/switch/switch.css +8 -0
  78. package/components/table-toolbar/table-toolbar.a2ui.json +42 -1
  79. package/components/table-toolbar/table-toolbar.class.js +166 -14
  80. package/components/table-toolbar/table-toolbar.css +46 -0
  81. package/components/table-toolbar/table-toolbar.d.ts +13 -1
  82. package/components/table-toolbar/table-toolbar.yaml +104 -14
  83. package/components/textarea/textarea.css +4 -0
  84. package/components/time-picker/time-picker.yaml +3 -2
  85. package/components/tree/tree.yaml +1 -1
  86. package/components/upload/upload.class.js +16 -0
  87. package/components/upload/upload.d.ts +7 -0
  88. package/components/upload/upload.yaml +7 -3
  89. package/core/icons.js +3 -1
  90. package/custom-elements.json +147 -468
  91. package/dist/host.min.css +1 -1
  92. package/dist/host.sheet.js +1 -1
  93. package/dist/theme-provider.min.js +1 -1
  94. package/dist/web-components.min.css +1 -1
  95. package/dist/web-components.min.js +88 -85
  96. package/dist/web-components.sheet.js +1 -1
  97. package/index.d.ts +9 -13
  98. package/package.json +1 -1
  99. package/patterns/admin-shell/admin-shell.examples.html +2 -2
  100. package/patterns/chart-in-card/chart-in-card.examples.html +10 -10
  101. package/patterns/conversion-funnel/conversion-funnel.html +2 -2
  102. package/patterns/editor-shell/editor-shell.examples.html +3 -3
  103. package/patterns/form-system/form-system.examples.html +1 -1
  104. package/styles/colors/semantics/features.css +8 -1
  105. package/styles/components.css +1 -4
  106. package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -1
  107. package/traits/resize-observer/resize-observer.js +1 -1
  108. package/components/color-picker/color-picker.css +0 -182
  109. package/components/color-picker/color-picker.d.ts +0 -99
  110. package/components/color-picker/color-picker.examples.md +0 -19
  111. package/components/color-picker/color-picker.js +0 -17
  112. package/components/datetime-picker/datetime-picker.a2ui.json +0 -256
  113. package/components/datetime-picker/datetime-picker.class.js +0 -58
  114. package/components/datetime-picker/datetime-picker.css +0 -11
  115. package/components/datetime-picker/datetime-picker.d.ts +0 -87
  116. package/components/datetime-picker/datetime-picker.examples.md +0 -25
  117. package/components/datetime-picker/datetime-picker.js +0 -17
  118. package/components/datetime-picker/datetime-picker.yaml +0 -254
  119. package/components/progress-row/progress-row.a2ui.json +0 -107
  120. package/components/progress-row/progress-row.class.js +0 -118
  121. package/components/progress-row/progress-row.css +0 -60
  122. package/components/progress-row/progress-row.d.ts +0 -24
  123. package/components/progress-row/progress-row.examples.md +0 -7
  124. package/components/progress-row/progress-row.js +0 -17
  125. package/components/progress-row/progress-row.yaml +0 -85
  126. package/components/toggle-group/toggle-group.a2ui.json +0 -148
  127. package/components/toggle-group/toggle-group.class.js +0 -195
  128. package/components/toggle-group/toggle-group.css +0 -127
  129. package/components/toggle-group/toggle-group.d.ts +0 -50
  130. package/components/toggle-group/toggle-group.examples.md +0 -33
  131. package/components/toggle-group/toggle-group.js +0 -18
  132. package/components/toggle-group/toggle-group.yaml +0 -135
  133. package/components/toggle-group/toggle-option.a2ui.json +0 -86
  134. package/components/toggle-group/toggle-option.yaml +0 -75
@@ -137,7 +137,7 @@
137
137
  "declarations": [
138
138
  {
139
139
  "kind": "class",
140
- "description": "Child of <action-list-ui>. One actionable row — icon + label + optional subtitle, forwards activation to the parent action-list. Row contract converges on <menu-item-ui>: icon/text/subtitle/value/variant/disabled props and icon/text/subtitle/trailing slot overrides (#1363 C5).",
140
+ "description": "Child of <action-list-ui>. One actionable row — icon + label + optional description, forwards activation to the parent action-list. Row contract converges on <menu-item-ui>: icon/text/description/value/variant/disabled props and icon/text/subtitle/trailing slot overrides (#1363 C5). (The deprecated `subtitle` prop alias for `description` was cut in 0.8.43 — ADR-0063, gh#1571/gh#1617.)",
141
141
  "name": "UIActionItem",
142
142
  "tagName": "action-item-ui",
143
143
  "superclass": {
@@ -160,11 +160,11 @@
160
160
  "description": "Action label."
161
161
  },
162
162
  {
163
- "name": "subtitle",
163
+ "name": "description",
164
164
  "type": {
165
165
  "text": "string"
166
166
  },
167
- "description": "Optional secondary description line rendered under the label."
167
+ "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)."
168
168
  },
169
169
  {
170
170
  "name": "value",
@@ -201,7 +201,7 @@
201
201
  },
202
202
  {
203
203
  "name": "subtitle",
204
- "description": "Custom secondary-line content override; falls through to [subtitle] prop if not slotted."
204
+ "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."
205
205
  },
206
206
  {
207
207
  "name": "trailing",
@@ -1581,7 +1581,7 @@
1581
1581
  "declarations": [
1582
1582
  {
1583
1583
  "kind": "class",
1584
- "description": "Date (and, per `[precision]`, date+time) picker with trigger button and popover panel. Form-associated input emitting an ISO date (or, when `precision` is `minute`/`second`, ISO datetime) string via change events; supports min/max and disabled-date masks. Use for single-date or single-datetime input in forms; for date ranges use <date-range-picker-ui> instead of composing two calendar-picker instances. gh#1372 (#1363 C3c) folded <datetime-picker-ui>'s surface into this widened `precision` axis — see the deprecated <datetime-picker-ui> alias.",
1584
+ "description": "Date (and, per `[precision]`, date+time) picker with trigger button and popover panel. Form-associated input emitting an ISO date (or, when `precision` is `minute`/`second`, ISO datetime) string via change events; supports min/max and disabled-date masks. Use for single-date or single-datetime input in forms; for date ranges use <date-range-picker-ui> instead of composing two calendar-picker instances. gh#1372 (#1363 C3c) folded <datetime-picker-ui>'s surface into this widened `precision` axis — that thin alias component was cut in 0.8.43 (gh#1617); this is the sole tag now.",
1585
1585
  "name": "UICalendarPicker",
1586
1586
  "tagName": "calendar-picker-ui",
1587
1587
  "superclass": {
@@ -1768,195 +1768,6 @@
1768
1768
  }
1769
1769
  ]
1770
1770
  },
1771
- {
1772
- "kind": "javascript-module",
1773
- "path": "components/calendar-picker/calendar-picker.test.js",
1774
- "declarations": [
1775
- {
1776
- "kind": "class",
1777
- "description": "DEPRECATED (gh#1372, widened `precision` axis. `<datetime-picker-ui>` is now a thin `UICalendarPicker` subclass (see datetime-picker.class.js) rather than an independent implementation: `precision` defaults to `\"minute\"` (not `\"date\"`) and `placeholder` defaults to `\"Select date and time\"`; every other prop/event/token is inherited unchanged from <calendar-picker-ui>. Existing markup keeps working, but new markup should reach for `<calendar-picker-ui precision=\"minute\">` (or `precision=\"second\"`) directly. See <calendar-picker-ui> for the full contract.",
1778
- "name": "UIDatetimePicker",
1779
- "tagName": "datetime-picker-ui",
1780
- "superclass": {
1781
- "name": "UIElement",
1782
- "module": "/core/element.js"
1783
- },
1784
- "attributes": [
1785
- {
1786
- "name": "name",
1787
- "type": {
1788
- "text": "string"
1789
- },
1790
- "description": "Form field name. The ISO 8601 datetime is submitted under this key when the picker is inside a `<form>`."
1791
- },
1792
- {
1793
- "name": "value",
1794
- "type": {
1795
- "text": "string"
1796
- },
1797
- "description": "Current value as ISO 8601 datetime (\"YYYY-MM-DDTHH:mm\" or \"YYYY-MM-DDTHH:mm:ss\"). Empty when no value selected."
1798
- },
1799
- {
1800
- "name": "min",
1801
- "type": {
1802
- "text": "string"
1803
- },
1804
- "description": "Earliest selectable ISO 8601 datetime (inclusive). Days before are disabled in the calendar pane; times before are rejected by the time pane on the same day."
1805
- },
1806
- {
1807
- "name": "max",
1808
- "type": {
1809
- "text": "string"
1810
- },
1811
- "description": "Latest selectable ISO 8601 datetime (inclusive). Days after are disabled in the calendar pane; times after are rejected by the time pane on the same day."
1812
- },
1813
- {
1814
- "name": "step",
1815
- "type": {
1816
- "text": "number"
1817
- },
1818
- "default": "60",
1819
- "description": "Per-Arrow-keypress increment in seconds for the time pane. 60 = minute precision (default), 900 = 15-minute, 1 = second precision."
1820
- },
1821
- {
1822
- "name": "precision",
1823
- "type": {
1824
- "text": "string"
1825
- },
1826
- "default": "minute",
1827
- "description": "Time-pane precision. `minute` (default HERE — `date` on the base `<calendar-picker-ui>`) emits `HH:mm`; `second` exposes the seconds segment and emits `HH:mm:ss`; `date` drops the time pane entirely (identical to the base class's own default)."
1828
- },
1829
- {
1830
- "name": "hour-cycle",
1831
- "type": {
1832
- "text": "string"
1833
- },
1834
- "description": "Hour cycle for the time pane. Empty (default) derives from the document locale. `h12` forces a 12-hour cycle with an AM/PM (meridiem) segment; `h23` forces 24-hour cycle."
1835
- },
1836
- {
1837
- "name": "disabled",
1838
- "type": {
1839
- "text": "boolean"
1840
- },
1841
- "default": "false",
1842
- "description": "Block all interaction. Trigger remains rendered but does not open the popover."
1843
- },
1844
- {
1845
- "name": "readonly",
1846
- "type": {
1847
- "text": "boolean"
1848
- },
1849
- "default": "false",
1850
- "description": "Block edits; allow keyboard navigation for screen-reader inspection."
1851
- },
1852
- {
1853
- "name": "required",
1854
- "type": {
1855
- "text": "boolean"
1856
- },
1857
- "default": "false",
1858
- "description": "Required for validation when inside a `<form>`."
1859
- },
1860
- {
1861
- "name": "open",
1862
- "type": {
1863
- "text": "boolean"
1864
- },
1865
- "default": "false",
1866
- "description": "Whether the popover is currently open."
1867
- },
1868
- {
1869
- "name": "placeholder",
1870
- "type": {
1871
- "text": "string"
1872
- },
1873
- "default": "Select date and time",
1874
- "description": "Text shown in the trigger when the value is empty. Defaults to \"Select date and time\" HERE (vs. \"Select date...\" on the base `<calendar-picker-ui>`)."
1875
- },
1876
- {
1877
- "name": "format",
1878
- "type": {
1879
- "text": "string"
1880
- },
1881
- "default": "short",
1882
- "description": "Trigger button date format. `short`: `Jan 1, 2026 14:30`; `long`: `January 1, 2026 14:30`; `iso`: full ISO string."
1883
- },
1884
- {
1885
- "name": "locale",
1886
- "type": {
1887
- "text": "string"
1888
- },
1889
- "description": "BCP-47 locale tag used to derive hour-cycle when `hour-cycle` is empty. Falls back to `<html lang>` then to browser default."
1890
- },
1891
- {
1892
- "name": "placement",
1893
- "type": {
1894
- "text": "string"
1895
- },
1896
- "default": "bottom",
1897
- "description": "Popover placement relative to the trigger. Default `bottom` centers the calendar+time panel under the trigger (ADR-0034 Rule 2 — ~600px panel >> trigger)."
1898
- }
1899
- ],
1900
- "slots": [
1901
- {
1902
- "name": "trigger",
1903
- "description": "Custom trigger replacement. When omitted, a default trigger is stamped (a plain clickable span, per the base `<calendar-picker-ui>` — NOT the old standalone datetime-picker's `<button-ui>` trigger; see the Consequences note below)."
1904
- },
1905
- {
1906
- "name": "footer",
1907
- "description": "Optional Apply / Cancel buttons for explicit-commit flows. Spans both panes below the calendar + time area."
1908
- }
1909
- ],
1910
- "events": [
1911
- {
1912
- "name": "change",
1913
- "type": {
1914
- "text": "CustomEvent"
1915
- },
1916
- "description": "Fired when the value commits (date picked + time edited, OR Apply clicked in explicit-commit mode)."
1917
- },
1918
- {
1919
- "name": "input",
1920
- "type": {
1921
- "text": "CustomEvent"
1922
- },
1923
- "description": "Fired during partial selection (date picked but time still pending, or vice versa)."
1924
- },
1925
- {
1926
- "name": "open",
1927
- "type": {
1928
- "text": "CustomEvent"
1929
- },
1930
- "description": "Popover opened (user clicked the trigger or pressed Enter / Space)."
1931
- },
1932
- {
1933
- "name": "close",
1934
- "type": {
1935
- "text": "CustomEvent"
1936
- },
1937
- "description": "Popover closed (without commit, or after commit)."
1938
- },
1939
- {
1940
- "name": "invalid",
1941
- "type": {
1942
- "text": "CustomEvent"
1943
- },
1944
- "description": "A constraint failed (out of range, parse error)."
1945
- }
1946
- ]
1947
- }
1948
- ],
1949
- "exports": [
1950
- {
1951
- "kind": "custom-element-definition",
1952
- "name": "datetime-picker-ui",
1953
- "declaration": {
1954
- "name": "UIDatetimePicker",
1955
- "module": "./components/calendar-picker/calendar-picker.test.js"
1956
- }
1957
- }
1958
- ]
1959
- },
1960
1771
  {
1961
1772
  "kind": "javascript-module",
1962
1773
  "path": "components/canvas/canvas.js",
@@ -2146,12 +1957,12 @@
2146
1957
  "description": "Layout hint — drives flex-direction. Actual placement follows DOM order."
2147
1958
  },
2148
1959
  {
2149
- "name": "static",
1960
+ "name": "interactive",
2150
1961
  "type": {
2151
1962
  "text": "boolean"
2152
1963
  },
2153
- "default": "false",
2154
- "description": "When set, rows are non-interactive <span>s (no click, no toggle)."
1964
+ "default": "true",
1965
+ "description": "Canonical opt-in spelling (ADR-0063, gh#1563) — the deprecated `static` opt-out alias was cut in 0.8.43 (gh#1617). Rows are interactive <button>-role badges by default — this default stays `true` (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)."
2155
1966
  },
2156
1967
  {
2157
1968
  "name": "on-toggle",
@@ -2174,7 +1985,7 @@
2174
1985
  "type": {
2175
1986
  "text": "CustomEvent"
2176
1987
  },
2177
- "description": "Fires on row click (non-static). Detail: {key, active, mode}. `active` is the new state (true=visible). Consumers (or chart-ui via [for]) wire this to series visibility."
1988
+ "description": "Fires on row click when interactive. Detail: {key, active, mode}. `active` is the new state (true=visible). Consumers (or chart-ui via [for]) wire this to series visibility."
2178
1989
  }
2179
1990
  ]
2180
1991
  }
@@ -2228,28 +2039,28 @@
2228
2039
  "description": "Color scheme"
2229
2040
  },
2230
2041
  {
2231
- "name": "hide-average",
2042
+ "name": "no-average",
2232
2043
  "type": {
2233
2044
  "text": "boolean"
2234
2045
  },
2235
2046
  "default": "false",
2236
- "description": "When true, suppress the overlaid average line"
2047
+ "description": "When true, suppress the overlaid average line. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideAverage` dual-read shim was cut in 0.8.43 (gh#1617)."
2237
2048
  },
2238
2049
  {
2239
- "name": "hide-grid",
2050
+ "name": "no-grid",
2240
2051
  "type": {
2241
2052
  "text": "boolean"
2242
2053
  },
2243
2054
  "default": "false",
2244
- "description": "Hide gridlines"
2055
+ "description": "Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617)."
2245
2056
  },
2246
2057
  {
2247
- "name": "hide-values",
2058
+ "name": "no-values",
2248
2059
  "type": {
2249
2060
  "text": "boolean"
2250
2061
  },
2251
2062
  "default": "false",
2252
- "description": "Hide value labels"
2063
+ "description": "Hide value labels. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617)."
2253
2064
  },
2254
2065
  {
2255
2066
  "name": "corner-radius",
@@ -2846,13 +2657,13 @@
2846
2657
  },
2847
2658
  {
2848
2659
  "kind": "javascript-module",
2849
- "path": "components/color-input/color-input.js",
2660
+ "path": "components/color-area/color-area.js",
2850
2661
  "declarations": [
2851
2662
  {
2852
2663
  "kind": "class",
2853
- "description": "Compact form-bearing color input opens a popover-anchored `<color-picker-ui>` from an inline swatch button. §302 (v0.5.12, FEEDBACK-29 re-bucket from v0.6.0). Canonicalizes the USAGE.md §221f Option B recipe (popover + button + color-picker) into a single form-associated tag for inline form contexts (settings drawer \"source color\" field, swatch-row inline-edit, etc.).",
2854
- "name": "UIColorInput",
2855
- "tagName": "color-input-ui",
2664
+ "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>` was cut in 0.8.43 (gh#1617) — this is the sole tag now.",
2665
+ "name": "UIColorArea",
2666
+ "tagName": "color-area-ui",
2856
2667
  "superclass": {
2857
2668
  "name": "UIElement",
2858
2669
  "module": "/core/element.js"
@@ -2863,23 +2674,7 @@
2863
2674
  "type": {
2864
2675
  "text": "string"
2865
2676
  },
2866
- "description": "Form field name."
2867
- },
2868
- {
2869
- "name": "value",
2870
- "type": {
2871
- "text": "string"
2872
- },
2873
- "default": "#3b82f6",
2874
- "description": "Current color as a string in the active [format]."
2875
- },
2876
- {
2877
- "name": "format",
2878
- "type": {
2879
- "text": "string"
2880
- },
2881
- "default": "hex",
2882
- "description": "Output format for the value property + event detail. Hex (`#rrggbb`) or OKLCH (`oklch(L C H)`)."
2677
+ "description": "Form field name"
2883
2678
  },
2884
2679
  {
2885
2680
  "name": "disabled",
@@ -2887,23 +2682,23 @@
2887
2682
  "text": "boolean"
2888
2683
  },
2889
2684
  "default": "false",
2890
- "description": "Disables the trigger button + suppresses popover."
2685
+ "description": "Disables all interaction"
2891
2686
  },
2892
2687
  {
2893
- "name": "placement",
2688
+ "name": "format",
2894
2689
  "type": {
2895
2690
  "text": "string"
2896
2691
  },
2897
- "default": "bottom",
2898
- "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)."
2692
+ "default": "hex",
2693
+ "description": "Output format for the value property"
2899
2694
  },
2900
2695
  {
2901
- "name": "open",
2696
+ "name": "value",
2902
2697
  "type": {
2903
- "text": "boolean"
2698
+ "text": "string"
2904
2699
  },
2905
- "default": "false",
2906
- "description": "Reflects the popover's open state. Set programmatically to open/close the picker without a click."
2700
+ "default": "#3b82f6",
2701
+ "description": "Current color as hex string"
2907
2702
  },
2908
2703
  {
2909
2704
  "name": "maxChroma",
@@ -2911,7 +2706,7 @@
2911
2706
  "text": "number"
2912
2707
  },
2913
2708
  "default": "Infinity",
2914
- "description": "Generation constraint forwarded to the inner `<color-picker-ui>` (v0.5.13 §-TBD, FB-33 §1). Clamp the OKLCH chroma channel to at most this value. Default Infinity (no constraint)."
2709
+ "description": "Generation constraint (v0.4.9 §99h, FEEDBACK-02 OKLCH chroma channel to at most this value before commit. Out-of- bound mutations round-trip to the nearest in-bound equivalent + fire `constraint-clamp`. Default Infinity (no constraint)."
2915
2710
  },
2916
2711
  {
2917
2712
  "name": "maxL",
@@ -2919,7 +2714,7 @@
2919
2714
  "text": "number"
2920
2715
  },
2921
2716
  "default": "1",
2922
- "description": "Generation constraint forwarded to inner picker — clamp OKLCH lightness to at most this value (0..1). Default 1."
2717
+ "description": "Generation constraint — clamp OKLCH lightness to at most this value (0..1). Default 1 (no constraint)."
2923
2718
  },
2924
2719
  {
2925
2720
  "name": "minL",
@@ -2927,7 +2722,7 @@
2927
2722
  "text": "number"
2928
2723
  },
2929
2724
  "default": "0",
2930
- "description": "Generation constraint forwarded to inner picker — clamp OKLCH lightness to at least this value (0..1). Default 0."
2725
+ "description": "Generation constraint — clamp OKLCH lightness to at least this value (0..1). Default 0 (no constraint)."
2931
2726
  },
2932
2727
  {
2933
2728
  "name": "hueDriftMax",
@@ -2935,7 +2730,7 @@
2935
2730
  "text": "number"
2936
2731
  },
2937
2732
  "default": "NaN",
2938
- "description": "Generation constraint forwarded to inner picker — maximum allowed signed-shortest-path hue deviation (degrees) from baseHue. Default NaN (no constraint)."
2733
+ "description": "Generation constraint — maximum allowed signed-shortest-path hue deviation (degrees) from [base-hue] (or the first-committed hue if [base-hue] is unset). Default NaN (no constraint). Wrap-aware so a drift of 350 degrees resolves as -10."
2939
2734
  },
2940
2735
  {
2941
2736
  "name": "baseHue",
@@ -2943,7 +2738,7 @@
2943
2738
  "text": "number"
2944
2739
  },
2945
2740
  "default": "NaN",
2946
- "description": "Reference hue (degrees) for the hueDriftMax constraint, forwarded to inner picker. Default NaN — picker falls back to its hue at first commit."
2741
+ "description": "Reference hue (degrees) for the [hue-drift-max] constraint. Default NaN — falls back to the picker's hue at first commit so the consumer can pre-seed the picker and constrain drift from that initial value."
2947
2742
  }
2948
2743
  ],
2949
2744
  "events": [
@@ -2952,14 +2747,21 @@
2952
2747
  "type": {
2953
2748
  "text": "CustomEvent"
2954
2749
  },
2955
- "description": "Fired when the color is committed (pointerup / Enter / picker close). Bubbles from inner picker."
2750
+ "description": "Fired on every color change"
2956
2751
  },
2957
2752
  {
2958
2753
  "name": "input",
2959
2754
  "type": {
2960
2755
  "text": "CustomEvent"
2961
2756
  },
2962
- "description": "Fired during continuous drag of the inner picker. Bubbles from inner picker."
2757
+ "description": "Fired during continuous interaction (drag)"
2758
+ },
2759
+ {
2760
+ "name": "constraint-clamp",
2761
+ "type": {
2762
+ "text": "CustomEvent"
2763
+ },
2764
+ "description": "Fired immediately before `change` / `input` when one or more consumer-declared constraints (max-chroma / max-l / min-l / hue-drift-max) clamped a channel away from the user-requested value. detail.clamps is an array of axis-specific clamp records."
2963
2765
  }
2964
2766
  ]
2965
2767
  }
@@ -2967,23 +2769,23 @@
2967
2769
  "exports": [
2968
2770
  {
2969
2771
  "kind": "custom-element-definition",
2970
- "name": "color-input-ui",
2772
+ "name": "color-area-ui",
2971
2773
  "declaration": {
2972
- "name": "UIColorInput",
2973
- "module": "./components/color-input/color-input.js"
2774
+ "name": "UIColorArea",
2775
+ "module": "./components/color-area/color-area.js"
2974
2776
  }
2975
2777
  }
2976
2778
  ]
2977
2779
  },
2978
2780
  {
2979
2781
  "kind": "javascript-module",
2980
- "path": "components/color-picker/color-picker.js",
2782
+ "path": "components/color-input/color-input.js",
2981
2783
  "declarations": [
2982
2784
  {
2983
2785
  "kind": "class",
2984
- "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.",
2985
- "name": "UIColorPicker",
2986
- "tagName": "color-picker-ui",
2786
+ "description": "Compact form-bearing color input opens a popover-anchored `<color-area-ui>` from an inline swatch button. §302 (v0.5.12, FEEDBACK-29 re-bucket from v0.6.0). Canonicalizes the USAGE.md §221f Option B recipe (popover + button + color-area) into a single form-associated tag for inline form contexts (settings drawer \"source color\" field, swatch-row inline-edit, etc.). Composes `<color-area-ui>` (ADR-0063, gh#1563 — renamed from `<color-picker-ui>`, cut in 0.8.43, gh#1617); `color-input-ui`'s own tag/name is unaffected.",
2787
+ "name": "UIColorInput",
2788
+ "tagName": "color-input-ui",
2987
2789
  "superclass": {
2988
2790
  "name": "UIElement",
2989
2791
  "module": "/core/element.js"
@@ -2994,15 +2796,15 @@
2994
2796
  "type": {
2995
2797
  "text": "string"
2996
2798
  },
2997
- "description": "Form field name"
2799
+ "description": "Form field name."
2998
2800
  },
2999
2801
  {
3000
- "name": "disabled",
2802
+ "name": "value",
3001
2803
  "type": {
3002
- "text": "boolean"
2804
+ "text": "string"
3003
2805
  },
3004
- "default": "false",
3005
- "description": "Disables all interaction"
2806
+ "default": "#3b82f6",
2807
+ "description": "Current color as a string in the active [format]."
3006
2808
  },
3007
2809
  {
3008
2810
  "name": "format",
@@ -3010,15 +2812,31 @@
3010
2812
  "text": "string"
3011
2813
  },
3012
2814
  "default": "hex",
3013
- "description": "Output format for the value property"
2815
+ "description": "Output format for the value property + event detail. Hex (`#rrggbb`) or OKLCH (`oklch(L C H)`)."
3014
2816
  },
3015
2817
  {
3016
- "name": "value",
2818
+ "name": "disabled",
2819
+ "type": {
2820
+ "text": "boolean"
2821
+ },
2822
+ "default": "false",
2823
+ "description": "Disables the trigger button + suppresses popover."
2824
+ },
2825
+ {
2826
+ "name": "placement",
3017
2827
  "type": {
3018
2828
  "text": "string"
3019
2829
  },
3020
- "default": "#3b82f6",
3021
- "description": "Current color as hex string"
2830
+ "default": "bottom",
2831
+ "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)."
2832
+ },
2833
+ {
2834
+ "name": "open",
2835
+ "type": {
2836
+ "text": "boolean"
2837
+ },
2838
+ "default": "false",
2839
+ "description": "Reflects the popover's open state. Set programmatically to open/close the picker without a click."
3022
2840
  },
3023
2841
  {
3024
2842
  "name": "maxChroma",
@@ -3026,7 +2844,7 @@
3026
2844
  "text": "number"
3027
2845
  },
3028
2846
  "default": "Infinity",
3029
- "description": "Generation constraint (v0.4.9 §99h, FEEDBACK-02 OKLCH chroma channel to at most this value before commit. Out-of- bound mutations round-trip to the nearest in-bound equivalent + fire `constraint-clamp`. Default Infinity (no constraint)."
2847
+ "description": "Generation constraint forwarded to the inner `<color-area-ui>` (v0.5.13 §-TBD, FB-33 §1). Clamp the OKLCH chroma channel to at most this value. Default Infinity (no constraint)."
3030
2848
  },
3031
2849
  {
3032
2850
  "name": "maxL",
@@ -3034,7 +2852,7 @@
3034
2852
  "text": "number"
3035
2853
  },
3036
2854
  "default": "1",
3037
- "description": "Generation constraint — clamp OKLCH lightness to at most this value (0..1). Default 1 (no constraint)."
2855
+ "description": "Generation constraint forwarded to inner picker — clamp OKLCH lightness to at most this value (0..1). Default 1."
3038
2856
  },
3039
2857
  {
3040
2858
  "name": "minL",
@@ -3042,7 +2860,7 @@
3042
2860
  "text": "number"
3043
2861
  },
3044
2862
  "default": "0",
3045
- "description": "Generation constraint — clamp OKLCH lightness to at least this value (0..1). Default 0 (no constraint)."
2863
+ "description": "Generation constraint forwarded to inner picker — clamp OKLCH lightness to at least this value (0..1). Default 0."
3046
2864
  },
3047
2865
  {
3048
2866
  "name": "hueDriftMax",
@@ -3050,7 +2868,7 @@
3050
2868
  "text": "number"
3051
2869
  },
3052
2870
  "default": "NaN",
3053
- "description": "Generation constraint — maximum allowed signed-shortest-path hue deviation (degrees) from [base-hue] (or the first-committed hue if [base-hue] is unset). Default NaN (no constraint). Wrap-aware so a drift of 350 degrees resolves as -10."
2871
+ "description": "Generation constraint forwarded to inner picker — maximum allowed signed-shortest-path hue deviation (degrees) from baseHue. Default NaN (no constraint)."
3054
2872
  },
3055
2873
  {
3056
2874
  "name": "baseHue",
@@ -3058,7 +2876,7 @@
3058
2876
  "text": "number"
3059
2877
  },
3060
2878
  "default": "NaN",
3061
- "description": "Reference hue (degrees) for the [hue-drift-max] constraint. Default NaN — falls back to the picker's hue at first commit so the consumer can pre-seed the picker and constrain drift from that initial value."
2879
+ "description": "Reference hue (degrees) for the hueDriftMax constraint, forwarded to inner picker. Default NaN — picker falls back to its hue at first commit."
3062
2880
  }
3063
2881
  ],
3064
2882
  "events": [
@@ -3067,21 +2885,14 @@
3067
2885
  "type": {
3068
2886
  "text": "CustomEvent"
3069
2887
  },
3070
- "description": "Fired on every color change"
2888
+ "description": "Fired when the color is committed (pointerup / Enter / picker close). Bubbles from inner picker."
3071
2889
  },
3072
2890
  {
3073
2891
  "name": "input",
3074
2892
  "type": {
3075
2893
  "text": "CustomEvent"
3076
2894
  },
3077
- "description": "Fired during continuous interaction (drag)"
3078
- },
3079
- {
3080
- "name": "constraint-clamp",
3081
- "type": {
3082
- "text": "CustomEvent"
3083
- },
3084
- "description": "Fired immediately before `change` / `input` when one or more consumer-declared constraints (max-chroma / max-l / min-l / hue-drift-max) clamped a channel away from the user-requested value. detail.clamps is an array of axis-specific clamp records."
2895
+ "description": "Fired during continuous drag of the inner picker. Bubbles from inner picker."
3085
2896
  }
3086
2897
  ]
3087
2898
  }
@@ -3089,10 +2900,10 @@
3089
2900
  "exports": [
3090
2901
  {
3091
2902
  "kind": "custom-element-definition",
3092
- "name": "color-picker-ui",
2903
+ "name": "color-input-ui",
3093
2904
  "declaration": {
3094
- "name": "UIColorPicker",
3095
- "module": "./components/color-picker/color-picker.js"
2905
+ "name": "UIColorInput",
2906
+ "module": "./components/color-input/color-input.js"
3096
2907
  }
3097
2908
  }
3098
2909
  ]
@@ -3792,7 +3603,7 @@
3792
3603
  "text": "string"
3793
3604
  },
3794
3605
  "default": "start",
3795
- "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."
3606
+ "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."
3796
3607
  },
3797
3608
  {
3798
3609
  "name": "items",
@@ -4514,7 +4325,7 @@
4514
4325
  "slots": [
4515
4326
  {
4516
4327
  "name": "default",
4517
- "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. DO 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."
4328
+ "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. DO 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."
4518
4329
  },
4519
4330
  {
4520
4331
  "name": "trailing",
@@ -5200,7 +5011,7 @@
5200
5011
  "text": "string"
5201
5012
  },
5202
5013
  "default": "text",
5203
- "description": "Input type. `password` wraps a native `<input>` for disc masking; `number` renders a contenteditable + stepper buttons (no native input). `text`/`email`/`tel`/`url` use plain contenteditable. input-ui does NOT implement date/time/color/search affordances — those HTML5 type values render as a plain contenteditable with no calendar, clock, swatch, or search affordance (first-pass-VALID against this enum historically, but functionally broken generation output). Use the owning primitive instead — CalendarPicker for date (+ month/week, no dedicated granularity primitive exists), DatetimePicker for datetime-local, TimePicker for time, ColorInput/ColorPicker for color, Search for search. See anti_patterns."
5014
+ "description": "Input type. `password` wraps a native `<input>` for disc masking; `number` renders a contenteditable + stepper buttons (no native input). `text`/`email`/`tel`/`url` use plain contenteditable. input-ui does NOT implement date/time/color/search affordances — those HTML5 type values render as a plain contenteditable with no calendar, clock, swatch, or search affordance (first-pass-VALID against this enum historically, but functionally broken generation output). Use the owning primitive instead — CalendarPicker for date (+ month/week, no dedicated granularity primitive exists), CalendarPicker precision=\"minute\" for datetime-local, TimePicker for time, ColorInput/ColorArea for color, Search for search. See anti_patterns."
5204
5015
  },
5205
5016
  {
5206
5017
  "name": "required",
@@ -6153,7 +5964,7 @@
6153
5964
  },
6154
5965
  {
6155
5966
  "kind": "class",
6156
- "description": "Child of `<menu-ui>`. One actionable row inside a menu, with optional leading icon + label + subtitle + value.",
5967
+ "description": "Child of `<menu-ui>`. One actionable row inside a menu, with optional leading icon + label + description + value. (The deprecated `subtitle` prop alias for `description` was cut in 0.8.43 — ADR-0063, gh#1563/gh#1617.)",
6157
5968
  "name": "UIMenuItem",
6158
5969
  "tagName": "menu-item-ui",
6159
5970
  "superclass": {
@@ -6176,11 +5987,11 @@
6176
5987
  "description": "Item label text."
6177
5988
  },
6178
5989
  {
6179
- "name": "subtitle",
5990
+ "name": "description",
6180
5991
  "type": {
6181
5992
  "text": "string"
6182
5993
  },
6183
- "description": "Optional secondary description line rendered under the label."
5994
+ "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`. The deprecated `subtitle` prop alias was cut in 0.8.43 (gh#1617)."
6184
5995
  },
6185
5996
  {
6186
5997
  "name": "value",
@@ -6217,7 +6028,7 @@
6217
6028
  },
6218
6029
  {
6219
6030
  "name": "subtitle",
6220
- "description": "Custom secondary-line content override; falls through to `[subtitle]` prop if not slotted."
6031
+ "description": "Custom secondary-line content override; falls through to the `[description]` prop if not slotted (ADR-0063, gh#1563 — 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."
6221
6032
  },
6222
6033
  {
6223
6034
  "name": "trailing",
@@ -7337,7 +7148,7 @@
7337
7148
  "declarations": [
7338
7149
  {
7339
7150
  "kind": "class",
7340
- "description": "Collapsible, resizable content panel — drag-resize handle on the inner edge when [side=\"leading\"] / [side=\"trailing\"], [resizable] opt-in. Used standalone for resizable two-pane layouts, or wrapped by <editor-sidebar> / <admin-sidebar> which DELEGATE drag to the inner pane-ui rather than reimplementing it. See pane.yaml's a2ui.rules for the full composition contract.",
7151
+ "description": "Collapsible, resizable content panel — drag-resize handle on the inner edge when [edge=\"leading\"] / [edge=\"trailing\"], [resizable] opt-in. Used standalone for resizable two-pane layouts, or wrapped by <editor-sidebar> / <admin-sidebar> which DELEGATE drag to the inner pane-ui rather than reimplementing it. See pane.yaml's a2ui.rules for the full composition contract.",
7341
7152
  "name": "UIPane",
7342
7153
  "tagName": "pane-ui",
7343
7154
  "superclass": {
@@ -7378,7 +7189,7 @@
7378
7189
  "description": "Component property: resizable."
7379
7190
  },
7380
7191
  {
7381
- "name": "side",
7192
+ "name": "edge",
7382
7193
  "type": {
7383
7194
  "text": "string"
7384
7195
  },
@@ -7682,81 +7493,13 @@
7682
7493
  }
7683
7494
  ]
7684
7495
  },
7685
- {
7686
- "kind": "javascript-module",
7687
- "path": "components/progress-row/progress-row.js",
7688
- "declarations": [
7689
- {
7690
- "kind": "class",
7691
- "description": "DEPRECATED (gh#1363 C4) — absorbed into <progress-ui>: set `label` (and optional `meta`) directly on <progress-ui> instead, which activates the identical row layout in place. progress-row-ui keeps working (still composes <progress-ui> internally, unchanged behavior) for existing back-compat markup, but is no longer taught or generated for new work. Was: inline labeled progress row with label, progress bar, and meta text — storage quotas, capacity breakdowns, usage indicators.",
7692
- "name": "UIProgressRow",
7693
- "tagName": "progress-row-ui",
7694
- "superclass": {
7695
- "name": "UIElement",
7696
- "module": "/core/element.js"
7697
- },
7698
- "attributes": [
7699
- {
7700
- "name": "label",
7701
- "type": {
7702
- "text": "string"
7703
- },
7704
- "description": "Left-hand label text"
7705
- },
7706
- {
7707
- "name": "meta",
7708
- "type": {
7709
- "text": "string"
7710
- },
7711
- "description": "Right-hand meta text (e.g. '32 GB', '4.2k / 10k')"
7712
- },
7713
- {
7714
- "name": "value",
7715
- "type": {
7716
- "text": "number"
7717
- },
7718
- "default": "null",
7719
- "description": "Progress value 0-100 (null = indeterminate; legacy -1 accepted for back-compat)"
7720
- },
7721
- {
7722
- "name": "variant",
7723
- "type": {
7724
- "text": "string"
7725
- },
7726
- "default": "default",
7727
- "description": "Color variant for the progress fill"
7728
- }
7729
- ],
7730
- "slots": [
7731
- {
7732
- "name": "label",
7733
- "description": "Label region — control label."
7734
- },
7735
- {
7736
- "name": "meta",
7737
- "description": "Child content region for the `meta` slot."
7738
- }
7739
- ]
7740
- }
7741
- ],
7742
- "exports": [
7743
- {
7744
- "kind": "custom-element-definition",
7745
- "name": "progress-row-ui",
7746
- "declaration": {
7747
- "name": "UIProgressRow",
7748
- "module": "./components/progress-row/progress-row.js"
7749
- }
7750
- }
7751
- ]
7752
- },
7753
7496
  {
7754
7497
  "kind": "javascript-module",
7755
7498
  "path": "components/progress/progress.js",
7756
7499
  "declarations": [
7757
7500
  {
7758
7501
  "kind": "class",
7759
- "description": "Linear progress bar indicator. Value < 0 marks indeterminate state showing animated activity instead of a fill. Bar-only — for circular loading indicators use <spinner-ui> instead (the former `variant=\"spinner\"` render mode was retired; spinner-ui owns circular). Set `label` for a labeled task-list row (label + bar + optional `meta` text in one row, e.g. storage quotas, capacity breakdowns) — absorbed <progress-row-ui>'s row layout directly; that component is now a deprecated alias. Omit `label` for a standalone bar (global loading indicators); for percent-complete inline displays use <stat-ui> instead.",
7502
+ "description": "Linear progress bar indicator. Value < 0 marks indeterminate state showing animated activity instead of a fill. Bar-only — for circular loading indicators use <spinner-ui> instead (the former `variant=\"spinner\"` render mode was retired; spinner-ui owns circular). Set `label` for a labeled task-list row (label + bar + optional `meta` text in one row, e.g. storage quotas, capacity breakdowns) — absorbed <progress-row-ui>'s row layout directly; that component was cut in 0.8.43 (gh#1617). Omit `label` for a standalone bar (global loading indicators); for percent-complete inline displays use <stat-ui> instead.",
7760
7503
  "name": "UIProgress",
7761
7504
  "tagName": "progress-ui",
7762
7505
  "superclass": {
@@ -8658,7 +8401,7 @@
8658
8401
  "text": "boolean"
8659
8402
  },
8660
8403
  "default": "false",
8661
- "description": "Enables multi-select — value becomes a comma-separated set, the sliding indicator is suppressed (each selected segment carries its own background instead), and Space/Enter toggles a focused segment instead of arrow-move selecting it. Positive polarity, matching select-ui[multiple]. Absorbs the role of the deprecated <toggle-group-ui> + <toggle-option-ui> pair (gh#1369, #1363 C1). Unlike <toggle-group-ui single>, re-clicking an already-selected segment does NOT clear the selection — segmented-ui's single-select is standard radiogroup semantics (always exactly one selected once a value is set)."
8404
+ "description": "Enables multi-select — value becomes a comma-separated set, the sliding indicator is suppressed (each selected segment carries its own background instead), and Space/Enter toggles a focused segment instead of arrow-move selecting it. Positive polarity, matching select-ui[multiple]. Absorbs the role of the <toggle-group-ui> + <toggle-option-ui> pair (gh#1369, #1363 C1) — those components were cut in 0.8.43 (gh#1617). Unlike the former <toggle-group-ui single>, re-clicking an already-selected segment does NOT clear the selection — segmented-ui's single-select is standard radiogroup semantics (always exactly one selected once a value is set)."
8662
8405
  },
8663
8406
  {
8664
8407
  "name": "allow-empty",
@@ -10147,7 +9890,7 @@
10147
9890
  "declarations": [
10148
9891
  {
10149
9892
  "kind": "class",
10150
- "description": "Header / companion bar for a sibling table-ui. Renders title + count badge, filter / sort / columns popovers, and a search input — all wired to the target table via an [for] id-ref. Modeled on chart-legend-ui's [for] binding pattern. Drop next to (or above) any table-ui to add the standard data-grid toolbar without re-implementing search, filter, sort, or column visibility. Filter rows auto-pick a primitive per column: ≤ 50 distinct values → multi- select (searchable when ≥ 12 options), id-like keys → free-text contains. The column descriptor's `filter` field overrides the auto-detect: `'select'` forces multi-select even on high-cardinality columns; `'text'` forces a contains input even on small enums.",
9893
+ "description": "Header / companion bar for a sibling table-ui. Renders an optional leading [slot=\"scope\"] region, title + count badge, an optional \"Showing X–Y of N\" range summary, filter / sort / columns popovers, a search input, an optional page-size select, and a trailing [slot=\"actions\"] region — all wired to the target table via an [for] id-ref. Modeled on chart-legend-ui's [for] binding pattern. Drop next to (or above) any table-ui to add the standard data-grid toolbar without re-implementing search, filter, sort, column visibility, or pagination summary/page-size. Filter rows auto-pick a primitive per column: ≤ 50 distinct values → multi-select (searchable when ≥ 12 options), id-like keys → free-text contains. The column descriptor's `filter` field overrides the auto-detect: `'select'` forces multi-select even on high-cardinality columns; `'text'` forces a contains input even on small enums.",
10151
9894
  "name": "UITableToolbar",
10152
9895
  "tagName": "table-toolbar-ui",
10153
9896
  "superclass": {
@@ -10176,6 +9919,46 @@
10176
9919
  },
10177
9920
  "description": "Optional count badge value shown next to the title. When unset, falls back to the row count of the bound table."
10178
9921
  },
9922
+ {
9923
+ "name": "range-start",
9924
+ "type": {
9925
+ "text": "number"
9926
+ },
9927
+ "default": "0",
9928
+ "description": "1-indexed first row number of the current page, for the \"Showing X–Y of N\" range summary (e.g. `1` in \"Showing 1–25 of 320\"). Renders alongside — never in place of — [text]/[count]; the range summary is its own cluster, independent of the title cluster. All three of rangeStart/rangeEnd/rangeTotal must be set (> 0) for the summary to render; omit all three (the default) to opt out entirely."
9929
+ },
9930
+ {
9931
+ "name": "range-end",
9932
+ "type": {
9933
+ "text": "number"
9934
+ },
9935
+ "default": "0",
9936
+ "description": "1-indexed last row number of the current page, for the range summary (e.g. `25` in \"Showing 1–25 of 320\"). See rangeStart."
9937
+ },
9938
+ {
9939
+ "name": "range-total",
9940
+ "type": {
9941
+ "text": "number"
9942
+ },
9943
+ "default": "0",
9944
+ "description": "Total row count across all pages, for the range summary (e.g. `320` in \"Showing 1–25 of 320\"). Distinct from pagination-ui's `total` (total PAGES) — this is total ROWS; deliberately not spelled `total` to avoid that cross-sibling name collision (ADR-0063 B5). See rangeStart."
9945
+ },
9946
+ {
9947
+ "name": "page-size",
9948
+ "type": {
9949
+ "text": "number"
9950
+ },
9951
+ "default": "0",
9952
+ "description": "Current rows-per-page value, shown as the selected option in the page-size select. Falls back to the first entry of pageSizeOptions when unset (0) or not present among the options. Applied directly to the bound table's own [paginate] prop (rows-per-page), the same way filter/sort/columns changes are applied to the target — mirror this prop only to reflect state to URL / persistence / analytics."
9953
+ },
9954
+ {
9955
+ "name": "pageSizeOptions",
9956
+ "type": {
9957
+ "text": "array"
9958
+ },
9959
+ "default": "[]",
9960
+ "description": "Rows-per-page choices rendered as `<option>`s in the page-size select (e.g. `[10, 25, 50, 100]`). JS property (`.pageSizeOptions = [...]`), or a declarative JSON-array `page-size-options=\"[10,25,50]\"` attribute hydrated once at connect — the same dynamic-array pattern table-ui's own `columns`/`data` props use. Empty (the default) hides the page-size select entirely — additive opt-in, no footprint on existing consumers."
9961
+ },
10179
9962
  {
10180
9963
  "name": "no-filter",
10181
9964
  "type": {
@@ -10226,6 +10009,10 @@
10226
10009
  }
10227
10010
  ],
10228
10011
  "slots": [
10012
+ {
10013
+ "name": "scope",
10014
+ "description": "Leading region rendered BEFORE the [text]/[count] title cluster — e.g. a scope/view-switcher menu (an org's teams, a saved view). Positioning is CSS by DOM order, mirroring how [slot=\"actions\"] is a real, author-fillable insertion point rather than template-stamped content."
10015
+ },
10229
10016
  {
10230
10017
  "name": "actions",
10231
10018
  "description": "Trailing action area — primary buttons (e.g. \"New row\") rendered after the search input."
@@ -10259,6 +10046,13 @@
10259
10046
  "text": "CustomEvent"
10260
10047
  },
10261
10048
  "description": "Column visibility changed. Detail: { hiddenColumns }."
10049
+ },
10050
+ {
10051
+ "name": "page-size-change",
10052
+ "type": {
10053
+ "text": "CustomEvent"
10054
+ },
10055
+ "description": "Page-size select changed. Detail: { pageSize }."
10262
10056
  }
10263
10057
  ]
10264
10058
  }
@@ -11600,121 +11394,6 @@
11600
11394
  }
11601
11395
  ]
11602
11396
  },
11603
- {
11604
- "kind": "javascript-module",
11605
- "path": "components/toggle-group/toggle-group.js",
11606
- "declarations": [
11607
- {
11608
- "kind": "class",
11609
- "description": "DEPRECATED (gh#1369) — use <segmented-ui multiple> + <segment-ui> instead. Multi-select button group (unlike <segmented-ui> which is single-select by default). Hosts <toggle-option-ui> children, each independently toggleable; emits change events with the active value set.",
11610
- "name": "UIToggleGroup",
11611
- "tagName": "toggle-group-ui",
11612
- "superclass": {
11613
- "name": "UIElement",
11614
- "module": "/core/element.js"
11615
- },
11616
- "attributes": [
11617
- {
11618
- "name": "single",
11619
- "type": {
11620
- "text": "boolean"
11621
- },
11622
- "default": "false",
11623
- "description": "When true, restrict to one active option (single-select) — clicking the already-selected option again CLEARS it (empty value), unlike a native radiogroup. Migration (gh#1369): [single]=true maps to plain <segmented-ui> (no [multiple]) — note segmented-ui's single-select never clears on re-click, it's standard radiogroup semantics; the default (false, multi-select) maps to <segmented-ui multiple>."
11624
- },
11625
- {
11626
- "name": "value",
11627
- "type": {
11628
- "text": "string"
11629
- },
11630
- "description": "Comma-separated selected values"
11631
- }
11632
- ],
11633
- "slots": [
11634
- {
11635
- "name": "default",
11636
- "description": "Default slot — primary child content."
11637
- }
11638
- ],
11639
- "events": [
11640
- {
11641
- "name": "change",
11642
- "type": {
11643
- "text": "CustomEvent"
11644
- },
11645
- "description": "Fired when selection changes. detail: { value }"
11646
- }
11647
- ]
11648
- },
11649
- {
11650
- "kind": "class",
11651
- "description": "DEPRECATED (gh#1369) — use `<segment-ui>` inside `<segmented-ui multiple>` instead. Child of `<toggle-group-ui>`. One toggleable option inside a single-select or multi-select group. Pressed state mirrors `value` against the parent's selection.",
11652
- "name": "UIToggleOption",
11653
- "tagName": "toggle-option-ui",
11654
- "superclass": {
11655
- "name": "UIElement",
11656
- "module": "/core/element.js"
11657
- },
11658
- "attributes": [
11659
- {
11660
- "name": "value",
11661
- "type": {
11662
- "text": "string"
11663
- },
11664
- "description": "Stable identifier matched against the parent group's `value`."
11665
- },
11666
- {
11667
- "name": "text",
11668
- "type": {
11669
- "text": "string"
11670
- },
11671
- "description": "Visible label text."
11672
- },
11673
- {
11674
- "name": "icon",
11675
- "type": {
11676
- "text": "string"
11677
- },
11678
- "description": "Optional Phosphor icon name; renders as a leading icon."
11679
- },
11680
- {
11681
- "name": "disabled",
11682
- "type": {
11683
- "text": "boolean"
11684
- },
11685
- "default": "false",
11686
- "description": "Disabled state — blocks pointer + keyboard activation."
11687
- },
11688
- {
11689
- "name": "selected",
11690
- "type": {
11691
- "text": "boolean"
11692
- },
11693
- "default": "false",
11694
- "description": "Whether this option is currently selected. Managed by the parent <toggle-group-ui> container (ADR-0056) — don't set directly; the group's `value` is the single source of truth. Converges onto <segment-ui>'s declared reflected-prop mechanism."
11695
- }
11696
- ]
11697
- }
11698
- ],
11699
- "exports": [
11700
- {
11701
- "kind": "custom-element-definition",
11702
- "name": "toggle-group-ui",
11703
- "declaration": {
11704
- "name": "UIToggleGroup",
11705
- "module": "./components/toggle-group/toggle-group.js"
11706
- }
11707
- },
11708
- {
11709
- "kind": "custom-element-definition",
11710
- "name": "toggle-option-ui",
11711
- "declaration": {
11712
- "name": "UIToggleOption",
11713
- "module": "./components/toggle-group/toggle-group.js"
11714
- }
11715
- }
11716
- ]
11717
- },
11718
11397
  {
11719
11398
  "kind": "javascript-module",
11720
11399
  "path": "components/toggle-scheme/toggle-scheme.js",