@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
@@ -1,9 +1,7 @@
1
- /* gh#1372, #1363 C3c — datetime-picker-ui is now a thin UICalendarPicker
2
- subclass (see ../datetime-picker/datetime-picker.class.js); its own CSS
3
- file no longer carries independent rules. The scope root below covers
4
- BOTH tags so a <datetime-picker-ui> host renders identically to
5
- <calendar-picker-ui precision="minute">. */
6
- @scope (calendar-picker-ui, datetime-picker-ui) {
1
+ /* gh#1372, #1363 C3c — datetime-picker-ui was a thin UICalendarPicker
2
+ subclass folding datetime mode into this component's widened precision
3
+ axis; cut in 0.8.43 (gh#1617). calendar-picker-ui is the sole tag now. */
4
+ @scope (calendar-picker-ui) {
7
5
  :where(:scope) {
8
6
  /* ── Tokens ── */
9
7
 
@@ -192,7 +190,7 @@
192
190
  /* ── Calendar popover (outside @scope — popover lives in top layer) ── */
193
191
  /* Custom properties inherit from the host, so --calendar-picker-* tokens are available here. */
194
192
 
195
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] {
193
+ calendar-picker-ui [slot="popover"] {
196
194
  margin: 0;
197
195
  padding: var(--calendar-picker-popover-padding);
198
196
  border: 1px solid var(--calendar-picker-popover-border);
@@ -211,7 +209,7 @@
211
209
  translate var(--a-duration-fast) var(--a-easing-out);
212
210
  }
213
211
 
214
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"]:popover-open {
212
+ calendar-picker-ui [slot="popover"]:popover-open {
215
213
  @starting-style {
216
214
  opacity: 0;
217
215
  translate: 0 -4px;
@@ -219,7 +217,7 @@
219
217
  }
220
218
 
221
219
  @media (prefers-reduced-motion: reduce) {
222
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] { transition: none; }
220
+ calendar-picker-ui [slot="popover"] { transition: none; }
223
221
  }
224
222
 
225
223
  /* ── Substrate grid (gh#1371, #1363 C3a) ──
@@ -231,7 +229,7 @@
231
229
  so an existing consumer override keeps working unchanged (non-breaking —
232
230
  ADR-0055 precedent) and mirrors date-range-picker's own
233
231
  `date-range-picker-ui calendar-grid-ui { --calendar-grid-*: … }` pattern. */
234
- :is(calendar-picker-ui, datetime-picker-ui) calendar-grid-ui {
232
+ calendar-picker-ui calendar-grid-ui {
235
233
  --calendar-grid-header-gap: var(--calendar-picker-header-gap);
236
234
  --calendar-grid-header-mb: var(--calendar-picker-header-mb);
237
235
  --calendar-grid-title-fg: var(--calendar-picker-title-fg);
@@ -281,11 +279,11 @@
281
279
  single-pane (date-only, default) popover keeps its original fixed-width
282
280
  block layout unchanged. Ported near-verbatim from the former
283
281
  datetime-picker.css. */
284
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"]:has([data-time-pane]) {
282
+ calendar-picker-ui [slot="popover"]:has([data-time-pane]) {
285
283
  width: auto;
286
284
  }
287
285
 
288
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"]:has([data-time-pane]):popover-open {
286
+ calendar-picker-ui [slot="popover"]:has([data-time-pane]):popover-open {
289
287
  display: grid;
290
288
  grid-template-columns: auto auto auto;
291
289
  grid-template-areas: "cal divider time";
@@ -293,22 +291,22 @@
293
291
  align-items: start;
294
292
  }
295
293
 
296
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] > calendar-grid-ui {
294
+ calendar-picker-ui [slot="popover"] > calendar-grid-ui {
297
295
  grid-area: cal;
298
296
  }
299
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] > [data-pane-divider] {
297
+ calendar-picker-ui [slot="popover"] > [data-pane-divider] {
300
298
  grid-area: divider;
301
299
  align-self: stretch;
302
300
  --divider-color: var(--calendar-picker-divider);
303
301
  }
304
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] > [data-time-pane] {
302
+ calendar-picker-ui [slot="popover"] > [data-time-pane] {
305
303
  grid-area: time;
306
304
  align-self: start;
307
305
  }
308
306
 
309
307
  /* Footer area (consumer-supplied [slot="footer"]) — spans all columns
310
308
  under the pane(s), in either single- or two-pane mode. */
311
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] [slot="footer"] {
309
+ calendar-picker-ui [slot="popover"] [slot="footer"] {
312
310
  grid-column: 1 / -1;
313
311
  display: flex;
314
312
  justify-content: flex-end;
@@ -320,14 +318,14 @@
320
318
  /* Narrow surfaces (e.g. inside a card on mobile): stack the panes
321
319
  vertically and replace the vertical divider with a horizontal rule. */
322
320
  @container (max-width: 32rem) {
323
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"]:has([data-time-pane]):popover-open {
321
+ calendar-picker-ui [slot="popover"]:has([data-time-pane]):popover-open {
324
322
  grid-template-columns: 1fr;
325
323
  grid-template-areas:
326
324
  "cal"
327
325
  "divider"
328
326
  "time";
329
327
  }
330
- :is(calendar-picker-ui, datetime-picker-ui) [slot="popover"] > [data-pane-divider] {
328
+ calendar-picker-ui [slot="popover"] > [data-pane-divider] {
331
329
  align-self: auto;
332
330
  }
333
331
  }
@@ -13,8 +13,8 @@ description: >-
13
13
  single-datetime input in forms; for date ranges use
14
14
  <date-range-picker-ui> instead of composing two calendar-picker
15
15
  instances. gh#1372 (#1363 C3c) folded <datetime-picker-ui>'s surface into
16
- this widened `precision` axis — see the deprecated
17
- <datetime-picker-ui> alias.
16
+ this widened `precision` axis — that thin alias component was cut in
17
+ 0.8.43 (gh#1617); this is the sole tag now.
18
18
  # Per ADR-0027 — primitives that programmatically create other primitives
19
19
  # in their render() do NOT auto-import them. Consumer (or demo shell) must
20
20
  # explicitly import each composed primitive.
@@ -431,7 +431,7 @@
431
431
  only collision-free for the bare-marks case: a sparkline (its
432
432
  renderer never emits axis ticks, gridlines, value labels, or a
433
433
  legend — chart.class.js #renderSparkline), or any other chart-ui
434
- type with BOTH [hide-grid] and [hide-values] set (the author opted
434
+ type with BOTH [no-grid] and [no-values] set (the author opted
435
435
  out of every text element). A chart that still draws guides or
436
436
  value text — or is paired with a <chart-legend-ui> — needs
437
437
  clearance from the card's frame, or that text collides with the
@@ -444,8 +444,8 @@
444
444
  section below, wired via chart-legend-ui[for="<chart id>"], which
445
445
  never enters this selector (see chart-in-card.examples.html's
446
446
  "Full-bleed chart + legend band" example). */
447
- & > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([hide-grid])),
448
- & > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([hide-values])),
447
+ & > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([no-grid])),
448
+ & > section[bleed]:has(> chart-ui:not([type="sparkline"]):not([no-values])),
449
449
  & > section[bleed]:has(> chart-legend-ui) {
450
450
  margin: var(--card-inset);
451
451
  padding: 0;
@@ -87,23 +87,23 @@
87
87
  ],
88
88
  "default": "abbr"
89
89
  },
90
- "hideAverage": {
91
- "description": "When true, suppress the overlaid average line",
90
+ "loading": {
91
+ "description": "Show a skeleton placeholder instead of the chart body. Set to true while data is being fetched; clear once data arrives. Preserves the element's aspect-ratio dimensions so the skeleton occupies the same space the chart will fill. Parity with stat-ui[loading] and table-ui[loading] (§FB-12, v0.6.27).",
92
92
  "type": "boolean",
93
93
  "default": false
94
94
  },
95
- "hideGrid": {
96
- "description": "Hide gridlines",
95
+ "noAverage": {
96
+ "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).",
97
97
  "type": "boolean",
98
98
  "default": false
99
99
  },
100
- "hideValues": {
101
- "description": "Hide value labels",
100
+ "noGrid": {
101
+ "description": "Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617).",
102
102
  "type": "boolean",
103
103
  "default": false
104
104
  },
105
- "loading": {
106
- "description": "Show a skeleton placeholder instead of the chart body. Set to true while data is being fetched; clear once data arrives. Preserves the element's aspect-ratio dimensions so the skeleton occupies the same space the chart will fill. Parity with stat-ui[loading] and table-ui[loading] (§FB-12, v0.6.27).",
105
+ "noValues": {
106
+ "description": "Hide value labels. Canonical spelling (ADR-0063, gh#1563) the deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617).",
107
107
  "type": "boolean",
108
108
  "default": false
109
109
  },
@@ -21,10 +21,10 @@
21
21
  * type — chart type (default: 'bar')
22
22
  * x — key for X-axis data
23
23
  * y — key(s) for Y-axis, comma-separated for multi-series
24
- * hide-average — suppress the overlaid average line on bar/line (default: false — line shown)
24
+ * no-average — suppress the overlaid average line on bar/line (default: false — line shown).
25
25
  * color — accent/success/warning/danger/info
26
- * hide-grid — hide gridlines
27
- * hide-values — hide value labels
26
+ * no-grid — hide gridlines.
27
+ * no-values — hide value labels.
28
28
  * corner-radius — bar corner radius in px (default: null, falls back to --a-radius)
29
29
  * dots — line/multi-line marker visibility: all|none|hover|last (default: all)
30
30
  * series-emphasis — multi-line: series key that keeps full area+line treatment; others render line-only, dimmed
@@ -215,10 +215,12 @@ export class UIChart extends UIElement {
215
215
  type: { type: String, default: 'bar', reflect: true },
216
216
  x: { type: String, default: '', reflect: true },
217
217
  y: { type: String, default: '', reflect: true },
218
- hideAverage: { type: Boolean, default: false, reflect: true, attribute: 'hide-average' },
218
+ // ADR-0063 (gh#1563) `no-*` is the ratified negation prefix; the
219
+ // deprecated `hide-*` dual-read shim was cut in 0.8.43 (gh#1617).
220
+ noAverage: { type: Boolean, default: false, reflect: true, attribute: 'no-average' },
219
221
  color: { type: String, default: '', reflect: true },
220
- hideGrid: { type: Boolean, default: false, reflect: true, attribute: 'hide-grid' },
221
- hideValues: { type: Boolean, default: false, reflect: true, attribute: 'hide-values' },
222
+ noGrid: { type: Boolean, default: false, reflect: true, attribute: 'no-grid' },
223
+ noValues: { type: Boolean, default: false, reflect: true, attribute: 'no-values' },
222
224
  cornerRadius: { type: Number, default: null, reflect: true, attribute: 'corner-radius' },
223
225
  smooth: { type: Number, default: 0.4, reflect: true },
224
226
  size: { type: String, default: '', reflect: true },
@@ -439,13 +441,13 @@ export class UIChart extends UIElement {
439
441
  // When the grid is hidden (in-card sparkline-like use) we can zero
440
442
  // out the Y-axis label gutter entirely — otherwise the plot area
441
443
  // collapses at small sizes.
442
- const hideGrid = this.hideGrid;
443
- const yLabelW = hideGrid ? 0 : fontSize * 3.2;
444
+ const noGrid = this.noGrid;
445
+ const yLabelW = noGrid ? 0 : fontSize * 3.2;
444
446
  const hasXLabels = !!this.x;
445
447
  const pad = {
446
- top: hideGrid ? 2 : fontSize * 1.6,
447
- right: hideGrid ? 2 : fontSize * 1.2,
448
- bottom: !hasXLabels || hideGrid ? 2 : fontSize * 2.2,
448
+ top: noGrid ? 2 : fontSize * 1.6,
449
+ right: noGrid ? 2 : fontSize * 1.2,
450
+ bottom: !hasXLabels || noGrid ? 2 : fontSize * 2.2,
449
451
  left: yLabelW,
450
452
  };
451
453
 
@@ -1035,11 +1037,11 @@ export class UIChart extends UIElement {
1035
1037
  displayTicks = ticks.filter((_, i) => i % 2 === 0 || i === ticks.length - 1);
1036
1038
  }
1037
1039
 
1038
- // hideGrid suppresses both gridlines AND axis labels — callers who
1039
- // want labels without gridlines can omit hide-grid and rely on token
1040
+ // noGrid suppresses both gridlines AND axis labels — callers who
1041
+ // want labels without gridlines can omit no-grid and rely on token
1040
1042
  // overrides to make gridlines transparent. This keeps compact in-card
1041
1043
  // charts visually clean.
1042
- if (!this.hideGrid) {
1044
+ if (!this.noGrid) {
1043
1045
  const tickRange = ticks[ticks.length - 1] - ticks[0];
1044
1046
  const safeRange = tickRange || 1; // Prevent division by zero
1045
1047
  for (const t of displayTicks) {
@@ -1094,8 +1096,8 @@ export class UIChart extends UIElement {
1094
1096
  let svg = this.#gridAndAxes(width, height, ticks, labels, pad, dims);
1095
1097
 
1096
1098
  // At sm auto-hide value labels (they overlap at narrow widths).
1097
- const showValues = !this.hideValues && dims.sizeClass !== 'sm';
1098
- const showAverage = !this.hideAverage && vals.length > 1 && dims.sizeClass !== 'sm' && !this.hideGrid;
1099
+ const showValues = !this.noValues && dims.sizeClass !== 'sm';
1100
+ const showAverage = !this.noAverage && vals.length > 1 && dims.sizeClass !== 'sm' && !this.noGrid;
1099
1101
 
1100
1102
  for (let i = 0; i < data.length; i++) {
1101
1103
  const v = vals[i];
@@ -1155,8 +1157,8 @@ export class UIChart extends UIElement {
1155
1157
  const isSm = dims.sizeClass === 'sm';
1156
1158
  const dotR = isSm ? 1.5 : 3;
1157
1159
  const hitR = Math.max(dotR, 10); // invisible hit-target for tooltip
1158
- const showValues = !this.hideValues && !isSm;
1159
- const showAverage = !this.hideAverage && vals.length > 1 && !isSm && !this.hideGrid;
1160
+ const showValues = !this.noValues && !isSm;
1161
+ const showAverage = !this.noAverage && vals.length > 1 && !isSm && !this.noGrid;
1160
1162
 
1161
1163
  points.forEach((p, i) => {
1162
1164
  if (this.#shouldRenderDot(i, points.length)) {
@@ -2108,7 +2110,7 @@ export class UIChart extends UIElement {
2108
2110
  const by = pad.top + plotH - barH;
2109
2111
  svg += `<path${this.#seriesFill(k % 10, keys[k])}${tip({ label: labels[i], value: v, series: keys[k] })} d="${topRoundedBarPath(bx, by, subBarW, barH, this.#resolveRadius())}"/>`;
2110
2112
 
2111
- if (!this.hideValues) {
2113
+ if (!this.noValues) {
2112
2114
  svg += `<text data-value x="${bx + subBarW / 2}" y="${by - 4}" text-anchor="middle" font-size="${dims.valueSize}">${this.#fmtValue(v)}</text>`;
2113
2115
  }
2114
2116
  }
@@ -30,14 +30,14 @@ export class UIChart extends UIElement {
30
30
  dots: 'all' | 'none' | 'hover' | 'last';
31
31
  /** Number-format mode applied to axis labels + value overlays + donut total + gauge value + treemap value + funnel value + internal tooltip. `abbr` is the legacy 1.2K / 3M format; `decimal` fixes 2 decimals; `currency` prefixes via `--chart-currency-prefix` token (default "$"); `percent` multiplies × 100 and adds a % suffix. */
32
32
  format: 'abbr' | 'decimal' | 'currency' | 'percent';
33
- /** When true, suppress the overlaid average line */
34
- hideAverage: boolean;
35
- /** Hide gridlines */
36
- hideGrid: boolean;
37
- /** Hide value labels */
38
- hideValues: boolean;
39
33
  /** Show a skeleton placeholder instead of the chart body. Set to true while data is being fetched; clear once data arrives. Preserves the element's aspect-ratio dimensions so the skeleton occupies the same space the chart will fill. Parity with stat-ui[loading] and table-ui[loading] (§FB-12, v0.6.27). */
40
34
  loading: boolean;
35
+ /** 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). */
36
+ noAverage: boolean;
37
+ /** Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617). */
38
+ noGrid: boolean;
39
+ /** Hide value labels. Canonical spelling (ADR-0063, gh#1563) — the deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617). */
40
+ noValues: boolean;
41
41
  /** 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. */
42
42
  seriesEmphasis: string;
43
43
  /** Chart size */
@@ -61,21 +61,28 @@ props:
61
61
  - warning
62
62
  - danger
63
63
  - info
64
- hideAverage:
65
- description: When true, suppress the overlaid average line
64
+ noAverage:
65
+ description: >-
66
+ When true, suppress the overlaid average line. Canonical spelling
67
+ (ADR-0063, gh#1563) — the deprecated `hideAverage` dual-read shim
68
+ was cut in 0.8.43 (gh#1617).
66
69
  type: boolean
67
70
  default: false
68
- attribute: hide-average
69
- hideGrid:
70
- description: Hide gridlines
71
+ attribute: no-average
72
+ noGrid:
73
+ description: >-
74
+ Hide gridlines. Canonical spelling (ADR-0063, gh#1563) — the
75
+ deprecated `hideGrid` dual-read shim was cut in 0.8.43 (gh#1617).
71
76
  type: boolean
72
77
  default: false
73
- attribute: hide-grid
74
- hideValues:
75
- description: Hide value labels
78
+ attribute: no-grid
79
+ noValues:
80
+ description: >-
81
+ Hide value labels. Canonical spelling (ADR-0063, gh#1563) — the
82
+ deprecated `hideValues` dual-read shim was cut in 0.8.43 (gh#1617).
76
83
  type: boolean
77
84
  default: false
78
- attribute: hide-values
85
+ attribute: no-values
79
86
  cornerRadius:
80
87
  description: Bar corner radius in px (null = let CSS tokens decide)
81
88
  type: number
@@ -26,6 +26,11 @@
26
26
  "type": "string",
27
27
  "default": ""
28
28
  },
29
+ "interactive": {
30
+ "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).",
31
+ "type": "boolean",
32
+ "default": true
33
+ },
29
34
  "onToggle": {
30
35
  "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.",
31
36
  "type": "string",
@@ -56,11 +61,6 @@
56
61
  "dashed"
57
62
  ],
58
63
  "default": "dot"
59
- },
60
- "static": {
61
- "description": "When set, rows are non-interactive <span>s (no click, no toggle).",
62
- "type": "boolean",
63
- "default": false
64
64
  }
65
65
  },
66
66
  "required": [
@@ -76,7 +76,7 @@
76
76
  ],
77
77
  "events": {
78
78
  "toggle": {
79
- "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.",
79
+ "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.",
80
80
  "detail": {
81
81
  "active": {
82
82
  "description": "New visibility state (true = visible).",
@@ -133,12 +133,8 @@
133
133
  "name": "idle"
134
134
  },
135
135
  {
136
- "description": "Rows are <button>s. Default unless [static].",
136
+ "description": "Rows are <button>s (the default). When false, rows are <span>s — no click handler, no toggle affordance.",
137
137
  "name": "interactive"
138
- },
139
- {
140
- "description": "Rows are <span>s. No click handler, no toggle affordance.",
141
- "name": "static"
142
138
  }
143
139
  ],
144
140
  "status": "stable",
@@ -35,16 +35,18 @@
35
35
  * position — top | bottom | left | right. Layout hint; actual placement
36
36
  * is where the element is placed in the DOM. Drives
37
37
  * flex-direction.
38
- * static when set, rows render as non-interactive badges (no
39
- * role/tabindex/handlers). Default is interactive
40
- * `role="button"` badges that toggle on click + Enter/Space.
38
+ * interactive canonical opt-in spelling (ADR-0063, gh#1563). Rows
39
+ * default interactive (`role="button"` badges that toggle
40
+ * on click + Enter/Space) until the 0.9.0 default-inversion
41
+ * cut. The deprecated `static` opt-out alias was cut in
42
+ * 0.8.43 (gh#1617).
41
43
  * on-toggle — hide | opacity. Default hide. Escape hatch per OD-CHART-09.
42
44
  * Reported via the `toggle` event detail; chart-ui reads it
43
45
  * when wired via [for].
44
46
  *
45
47
  * Events:
46
48
  * toggle — detail: {key, active, mode}. Fires on row click when
47
- * not [static]. `active` is the new state (true=visible).
49
+ * interactive. `active` is the new state (true=visible).
48
50
  */
49
51
 
50
52
  import { UIElement } from '../../core/element.js';
@@ -58,7 +60,14 @@ export class UIChartLegend extends UIElement {
58
60
  items: { type: String, default: '', reflect: false },
59
61
  shape: { type: String, default: 'dot', reflect: true },
60
62
  position: { type: String, default: 'bottom', reflect: true },
61
- static: { type: Boolean, default: false, reflect: true },
63
+ // ADR-0063 (gh#1563) `interactive` (opt-in) is the canonical
64
+ // positively-named boolean; the deprecated `static` opt-out alias was
65
+ // cut in 0.8.43 (gh#1617). Deliberately keeps its `true` default:
66
+ // the real default-inversion (interactive defaulting to `false`) is
67
+ // still scheduled for 0.9.0 per the ADR's own consumer-scan
68
+ // requirement (every `<chart-legend-ui>` tag needs review first) —
69
+ // out of this ticket's scope, which only cuts the `static` alias.
70
+ interactive: { type: Boolean, default: true, reflect: true },
62
71
  onToggle: { type: String, default: 'hide', reflect: true, attribute: 'on-toggle' },
63
72
  };
64
73
 
@@ -152,11 +161,11 @@ export class UIChartLegend extends UIElement {
152
161
  keyboard-operable without a wrapping <button>. */
153
162
  const row = document.createElement('badge-ui');
154
163
  row.setAttribute('data-row', '');
155
- row.setAttribute('role', this.static ? 'listitem' : 'button');
164
+ row.setAttribute('role', this.interactive ? 'button' : 'listitem');
156
165
  row.setAttribute('text', label);
157
166
  if (key) row.setAttribute('data-key', key);
158
167
  if (active) row.setAttribute('data-active', '');
159
- if (!this.static) {
168
+ if (this.interactive) {
160
169
  row.setAttribute('tabindex', '0');
161
170
  row.setAttribute('aria-pressed', active ? 'true' : 'false');
162
171
  }
@@ -181,7 +190,7 @@ export class UIChartLegend extends UIElement {
181
190
  swatch.style.setProperty('--swatch-color', swatchColor);
182
191
  row.appendChild(swatch);
183
192
 
184
- if (!this.static) {
193
+ if (this.interactive) {
185
194
  row.addEventListener('click', (e) => this.#onRowToggle(e, key));
186
195
  row.addEventListener('keydown', (e) => {
187
196
  if (e.key === 'Enter' || e.key === ' ') {
@@ -66,8 +66,11 @@
66
66
  color var(--a-duration-fast) var(--a-easing);
67
67
  }
68
68
 
69
- /* Static rows no interaction */
70
- :scope[static] badge-ui[data-row] {
69
+ /* Non-interactive rows. ADR-0063 (gh#1563): `:not([interactive])` covers
70
+ both today's opt-out spelling (`[static]` mirrors onto `[interactive]`
71
+ being removed, in chart-legend.class.js's connected()) and the eventual
72
+ 0.9.0 default-inversion, in one selector. */
73
+ :scope:not([interactive]) badge-ui[data-row] {
71
74
  cursor: default;
72
75
  }
73
76
 
@@ -28,14 +28,14 @@ export class UIChartLegend extends UIElement {
28
28
  items: string;
29
29
  /** id-ref of a chart-ui / heatmap-ui to mirror series from. */
30
30
  for: string;
31
+ /** 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). */
32
+ interactive: boolean;
31
33
  /** Series-toggle mode emitted via the `toggle` event. `hide` removes the series from the render; `opacity` fades it. Wired via [for] on chart-ui. */
32
34
  onToggle: 'hide' | 'opacity';
33
35
  /** Layout hint — drives flex-direction. Actual placement follows DOM order. */
34
36
  position: 'top' | 'bottom' | 'left' | 'right';
35
37
  /** Swatch shape. Maps to badge-ui's icon for dot/square variants. */
36
38
  shape: 'dot' | 'square' | 'line' | 'dashed';
37
- /** When set, rows are non-interactive <span>s (no click, no toggle). */
38
- static: boolean;
39
39
 
40
40
  addEventListener(type: 'toggle', listener: (ev: ChartLegendToggleEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
41
41
  addEventListener<K extends keyof HTMLElementEventMap>(
@@ -47,10 +47,16 @@ props:
47
47
  - left
48
48
  - right
49
49
  reflect: true
50
- static:
51
- description: When set, rows are non-interactive <span>s (no click, no toggle).
50
+ interactive:
51
+ description: >-
52
+ Canonical opt-in spelling (ADR-0063, gh#1563) — the deprecated
53
+ `static` opt-out alias was cut in 0.8.43 (gh#1617). Rows are
54
+ interactive <button>-role badges by default — this default stays
55
+ `true` (deliberately NOT flipped yet; the 0.9.0 cut inverts it to
56
+ `false` after a full consumer scan of every `<chart-legend-ui>` tag
57
+ per the ADR).
52
58
  type: boolean
53
- default: false
59
+ default: true
54
60
  reflect: true
55
61
  onToggle:
56
62
  description: >-
@@ -66,7 +72,7 @@ props:
66
72
  events:
67
73
  toggle:
68
74
  description: >-
69
- Fires on row click (non-static). Detail: {key, active, mode}. `active` is
75
+ Fires on row click when interactive. Detail: {key, active, mode}. `active` is
70
76
  the new state (true=visible). Consumers (or chart-ui via [for]) wire
71
77
  this to series visibility.
72
78
  detail:
@@ -90,9 +96,7 @@ states:
90
96
  - name: idle
91
97
  description: Default, ready for interaction.
92
98
  - name: interactive
93
- description: Rows are <button>s. Default unless [static].
94
- - name: static
95
- description: Rows are <span>s. No click handler, no toggle affordance.
99
+ description: Rows are <button>s (the default). When false, rows are <span>s — no click handler, no toggle affordance.
96
100
  traits: []
97
101
  tokens: {}
98
102
  a2ui:
@@ -101,7 +105,7 @@ a2ui:
101
105
  reason: 'Legend pattern.'
102
106
  - rule: 'Pairs with <chart-ui> via [for] id-ref (auto-bidirectional series toggling) or via items= for standalone use.'
103
107
  reason: 'Composition contract.'
104
- - rule: 'position attribute (top|bottom|left|right) places legend relative to its chart; static= disables interactivity.'
108
+ - rule: 'position attribute (top|bottom|left|right) places legend relative to its chart; interactive="false" disables interactivity.'
105
109
  reason: 'Layout + interaction knobs.'
106
110
  anti_patterns: []
107
111
  examples:
@@ -17,6 +17,14 @@ check-ui[indeterminate] [slot="box"] {
17
17
  background: var(--check-bg-checked);
18
18
  border-color: var(--check-border-checked);
19
19
  }
20
+ /* gh#1596 — a checked/indeterminate box kept its full primary fill when
21
+ disabled (only the label fg dimmed); higher specificity (2 attrs) than
22
+ the rule above wins without reordering. */
23
+ check-ui[checked][disabled] [slot="box"],
24
+ check-ui[indeterminate][disabled] [slot="box"] {
25
+ background: var(--check-bg-checked-disabled);
26
+ border-color: var(--check-bg-checked-disabled);
27
+ }
20
28
  check-ui[checked] {
21
29
  --_icon-w: calc(var(--check-size) * 0.3);
22
30
  --_icon-h: calc(var(--check-size) * 0.55);
@@ -61,6 +69,7 @@ check-ui[indeterminate] {
61
69
 
62
70
  /* ── State: disabled ── */
63
71
  --check-fg-disabled: var(--a-ui-text-disabled);
72
+ --check-bg-checked-disabled: var(--a-ui-bg-disabled);
64
73
 
65
74
  /* ── Check icon (CSS border trick, no SVG) ── */
66
75
  --_icon-w: 0;
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://adiaui.dev/a2ui/v0_9/components/ColorPicker.json",
4
- "title": "ColorPicker",
5
- "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.",
3
+ "$id": "https://adiaui.dev/a2ui/v0_9/components/ColorArea.json",
4
+ "title": "ColorArea",
5
+ "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.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -19,7 +19,7 @@
19
19
  "default": "NaN"
20
20
  },
21
21
  "component": {
22
- "const": "ColorPicker"
22
+ "const": "ColorArea"
23
23
  },
24
24
  "disabled": {
25
25
  "description": "Disables all interaction",
@@ -96,22 +96,24 @@
96
96
  "examples": [
97
97
  {
98
98
  "description": "Color picker card with a color picker component for selecting colors with swatches.",
99
- "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]",
100
- "name": "color-picker-demo"
99
+ "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]",
100
+ "name": "color-area-demo"
101
101
  },
102
102
  {
103
103
  "description": "Color picker with swatch selection in a card.",
104
- "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]",
105
- "name": "color-picker-panel"
104
+ "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]",
105
+ "name": "color-area-panel"
106
106
  }
107
107
  ],
108
108
  "keywords": [
109
+ "colorarea",
110
+ "color-area",
109
111
  "colorpicker",
110
112
  "color-picker",
111
113
  "color",
112
114
  "picker"
113
115
  ],
114
- "name": "UIColorPicker",
116
+ "name": "UIColorArea",
115
117
  "parts": {},
116
118
  "related": [
117
119
  "grid",
@@ -131,13 +133,14 @@
131
133
  ],
132
134
  "status": "stable",
133
135
  "synonyms": {
134
- "color-picker": [
136
+ "color-area": [
135
137
  "color-canvas",
136
138
  "color-surface",
137
- "swatch-picker"
139
+ "swatch-picker",
140
+ "color-picker"
138
141
  ]
139
142
  },
140
- "tag": "color-picker-ui",
143
+ "tag": "color-area-ui",
141
144
  "tokens": {},
142
145
  "traits": [],
143
146
  "version": 1