@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.
- package/CHANGELOG.md +35 -0
- package/MIGRATION.md +240 -3
- package/USAGE.md +4 -4
- package/color/index.js +1 -1
- package/components/action-list/action-item.a2ui.json +7 -7
- package/components/action-list/action-item.yaml +21 -9
- package/components/action-list/action-list.class.js +13 -7
- package/components/action-list/action-list.d.ts +2 -2
- package/components/button/button.yaml +1 -1
- package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
- package/components/calendar-picker/calendar-picker.class.js +2 -3
- package/components/calendar-picker/calendar-picker.css +16 -18
- package/components/calendar-picker/calendar-picker.yaml +2 -2
- package/components/card/card.css +3 -3
- package/components/chart/chart.a2ui.json +8 -8
- package/components/chart/chart.class.js +21 -19
- package/components/chart/chart.d.ts +6 -6
- package/components/chart/chart.yaml +16 -9
- package/components/chart-legend/chart-legend.a2ui.json +7 -11
- package/components/chart-legend/chart-legend.class.js +17 -8
- package/components/chart-legend/chart-legend.css +5 -2
- package/components/chart-legend/chart-legend.d.ts +2 -2
- package/components/chart-legend/chart-legend.yaml +12 -8
- package/components/check/check.css +9 -0
- package/components/{color-picker/color-picker.a2ui.json → color-area/color-area.a2ui.json} +15 -12
- package/components/{color-picker/color-picker.class.js → color-area/color-area.class.js} +10 -8
- package/components/color-area/color-area.css +185 -0
- package/components/color-area/color-area.d.ts +66 -0
- package/components/color-area/color-area.examples.md +19 -0
- package/components/color-area/color-area.js +17 -0
- package/components/{color-picker/color-picker.yaml → color-area/color-area.yaml} +17 -9
- package/components/color-input/color-input.a2ui.json +5 -5
- package/components/color-input/color-input.class.js +9 -6
- package/components/color-input/color-input.css +1 -1
- package/components/color-input/color-input.js +2 -2
- package/components/color-input/color-input.yaml +14 -12
- package/components/description-list/description-list.a2ui.json +1 -1
- package/components/description-list/description-list.css +1 -1
- package/components/description-list/description-list.d.ts +1 -1
- package/components/description-list/description-list.yaml +1 -1
- package/components/drilldown/drilldown.a2ui.json +3 -0
- package/components/drilldown/drilldown.css +8 -1
- package/components/drilldown/drilldown.yaml +2 -0
- package/components/field/field.a2ui.json +1 -1
- package/components/field/field.class.js +5 -2
- package/components/field/field.yaml +1 -1
- package/components/index.js +1 -4
- package/components/input/input.a2ui.json +4 -4
- package/components/input/input.class.js +8 -0
- package/components/input/input.css +6 -0
- package/components/input/input.yaml +11 -8
- package/components/integration-card/integration-card.examples.md +2 -1
- package/components/menu/menu-item.a2ui.json +7 -7
- package/components/menu/menu-item.yaml +20 -7
- package/components/menu/menu.class.js +13 -7
- package/components/menu/menu.d.ts +2 -2
- package/components/pane/pane.a2ui.json +11 -11
- package/components/pane/pane.class.js +8 -4
- package/components/pane/pane.css +15 -10
- package/components/pane/pane.d.ts +10 -9
- package/components/pane/pane.yaml +9 -7
- package/components/progress/progress.a2ui.json +1 -1
- package/components/progress/progress.class.js +2 -2
- package/components/progress/progress.d.ts +1 -1
- package/components/progress/progress.yaml +2 -2
- package/components/radio/radio.css +7 -0
- package/components/search/search.css +10 -1
- package/components/segment/segment.a2ui.json +1 -2
- package/components/segment/segment.css +10 -0
- package/components/segment/segment.yaml +1 -2
- package/components/segmented/segmented.a2ui.json +1 -3
- package/components/segmented/segmented.class.js +2 -2
- package/components/segmented/segmented.yaml +2 -4
- package/components/select/select.css +6 -0
- package/components/step-progress/step-progress.yaml +1 -1
- package/components/swatch/swatch.yaml +1 -1
- package/components/switch/switch.css +8 -0
- package/components/table-toolbar/table-toolbar.a2ui.json +42 -1
- package/components/table-toolbar/table-toolbar.class.js +166 -14
- package/components/table-toolbar/table-toolbar.css +46 -0
- package/components/table-toolbar/table-toolbar.d.ts +13 -1
- package/components/table-toolbar/table-toolbar.yaml +104 -14
- package/components/textarea/textarea.css +4 -0
- package/components/time-picker/time-picker.yaml +3 -2
- package/components/tree/tree.yaml +1 -1
- package/components/upload/upload.class.js +16 -0
- package/components/upload/upload.d.ts +7 -0
- package/components/upload/upload.yaml +7 -3
- package/core/icons.js +3 -1
- package/custom-elements.json +147 -468
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/theme-provider.min.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +88 -85
- package/dist/web-components.sheet.js +1 -1
- package/index.d.ts +9 -13
- package/package.json +1 -1
- package/patterns/admin-shell/admin-shell.examples.html +2 -2
- package/patterns/chart-in-card/chart-in-card.examples.html +10 -10
- package/patterns/conversion-funnel/conversion-funnel.html +2 -2
- package/patterns/editor-shell/editor-shell.examples.html +3 -3
- package/patterns/form-system/form-system.examples.html +1 -1
- package/styles/colors/semantics/features.css +8 -1
- package/styles/components.css +1 -4
- package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -1
- package/traits/resize-observer/resize-observer.js +1 -1
- package/components/color-picker/color-picker.css +0 -182
- package/components/color-picker/color-picker.d.ts +0 -99
- package/components/color-picker/color-picker.examples.md +0 -19
- package/components/color-picker/color-picker.js +0 -17
- package/components/datetime-picker/datetime-picker.a2ui.json +0 -256
- package/components/datetime-picker/datetime-picker.class.js +0 -58
- package/components/datetime-picker/datetime-picker.css +0 -11
- package/components/datetime-picker/datetime-picker.d.ts +0 -87
- package/components/datetime-picker/datetime-picker.examples.md +0 -25
- package/components/datetime-picker/datetime-picker.js +0 -17
- package/components/datetime-picker/datetime-picker.yaml +0 -254
- package/components/progress-row/progress-row.a2ui.json +0 -107
- package/components/progress-row/progress-row.class.js +0 -118
- package/components/progress-row/progress-row.css +0 -60
- package/components/progress-row/progress-row.d.ts +0 -24
- package/components/progress-row/progress-row.examples.md +0 -7
- package/components/progress-row/progress-row.js +0 -17
- package/components/progress-row/progress-row.yaml +0 -85
- package/components/toggle-group/toggle-group.a2ui.json +0 -148
- package/components/toggle-group/toggle-group.class.js +0 -195
- package/components/toggle-group/toggle-group.css +0 -127
- package/components/toggle-group/toggle-group.d.ts +0 -50
- package/components/toggle-group/toggle-group.examples.md +0 -33
- package/components/toggle-group/toggle-group.js +0 -18
- package/components/toggle-group/toggle-group.yaml +0 -135
- package/components/toggle-group/toggle-option.a2ui.json +0 -86
- package/components/toggle-group/toggle-option.yaml +0 -75
|
@@ -7,7 +7,7 @@ category: layout
|
|
|
7
7
|
version: 1
|
|
8
8
|
description: |
|
|
9
9
|
Collapsible, resizable content panel — drag-resize handle on the
|
|
10
|
-
inner edge when [
|
|
10
|
+
inner edge when [edge="leading"] / [edge="trailing"], [resizable]
|
|
11
11
|
opt-in. Used standalone for resizable two-pane layouts, or wrapped
|
|
12
12
|
by <editor-sidebar> / <admin-sidebar> which DELEGATE drag to the
|
|
13
13
|
inner pane-ui rather than reimplementing it. See pane.yaml's
|
|
@@ -35,7 +35,7 @@ props:
|
|
|
35
35
|
description: 'Component property: resizable.'
|
|
36
36
|
type: boolean
|
|
37
37
|
default: false
|
|
38
|
-
|
|
38
|
+
edge:
|
|
39
39
|
description: 'Opts a pane into horizontal-sibling chrome: suppresses the default
|
|
40
40
|
|
|
41
41
|
four-sided border and moves the resize grabber to the inner edge
|
|
@@ -46,7 +46,9 @@ props:
|
|
|
46
46
|
|
|
47
47
|
Unset keeps the pane-intrinsic chrome (full border, right-edge
|
|
48
48
|
|
|
49
|
-
grabber when resizable).
|
|
49
|
+
grabber when resizable). Canonical spelling (ADR-0063, gh#1563) — the
|
|
50
|
+
|
|
51
|
+
deprecated `side` dual-read alias was cut in 0.8.43 (gh#1617).
|
|
50
52
|
|
|
51
53
|
'
|
|
52
54
|
type: string
|
|
@@ -82,10 +84,10 @@ a2ui:
|
|
|
82
84
|
rules:
|
|
83
85
|
- >-
|
|
84
86
|
pane-ui is a resizable / collapsible content panel. As a standalone
|
|
85
|
-
primitive (no [
|
|
87
|
+
primitive (no [edge] attribute), it carries its own four-sided
|
|
86
88
|
chrome and a right-edge resize grabber. As a horizontal-sibling
|
|
87
|
-
child of a layout container (set [
|
|
88
|
-
[
|
|
89
|
+
child of a layout container (set [edge="leading"] or
|
|
90
|
+
[edge="trailing"]), the chrome and grabber move to the inner
|
|
89
91
|
edge so adjacent panes share a single seam.
|
|
90
92
|
- >-
|
|
91
93
|
Wrapped by <editor-sidebar slot="leading|trailing"> inside
|
|
@@ -101,7 +103,7 @@ a2ui:
|
|
|
101
103
|
navigator tree, inspector form rows, or other primary content.
|
|
102
104
|
- >-
|
|
103
105
|
For a standalone resizable two-pane layout (no shell), nest panes
|
|
104
|
-
directly inside a flex row — both with [
|
|
106
|
+
directly inside a flex row — both with [edge]-typed chrome —
|
|
105
107
|
and the resize handle will live on the seam between them. For
|
|
106
108
|
a non-resizable summary pane (a fixed-width detail rail), drop
|
|
107
109
|
[resizable] and pane-ui collapses to a static container.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/Progress.json",
|
|
4
4
|
"title": "Progress",
|
|
5
|
-
"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
|
|
5
|
+
"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.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* (Legacy `value="-1"` is still treated as indeterminate for back-compat.)
|
|
24
24
|
*
|
|
25
25
|
* `label` (non-empty) activates the labeled row layout — label + bar +
|
|
26
|
-
* optional `meta` text in one row (absorbed from
|
|
27
|
-
*
|
|
26
|
+
* optional `meta` text in one row (absorbed from <progress-row-ui>,
|
|
27
|
+
* gh#1363 C4, cut in 0.8.43, gh#1617). Omit `label` for a plain standalone bar.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
import { UIElement } from '../../core/element.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `<progress-ui>` — 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
|
|
2
|
+
* `<progress-ui>` — 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.
|
|
3
3
|
*
|
|
4
4
|
* @see https://ui-kit.exe.xyz/site/components/progress
|
|
5
5
|
*
|
|
@@ -12,8 +12,8 @@ description: >-
|
|
|
12
12
|
`variant="spinner"` render mode was retired; spinner-ui owns circular).
|
|
13
13
|
Set `label` for a labeled task-list row (label + bar + optional `meta`
|
|
14
14
|
text in one row, e.g. storage quotas, capacity breakdowns) — absorbed
|
|
15
|
-
<progress-row-ui>'s row layout directly; that component
|
|
16
|
-
|
|
15
|
+
<progress-row-ui>'s row layout directly; that component was cut in
|
|
16
|
+
0.8.43 (gh#1617). Omit `label` for a standalone bar (global loading
|
|
17
17
|
indicators); for percent-complete inline displays use <stat-ui> instead.
|
|
18
18
|
props:
|
|
19
19
|
value:
|
|
@@ -14,6 +14,12 @@ radio-ui[checked] [slot="dot"] {
|
|
|
14
14
|
background: var(--radio-bg-checked);
|
|
15
15
|
border-color: var(--radio-border-checked);
|
|
16
16
|
}
|
|
17
|
+
/* gh#1596 — a checked dot kept its full primary fill when disabled; higher
|
|
18
|
+
specificity (2 attrs) than the rule above wins without reordering. */
|
|
19
|
+
radio-ui[checked][disabled] [slot="dot"] {
|
|
20
|
+
background: var(--radio-bg-checked-disabled);
|
|
21
|
+
border-color: var(--radio-bg-checked-disabled);
|
|
22
|
+
}
|
|
17
23
|
radio-ui[checked] [slot="dot"]::after {
|
|
18
24
|
width: calc(var(--radio-size) * 0.6);
|
|
19
25
|
height: calc(var(--radio-size) * 0.6);
|
|
@@ -40,6 +46,7 @@ radio-ui[checked] [slot="dot"]::after {
|
|
|
40
46
|
|
|
41
47
|
/* ── State: disabled ── */
|
|
42
48
|
--radio-fg-disabled: var(--a-ui-text-disabled);
|
|
49
|
+
--radio-bg-checked-disabled: var(--a-ui-bg-disabled);
|
|
43
50
|
|
|
44
51
|
/* ── State: focus ── */
|
|
45
52
|
--radio-focus-ring: var(--a-focus-ring);
|
|
@@ -18,7 +18,16 @@
|
|
|
18
18
|
pointer-events: none;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
/* input-ui's suffix slot is decorative-only by default (input.css's own
|
|
22
|
+
@scope (input-ui) sets pointer-events: none on [slot="prefix"|"suffix"]).
|
|
23
|
+
search-ui repurposes it as the clickable clear (x-circle) affordance, so
|
|
24
|
+
it must opt back into pointer events. A same-specificity `[slot="suffix"]`
|
|
25
|
+
here loses to input.css's rule on scoping proximity — @scope(input-ui) is
|
|
26
|
+
the CLOSER scope root to the suffix span than @scope(search-ui), and
|
|
27
|
+
proximity is only a tiebreak AFTER specificity. Add `input-ui` to the
|
|
28
|
+
selector so specificity itself decides the override (gh#1593). */
|
|
29
|
+
input-ui [slot="suffix"] {
|
|
30
|
+
pointer-events: auto;
|
|
22
31
|
transition: opacity var(--search-duration) var(--search-easing);
|
|
23
32
|
}
|
|
24
33
|
|
|
@@ -17,6 +17,15 @@ segment-ui[selected] {
|
|
|
17
17
|
segmented-ui[multiple] > segment-ui[selected] {
|
|
18
18
|
background: var(--segment-bg-selected);
|
|
19
19
|
}
|
|
20
|
+
/* gh#1596 — a selected segment in [multiple] mode kept its full
|
|
21
|
+
primary-container fill when disabled (only the label fg dimmed); 2-attr
|
|
22
|
+
selector outweighs the 1-attr rule above regardless of source order.
|
|
23
|
+
Neutralizes to the same shared disabled-bg role button-ui's colored
|
|
24
|
+
variants already reset to, rather than a color-family container-low
|
|
25
|
+
(disabled drops color semantics entirely, same convention as button). */
|
|
26
|
+
segmented-ui[multiple] > segment-ui[selected][disabled] {
|
|
27
|
+
background: var(--segment-bg-selected-disabled);
|
|
28
|
+
}
|
|
20
29
|
|
|
21
30
|
@scope (segment-ui) {
|
|
22
31
|
:where(:scope) {
|
|
@@ -43,6 +52,7 @@ segmented-ui[multiple] > segment-ui[selected] {
|
|
|
43
52
|
--segment-fg-hover: var(--a-ui-text-hover);
|
|
44
53
|
--segment-fg-selected: var(--a-chrome-dark);
|
|
45
54
|
--segment-fg-disabled: var(--a-ui-text-disabled);
|
|
55
|
+
--segment-bg-selected-disabled: var(--a-ui-bg-disabled);
|
|
46
56
|
/* [multiple] only — see the moved-out selector above (Safari 17.x bug
|
|
47
57
|
note at top of file). Same default the deprecated
|
|
48
58
|
toggle-option-ui[selected] background used, for visual continuity
|
|
@@ -61,7 +61,7 @@ a2ui:
|
|
|
61
61
|
rules:
|
|
62
62
|
- rule: 'Child of <segmented-ui> — one selectable option button; the parent''s [multiple] axis decides single- or multi-select, segment-ui itself is unchanged either way.'
|
|
63
63
|
reason: 'Cluster contract.'
|
|
64
|
-
- rule: '<toggle-option-ui> (
|
|
64
|
+
- rule: '<toggle-option-ui> (cut in 0.8.43, gh#1617, gh#1369) was the same concept — use segment-ui inside <segmented-ui multiple> instead.'
|
|
65
65
|
reason: 'Deprecation redirect.'
|
|
66
66
|
- rule: 'Selected state managed by the parent <segmented-ui> — it syncs the selected attribute onto every child whose value is in its own value (single value, or the [multiple] comma-separated set); do not set selected directly on segment.'
|
|
67
67
|
reason: 'Parent owns selection state.'
|
|
@@ -243,4 +243,3 @@ synonyms:
|
|
|
243
243
|
segment: [segment-button, segmented-option, option-button, toggle-option]
|
|
244
244
|
related:
|
|
245
245
|
- segmented-control
|
|
246
|
-
- ToggleOption
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"const": "Segmented"
|
|
23
23
|
},
|
|
24
24
|
"multiple": {
|
|
25
|
-
"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
|
|
25
|
+
"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).",
|
|
26
26
|
"type": "boolean",
|
|
27
27
|
"default": false
|
|
28
28
|
},
|
|
@@ -81,8 +81,6 @@
|
|
|
81
81
|
},
|
|
82
82
|
"related": [
|
|
83
83
|
"Segment",
|
|
84
|
-
"ToggleGroup",
|
|
85
|
-
"ToggleOption",
|
|
86
84
|
"Tabs",
|
|
87
85
|
"Radio"
|
|
88
86
|
],
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
* [multiple] (gh#1369, #1363 C1): multi-select mode — `value` is a
|
|
30
30
|
* comma-separated set, no sliding indicator (each selected segment carries
|
|
31
31
|
* its own background instead), Space/Enter toggles instead of arrow-move.
|
|
32
|
-
* Absorbs <toggle-group-ui>/<toggle-option-ui>'s role
|
|
33
|
-
* in favor of this axis.
|
|
32
|
+
* Absorbs <toggle-group-ui>/<toggle-option-ui>'s role; those components
|
|
33
|
+
* were cut in 0.8.43 (gh#1617) in favor of this axis.
|
|
34
34
|
*/
|
|
35
35
|
|
|
36
36
|
import { UIFormElement } from '../../core/form.js';
|
|
@@ -12,7 +12,7 @@ props:
|
|
|
12
12
|
type: string
|
|
13
13
|
default: ''
|
|
14
14
|
multiple:
|
|
15
|
-
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
|
|
15
|
+
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)."
|
|
16
16
|
type: boolean
|
|
17
17
|
default: false
|
|
18
18
|
reflect: true
|
|
@@ -45,7 +45,7 @@ a2ui:
|
|
|
45
45
|
rules:
|
|
46
46
|
- rule: 'Single-select by default. Hosts <segment-ui> children; exactly one selected at a time.'
|
|
47
47
|
reason: 'Single-select cluster contract.'
|
|
48
|
-
- rule: 'For multi-select (filter chips, multi-flag toggles, day-of-week pickers), set [multiple] instead of using a separate component — value becomes a comma-separated set of selected segment values. <toggle-group-ui>/<toggle-option-ui>
|
|
48
|
+
- rule: 'For multi-select (filter chips, multi-flag toggles, day-of-week pickers), set [multiple] instead of using a separate component — value becomes a comma-separated set of selected segment values. <toggle-group-ui>/<toggle-option-ui> were cut in 0.8.43 (gh#1617); use <segmented-ui multiple> + <segment-ui> instead (gh#1369, #1363 C1).'
|
|
49
49
|
reason: 'Selection model axis — multiple absorbs the deprecated multi-select pair.'
|
|
50
50
|
- rule: 'Use for view-mode switches (grid/list, light/dark) or short filter sets (3-5 options); for longer sets use <tabs-ui> or <select-ui multiple>.'
|
|
51
51
|
reason: 'Capacity guidance.'
|
|
@@ -201,7 +201,5 @@ synonyms:
|
|
|
201
201
|
- Segmented
|
|
202
202
|
related:
|
|
203
203
|
- Segment
|
|
204
|
-
- ToggleGroup
|
|
205
|
-
- ToggleOption
|
|
206
204
|
- Tabs
|
|
207
205
|
- Radio
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
--select-bg-selected to re-enable a tinted selected row. */
|
|
22
22
|
--select-bg-selected: transparent;
|
|
23
23
|
--select-bg-hover: var(--a-ui-bg-hover);
|
|
24
|
+
/* gh#1596 — the trigger kept its full field bg when disabled (no
|
|
25
|
+
swap existed at all, unlike input-ui/textarea-ui's own
|
|
26
|
+
--<component>-bg-disabled indirection); wired to the same shared
|
|
27
|
+
role those already alias to. */
|
|
28
|
+
--select-bg-disabled: var(--a-ui-bg-disabled);
|
|
24
29
|
--select-border: var(--a-ui-border);
|
|
25
30
|
--select-border-hover: var(--a-ui-border-hover);
|
|
26
31
|
--select-focus-ring: var(--a-focus-ring);
|
|
@@ -69,6 +74,7 @@
|
|
|
69
74
|
align-items: center;
|
|
70
75
|
}
|
|
71
76
|
:scope[disabled] { pointer-events: none; color: var(--select-fg-disabled); }
|
|
77
|
+
:scope[disabled] [slot="trigger"] { background: var(--select-bg-disabled); }
|
|
72
78
|
|
|
73
79
|
/* Label */
|
|
74
80
|
:scope::before {
|
|
@@ -51,7 +51,7 @@ a2ui:
|
|
|
51
51
|
reason: 'Minimal stepper visualization.'
|
|
52
52
|
- rule: 'Different from <stepper-ui> (labeled, expanded) — step-progress is dense and label-free.'
|
|
53
53
|
reason: 'Density boundary.'
|
|
54
|
-
- rule: 'For multi-task progress bars (multiple labeled rows) use a stack of <progress-ui> with `label` set (absorbed the row layout from
|
|
54
|
+
- rule: 'For multi-task progress bars (multiple labeled rows) use a stack of <progress-ui> with `label` set (absorbed the row layout from progress-row-ui, which was cut in 0.8.43, gh#1617).'
|
|
55
55
|
reason: 'Different layout.'
|
|
56
56
|
anti_patterns: []
|
|
57
57
|
|
|
@@ -154,7 +154,7 @@ tokens:
|
|
|
154
154
|
description: Color of the focus + selected ring when [selectable] is set.
|
|
155
155
|
a2ui:
|
|
156
156
|
rules:
|
|
157
|
-
- rule: 'Use to display a single color sample with optional label. For interactive color picking use <color-
|
|
157
|
+
- rule: 'Use to display a single color sample with optional label. For interactive color picking use <color-area-ui>.'
|
|
158
158
|
reason: 'Swatch is read-only display; picker is input.'
|
|
159
159
|
- rule: 'Inside design-token displays or palette grids; not for general decoration.'
|
|
160
160
|
reason: 'Semantic purpose: color sample.'
|
|
@@ -14,6 +14,13 @@ switch-ui[checked] {
|
|
|
14
14
|
--switch-track-border: var(--switch-track-border-checked);
|
|
15
15
|
--switch-thumb-bg: var(--switch-thumb-bg-checked);
|
|
16
16
|
}
|
|
17
|
+
/* gh#1596 — a checked track kept its full primary fill when disabled
|
|
18
|
+
(only the label fg dimmed); 2-attr selector outweighs the 1-attr rule
|
|
19
|
+
above regardless of source order. */
|
|
20
|
+
switch-ui[checked][disabled] {
|
|
21
|
+
--switch-track-bg: var(--switch-track-bg-checked-disabled);
|
|
22
|
+
--switch-track-border: var(--switch-track-bg-checked-disabled);
|
|
23
|
+
}
|
|
17
24
|
switch-ui[checked] [slot="thumb"] {
|
|
18
25
|
transform: translateX(var(--switch-thumb-travel));
|
|
19
26
|
}
|
|
@@ -60,6 +67,7 @@ switch-ui[checked] [slot="thumb"] {
|
|
|
60
67
|
|
|
61
68
|
/* ── State: disabled ── */
|
|
62
69
|
--switch-fg-disabled: var(--a-ui-text-disabled);
|
|
70
|
+
--switch-track-bg-checked-disabled: var(--a-ui-bg-disabled);
|
|
63
71
|
text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
|
|
64
72
|
}
|
|
65
73
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/TableToolbar.json",
|
|
4
4
|
"title": "TableToolbar",
|
|
5
|
-
"description": "Header / companion bar for a sibling table-ui. Renders title + count badge, filter / sort / columns popovers,
|
|
5
|
+
"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.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -46,11 +46,35 @@
|
|
|
46
46
|
"type": "boolean",
|
|
47
47
|
"default": false
|
|
48
48
|
},
|
|
49
|
+
"pageSize": {
|
|
50
|
+
"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.",
|
|
51
|
+
"type": "number",
|
|
52
|
+
"default": 0
|
|
53
|
+
},
|
|
54
|
+
"pageSizeOptions": {
|
|
55
|
+
"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.",
|
|
56
|
+
"$ref": "common_types.json#/$defs/DynamicStringList"
|
|
57
|
+
},
|
|
49
58
|
"placeholder": {
|
|
50
59
|
"description": "Placeholder text for the search input.",
|
|
51
60
|
"type": "string",
|
|
52
61
|
"default": "Search..."
|
|
53
62
|
},
|
|
63
|
+
"rangeEnd": {
|
|
64
|
+
"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.",
|
|
65
|
+
"type": "number",
|
|
66
|
+
"default": 0
|
|
67
|
+
},
|
|
68
|
+
"rangeStart": {
|
|
69
|
+
"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.",
|
|
70
|
+
"type": "number",
|
|
71
|
+
"default": 0
|
|
72
|
+
},
|
|
73
|
+
"rangeTotal": {
|
|
74
|
+
"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.",
|
|
75
|
+
"type": "number",
|
|
76
|
+
"default": 0
|
|
77
|
+
},
|
|
54
78
|
"text": {
|
|
55
79
|
"description": "Title text shown on the left.",
|
|
56
80
|
"type": "string",
|
|
@@ -92,6 +116,9 @@
|
|
|
92
116
|
"filter-change": {
|
|
93
117
|
"description": "Filter set changed. Detail: { filters }."
|
|
94
118
|
},
|
|
119
|
+
"page-size-change": {
|
|
120
|
+
"description": "Page-size select changed. Detail: { pageSize }."
|
|
121
|
+
},
|
|
95
122
|
"search": {
|
|
96
123
|
"description": "Debounced search query change. Detail: { value }."
|
|
97
124
|
},
|
|
@@ -104,6 +131,11 @@
|
|
|
104
131
|
"description": "Members table with filter/sort/columns/search wired to a sibling table-ui.",
|
|
105
132
|
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Column\", \"gap\": \"3\", \"children\": [\"bar\", \"card\"]},\n {\"id\": \"bar\", \"component\": \"TableToolbar\", \"for\": \"members\", \"text\": \"All Employees\", \"count\": \"32\"},\n {\"id\": \"card\", \"component\": \"Card\", \"children\": [\"sec\"]},\n {\"id\": \"sec\", \"component\": \"Section\", \"bleed\": true, \"children\": [\"tbl\"]},\n {\"id\": \"tbl\", \"component\": \"Table\", \"id\": \"members\", \"sortable\": true, \"raw\": true}\n]",
|
|
106
133
|
"name": "members-toolbar"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"description": "The ratified adiav2 list-page toolbar row (ADIA2-9123): scope menu, range summary, filter/columns triggers, page-size select, and a primary CTA — search and sort dropped per that contract.",
|
|
137
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Column\", \"gap\": \"3\", \"children\": [\"bar\", \"card\"]},\n {\"id\": \"bar\", \"component\": \"TableToolbar\", \"for\": \"accounts\", \"no-sort\": true, \"no-search\": true, \"range-start\": 1, \"range-end\": 25, \"range-total\": 320, \"page-size\": 25, \"page-size-options\": [10, 25, 50, 100]},\n {\"id\": \"card\", \"component\": \"Card\", \"children\": [\"sec\"]},\n {\"id\": \"sec\", \"component\": \"Section\", \"bleed\": true, \"children\": [\"tbl\"]},\n {\"id\": \"tbl\", \"component\": \"Table\", \"id\": \"accounts\", \"sortable\": true, \"raw\": true}\n]",
|
|
138
|
+
"name": "adiav2-list-page-toolbar-row"
|
|
107
139
|
}
|
|
108
140
|
],
|
|
109
141
|
"keywords": [
|
|
@@ -132,6 +164,9 @@
|
|
|
132
164
|
"slots": {
|
|
133
165
|
"actions": {
|
|
134
166
|
"description": "Trailing action area — primary buttons (e.g. \"New row\") rendered after the search input."
|
|
167
|
+
},
|
|
168
|
+
"scope": {
|
|
169
|
+
"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."
|
|
135
170
|
}
|
|
136
171
|
},
|
|
137
172
|
"states": [
|
|
@@ -183,6 +218,12 @@
|
|
|
183
218
|
"--table-toolbar-radius": {
|
|
184
219
|
"description": "Toolbar corner radius (variant=card)"
|
|
185
220
|
},
|
|
221
|
+
"--table-toolbar-summary-fg": {
|
|
222
|
+
"description": "Range-summary (\"Showing X–Y of N\") text color"
|
|
223
|
+
},
|
|
224
|
+
"--table-toolbar-summary-size": {
|
|
225
|
+
"description": "Range-summary font size"
|
|
226
|
+
},
|
|
186
227
|
"--table-toolbar-title-fg": {
|
|
187
228
|
"description": "Title text color"
|
|
188
229
|
},
|