@adia-ai/web-components 0.8.39 → 0.8.40
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 +12 -0
- package/MIGRATION.md +240 -0
- package/components/agent-artifact/agent-artifact.css +1 -1
- package/components/agent-reasoning/agent-reasoning.css +2 -2
- package/components/agent-trace/agent-trace.css +3 -3
- package/components/alert/alert.css +1 -1
- package/components/avatar/avatar.css +1 -1
- package/components/badge/badge.css +1 -1
- package/components/button/button.css +6 -5
- package/components/calendar-picker/calendar-picker.css +1 -1
- package/components/card/card.css +3 -3
- package/components/chart/chart.a2ui.json +5 -5
- package/components/chart/chart.class.js +4 -4
- package/components/chart/chart.css +6 -6
- package/components/chart/chart.d.ts +2 -2
- package/components/chart/chart.yaml +3 -2
- package/components/chat-thread/chat-thread.css +1 -1
- package/components/code/code.css +6 -6
- package/components/combobox/combobox.css +2 -2
- package/components/command/command.css +3 -3
- package/components/date-range-picker/date-range-picker.css +1 -1
- package/components/datetime-picker/datetime-picker.css +1 -1
- package/components/description-list/description-list.css +2 -2
- package/components/display-field/display-field.css +3 -3
- package/components/divider/divider.css +1 -1
- package/components/drawer/drawer.css +2 -2
- package/components/drilldown/drilldown.css +2 -2
- package/components/empty-state/empty-state.css +2 -2
- package/components/field/field.css +1 -1
- package/components/heatmap/heatmap.css +2 -2
- package/components/inline-message/inline-message.css +1 -1
- package/components/input/input.css +5 -4
- package/components/integration-card/integration-card.css +4 -4
- package/components/kbd/kbd.css +1 -1
- package/components/list/list.css +2 -2
- package/components/nav/nav.css +2 -2
- package/components/nav-group/nav-group.css +3 -3
- package/components/nav-item/nav-item.css +2 -2
- package/components/option-card/option-card.css +1 -1
- package/components/otp-input/otp-input.css +1 -1
- package/components/page/page.css +2 -2
- package/components/pagination/pagination.css +1 -1
- package/components/pane/pane.css +1 -1
- package/components/progress-row/progress-row.css +2 -2
- package/components/qr-code/qr-code.a2ui.json +10 -10
- package/components/qr-code/qr-code.class.js +3 -3
- package/components/qr-code/qr-code.d.ts +10 -7
- package/components/qr-code/qr-code.yaml +13 -9
- package/components/range/range.css +1 -1
- package/components/rating/rating.css +1 -1
- package/components/richtext/richtext.css +3 -3
- package/components/segment/segment.css +5 -4
- package/components/select/select.css +3 -3
- package/components/spinner/spinner.css +1 -1
- package/components/stat/stat.css +3 -3
- package/components/step-progress/step-progress.css +1 -1
- package/components/stepper/stepper.css +2 -2
- package/components/swatch/swatch.css +2 -2
- package/components/table/table.a2ui.json +0 -10
- package/components/table/table.class.js +4 -4
- package/components/table/table.css +6 -9
- package/components/table/table.d.ts +0 -2
- package/components/table/table.yaml +0 -9
- package/components/table-toolbar/table-toolbar.css +1 -1
- package/components/tabs/tabs.css +1 -1
- package/components/tag/tag.css +2 -2
- package/components/tags-input/tags-input.css +1 -1
- package/components/textarea/textarea.css +1 -1
- package/components/time-picker/time-picker.css +1 -1
- package/components/timeline/timeline.css +4 -4
- package/components/toc/toc.css +1 -1
- package/components/toggle-group/toggle-group.class.js +3 -11
- package/components/toggle-group/toggle-group.css +1 -3
- package/components/toggle-group/toggle-group.d.ts +1 -2
- package/components/toggle-group/toggle-group.yaml +1 -4
- package/components/toggle-group/toggle-option.a2ui.json +1 -1
- package/components/toggle-group/toggle-option.yaml +2 -6
- package/components/tooltip/tooltip.css +1 -1
- package/components/tour/tour.css +2 -2
- package/components/tree/tree.css +1 -1
- package/custom-elements.json +7 -15
- 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 +89 -89
- package/dist/web-components.sheet.js +1 -1
- package/package.json +1 -1
- package/styles/type/scale.css +6 -7
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
font-weight: var(--richtext-h4-weight);
|
|
165
165
|
color: var(--richtext-fg-muted);
|
|
166
166
|
text-transform: uppercase;
|
|
167
|
-
letter-spacing:
|
|
167
|
+
letter-spacing: var(--a-font-tracking-wide);
|
|
168
168
|
margin: var(--richtext-h4-margin-top) 0 var(--richtext-h4-margin-bottom);
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
font-weight: var(--richtext-h4-weight);
|
|
174
174
|
color: var(--richtext-fg-muted);
|
|
175
175
|
text-transform: uppercase;
|
|
176
|
-
letter-spacing:
|
|
176
|
+
letter-spacing: var(--a-font-tracking-wider);
|
|
177
177
|
margin: var(--richtext-h4-margin-top) 0 var(--richtext-h4-margin-bottom);
|
|
178
178
|
}
|
|
179
179
|
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
padding: var(--richtext-pre-inset);
|
|
213
213
|
overflow-x: auto;
|
|
214
214
|
font-size: var(--richtext-code-size);
|
|
215
|
-
line-height:
|
|
215
|
+
line-height: var(--a-font-leading-relaxed);
|
|
216
216
|
margin: var(--richtext-pre-my) 0;
|
|
217
217
|
}
|
|
218
218
|
|
|
@@ -23,9 +23,10 @@ segment-ui[selected] {
|
|
|
23
23
|
`line-height: 1` is deliberate, but the label's ::after clips to its
|
|
24
24
|
own line box, so inheriting 1 makes half-leading negative and shears
|
|
25
25
|
descenders (g/j/p/q/y, parentheses) by ~0.93px at the default size —
|
|
26
|
-
gh#906.
|
|
27
|
-
mirrors --button-label-line-height.
|
|
28
|
-
|
|
26
|
+
gh#906. Normal (1.35) contains the font's content box at every
|
|
27
|
+
[size]; mirrors --button-label-line-height. Value-nearest migration
|
|
28
|
+
from the retired --a-leading-snug (1.3) — ADR-0052. */
|
|
29
|
+
--segment-label-line-height: var(--a-font-leading-normal);
|
|
29
30
|
|
|
30
31
|
/* ── Colors ── */
|
|
31
32
|
--segment-fg: var(--a-ui-text-subtle);
|
|
@@ -60,7 +61,7 @@ segment-ui[selected] {
|
|
|
60
61
|
font-family: var(--segment-font-family);
|
|
61
62
|
font-size: var(--segment-font-size);
|
|
62
63
|
font-weight: var(--segment-font-weight);
|
|
63
|
-
line-height:
|
|
64
|
+
line-height: var(--a-font-leading-none);
|
|
64
65
|
color: var(--segment-fg);
|
|
65
66
|
white-space: nowrap;
|
|
66
67
|
overflow: hidden;
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
border: 1px solid var(--select-border);
|
|
92
92
|
border-radius: var(--select-radius);
|
|
93
93
|
background: var(--select-bg);
|
|
94
|
-
line-height:
|
|
94
|
+
line-height: var(--a-font-leading-none);
|
|
95
95
|
cursor: pointer;
|
|
96
96
|
/* Match every property the hover / focus / invalid states change. */
|
|
97
97
|
transition:
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
display: inline-flex;
|
|
131
131
|
align-items: center;
|
|
132
132
|
flex-shrink: 0;
|
|
133
|
-
line-height:
|
|
133
|
+
line-height: var(--a-font-leading-none);
|
|
134
134
|
--a-icon-size: var(--select-font-size);
|
|
135
135
|
color: var(--select-fg-muted);
|
|
136
136
|
}
|
|
@@ -414,7 +414,7 @@ select-ui [role="group"] [slot="group-label"] {
|
|
|
414
414
|
font-weight: var(--a-ui-weight);
|
|
415
415
|
color: var(--select-fg-muted);
|
|
416
416
|
text-transform: uppercase;
|
|
417
|
-
letter-spacing:
|
|
417
|
+
letter-spacing: var(--a-font-tracking-wide);
|
|
418
418
|
white-space: nowrap;
|
|
419
419
|
}
|
|
420
420
|
|
package/components/stat/stat.css
CHANGED
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
grid-area: label;
|
|
172
172
|
font-size: var(--stat-label-size);
|
|
173
173
|
color: var(--stat-label-fg);
|
|
174
|
-
line-height:
|
|
174
|
+
line-height: var(--a-font-leading-normal);
|
|
175
175
|
min-width: 0;
|
|
176
176
|
overflow: hidden;
|
|
177
177
|
text-overflow: ellipsis;
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
align-items: center;
|
|
186
186
|
gap: 0.25em;
|
|
187
187
|
font-size: var(--stat-change-size);
|
|
188
|
-
line-height:
|
|
188
|
+
line-height: var(--a-font-leading-none);
|
|
189
189
|
justify-self: start;
|
|
190
190
|
}
|
|
191
191
|
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
font-size: var(--stat-value-size);
|
|
196
196
|
font-weight: var(--stat-value-weight);
|
|
197
197
|
color: var(--stat-value-fg);
|
|
198
|
-
line-height:
|
|
198
|
+
line-height: var(--a-font-leading-snug);
|
|
199
199
|
min-width: 0;
|
|
200
200
|
overflow: hidden;
|
|
201
201
|
text-overflow: ellipsis;
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
display: block;
|
|
237
237
|
font-weight: var(--stepper-item-label-weight);
|
|
238
238
|
font-size: var(--stepper-item-label-size);
|
|
239
|
-
line-height:
|
|
239
|
+
line-height: var(--a-font-leading-normal);
|
|
240
240
|
color: var(--stepper-item-label-fg);
|
|
241
241
|
min-width: 0;
|
|
242
242
|
overflow-wrap: break-word;
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
margin-top: var(--stepper-item-offset-xs);
|
|
248
248
|
color: var(--stepper-item-desc-fg);
|
|
249
249
|
font-size: var(--stepper-item-desc-size);
|
|
250
|
-
line-height:
|
|
250
|
+
line-height: var(--a-font-leading-relaxed);
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
:scope [slot]:empty {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
min-width: 0;
|
|
64
64
|
color: var(--swatch-label-fg);
|
|
65
65
|
font-size: var(--swatch-label-size);
|
|
66
|
-
line-height:
|
|
66
|
+
line-height: var(--a-font-leading-snug);
|
|
67
67
|
vertical-align: baseline;
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
background: var(--swatch-badge-bg);
|
|
239
239
|
color: var(--swatch-badge-fg);
|
|
240
240
|
font-size: var(--swatch-badge-size);
|
|
241
|
-
line-height:
|
|
241
|
+
line-height: var(--a-font-leading-none);
|
|
242
242
|
border-radius: var(--swatch-badge-radius);
|
|
243
243
|
box-shadow: 0 0 0 1px color-mix(in oklab, var(--md-sys-color-neutral-outline-variant) 60%, transparent);
|
|
244
244
|
}
|
|
@@ -24,16 +24,6 @@
|
|
|
24
24
|
"description": "JS property (set programmatically — `el.data = [...]`) — row records, an array of plain objects keyed to columns[].key. May also be supplied declaratively as a JSON-array `data=\"[…]\"` attribute, hydrated once at connect (gh#288) — the same pattern chart-ui's `data` attribute uses. Custom accessor on the element class, not a reflected attribute.",
|
|
25
25
|
"$ref": "common_types.json#/$defs/DynamicObjectList"
|
|
26
26
|
},
|
|
27
|
-
"density": {
|
|
28
|
-
"description": "Controls cell padding and row height. 'compact' for dense data, 'standard' for default spacing, 'comfortable' for spacious rows.",
|
|
29
|
-
"type": "string",
|
|
30
|
-
"enum": [
|
|
31
|
-
"compact",
|
|
32
|
-
"standard",
|
|
33
|
-
"comfortable"
|
|
34
|
-
],
|
|
35
|
-
"default": "standard"
|
|
36
|
-
},
|
|
37
27
|
"expandable": {
|
|
38
28
|
"description": "Enable row expansion",
|
|
39
29
|
"type": "boolean",
|
|
@@ -21,8 +21,11 @@
|
|
|
21
21
|
* sortable — enable column sorting on header click
|
|
22
22
|
* selectable — enable row selection via checkboxes
|
|
23
23
|
* striped — alternate row background
|
|
24
|
-
* density — 'compact' | 'standard' | 'comfortable'
|
|
25
24
|
* valign — 'center' (default) | 'top' — body-cell vertical alignment (gh#505)
|
|
25
|
+
*
|
|
26
|
+
* table-ui has no local `density` prop (ADR-0054) — it converges onto the
|
|
27
|
+
* ambient global [density="compact"|"spacious"] attribute; --table-py/-px
|
|
28
|
+
* already derive from --a-space-* steps, which --a-density scales.
|
|
26
29
|
* paginate — rows per page (0 = no pagination)
|
|
27
30
|
* loading — show loading overlay
|
|
28
31
|
* search — global search filter string
|
|
@@ -118,7 +121,6 @@ export class UITable extends UIElement {
|
|
|
118
121
|
frameless: { type: Boolean, default: false, reflect: true },
|
|
119
122
|
wrap: { type: Boolean, default: false, reflect: true },
|
|
120
123
|
raw: { type: Boolean, default: false, reflect: true },
|
|
121
|
-
density: { type: String, default: 'standard', reflect: true },
|
|
122
124
|
paginate: { type: Number, default: 0, reflect: true },
|
|
123
125
|
loading: { type: Boolean, default: false, reflect: true },
|
|
124
126
|
search: { type: String, default: '', reflect: true },
|
|
@@ -294,7 +296,6 @@ export class UITable extends UIElement {
|
|
|
294
296
|
columnWidths: Object.fromEntries(this.#columnWidths),
|
|
295
297
|
hiddenColumns: this.#columns.filter(c => c.hidden).map(c => c.key),
|
|
296
298
|
page: this.#page,
|
|
297
|
-
density: this.density,
|
|
298
299
|
};
|
|
299
300
|
}
|
|
300
301
|
|
|
@@ -319,7 +320,6 @@ export class UITable extends UIElement {
|
|
|
319
320
|
}
|
|
320
321
|
}
|
|
321
322
|
if (state.page != null) this.#page = state.page;
|
|
322
|
-
if (state.density) this.density = state.density;
|
|
323
323
|
this.#requestRender();
|
|
324
324
|
}
|
|
325
325
|
|
|
@@ -463,14 +463,11 @@
|
|
|
463
463
|
|
|
464
464
|
/* ═══════ Density ═══════ */
|
|
465
465
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
:scope[density="comfortable"] {
|
|
472
|
-
--table-py: var(--a-space-4);
|
|
473
|
-
}
|
|
466
|
+
/* No local override (ADR-0054 convergence) — --table-py/-px above already
|
|
467
|
+
derive from --a-space-* steps, which the ambient global
|
|
468
|
+
[density="compact"|"spacious"] attribute already scales via
|
|
469
|
+
--a-density. Do not reintroduce a component-local :scope[density=…]
|
|
470
|
+
block; that would re-shadow the global grammar (ADR-0053). */
|
|
474
471
|
|
|
475
472
|
/* ═══════ Pinned cells ═══════ */
|
|
476
473
|
|
|
@@ -744,7 +741,7 @@
|
|
|
744
741
|
grid-template-columns: subgrid;
|
|
745
742
|
grid-column: 1 / -1;
|
|
746
743
|
border-top: 2px solid var(--table-agg-border);
|
|
747
|
-
font-weight:
|
|
744
|
+
font-weight: var(--a-weight-semibold);
|
|
748
745
|
font-size: var(--table-agg-size);
|
|
749
746
|
color: var(--table-fg-secondary);
|
|
750
747
|
}
|
|
@@ -90,8 +90,6 @@ export class UITable extends UIElement {
|
|
|
90
90
|
columns: string;
|
|
91
91
|
/** JS property (set programmatically — `el.data = [...]`) — row records, an array of plain objects keyed to columns[].key. May also be supplied declaratively as a JSON-array `data="[…]"` attribute, hydrated once at connect (gh#288) — the same pattern chart-ui's `data` attribute uses. Custom accessor on the element class, not a reflected attribute. */
|
|
92
92
|
data: string;
|
|
93
|
-
/** Controls cell padding and row height. 'compact' for dense data, 'standard' for default spacing, 'comfortable' for spacious rows. */
|
|
94
|
-
density: 'compact' | 'standard' | 'comfortable';
|
|
95
93
|
/** Enable row expansion */
|
|
96
94
|
expandable: boolean;
|
|
97
95
|
/** Drop the table's outer 1px perimeter and nothing else (gh#511) — row dividers are untouched (the perimeter is split onto its own --table-perimeter token, defaulting to --table-border). For card-composed tables: the card owns the frame, so the table's square perimeter otherwise renders a doubled edge (flush bleed) or a stray inner box (with content above). Standalone tables keep their chrome by default. Theming path without the attribute: set --table-perimeter to transparent per instance. Note: `<card-ui><section bleed>` already drops a direct-child table-ui's chrome automatically (card.css, gh#796) — `frameless`/`raw` on the instance still applies and is honored, but is no longer required just to avoid the doubled-edge look in that composition. */
|
|
@@ -36,15 +36,6 @@ props:
|
|
|
36
36
|
type: object
|
|
37
37
|
default: []
|
|
38
38
|
dynamic: true # JS-set collection prop with a custom setter — deliberately not in static properties
|
|
39
|
-
density:
|
|
40
|
-
description: Controls cell padding and row height. 'compact' for dense data, 'standard' for default
|
|
41
|
-
spacing, 'comfortable' for spacious rows.
|
|
42
|
-
type: string
|
|
43
|
-
default: standard
|
|
44
|
-
enum:
|
|
45
|
-
- compact
|
|
46
|
-
- standard
|
|
47
|
-
- comfortable
|
|
48
39
|
expandable:
|
|
49
40
|
description: Enable row expansion
|
|
50
41
|
type: boolean
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
font-size: var(--table-toolbar-title-size);
|
|
83
83
|
font-weight: var(--table-toolbar-title-weight);
|
|
84
84
|
color: var(--table-toolbar-title-fg);
|
|
85
|
-
line-height:
|
|
85
|
+
line-height: var(--a-font-leading-snug);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
[data-count-badge][hidden] { display: none; }
|
package/components/tabs/tabs.css
CHANGED
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
/* font-family floor — see segment.css rationale. */
|
|
139
139
|
font-family: var(--tabs-font-family);
|
|
140
140
|
font-size: var(--tabs-font-size);
|
|
141
|
-
line-height:
|
|
141
|
+
line-height: var(--a-font-leading-none);
|
|
142
142
|
cursor: pointer;
|
|
143
143
|
user-select: none;
|
|
144
144
|
white-space: nowrap;
|
package/components/tag/tag.css
CHANGED
|
@@ -154,8 +154,8 @@ tag-ui[removable]:not([disabled]):hover {
|
|
|
154
154
|
/* font-family floor — see segment.css rationale. */
|
|
155
155
|
font-family: var(--tag-font-family);
|
|
156
156
|
font-size: var(--tag-font);
|
|
157
|
-
font-weight:
|
|
158
|
-
line-height:
|
|
157
|
+
font-weight: var(--a-weight-medium);
|
|
158
|
+
line-height: var(--a-font-leading-none);
|
|
159
159
|
color: var(--tag-fg);
|
|
160
160
|
background: var(--tag-bg);
|
|
161
161
|
white-space: nowrap;
|
|
@@ -75,7 +75,7 @@ textarea-ui:not([disabled]) [slot="text"]:hover {
|
|
|
75
75
|
/* font-family floor — see segment.css rationale. */
|
|
76
76
|
font-family: var(--textarea-font-family);
|
|
77
77
|
font-size: var(--textarea-font-size);
|
|
78
|
-
line-height:
|
|
78
|
+
line-height: var(--a-font-leading-relaxed);
|
|
79
79
|
white-space: pre-wrap;
|
|
80
80
|
word-break: break-word;
|
|
81
81
|
overflow-y: auto;
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
font-family: var(--time-picker-font-family, var(--a-font-family-ui));
|
|
43
43
|
font-size: var(--time-picker-font-size);
|
|
44
44
|
font-variant-numeric: tabular-nums;
|
|
45
|
-
line-height:
|
|
45
|
+
line-height: var(--a-font-leading-normal);
|
|
46
46
|
cursor: text;
|
|
47
47
|
transition:
|
|
48
48
|
border-color var(--time-picker-duration) var(--time-picker-easing),
|
|
@@ -309,7 +309,7 @@ agent-reasoning-ui timeline-ui:not([orientation="horizontal"]),
|
|
|
309
309
|
font-weight: var(--timeline-item-label-weight);
|
|
310
310
|
font-size: var(--timeline-item-label-size);
|
|
311
311
|
color: var(--timeline-item-label-fg);
|
|
312
|
-
line-height:
|
|
312
|
+
line-height: var(--a-font-leading-normal);
|
|
313
313
|
overflow-wrap: break-word;
|
|
314
314
|
min-width: 0;
|
|
315
315
|
}
|
|
@@ -323,7 +323,7 @@ agent-reasoning-ui timeline-ui:not([orientation="horizontal"]),
|
|
|
323
323
|
grid-row: 2;
|
|
324
324
|
color: var(--timeline-item-desc-fg);
|
|
325
325
|
font-size: var(--timeline-item-desc-size);
|
|
326
|
-
line-height:
|
|
326
|
+
line-height: var(--a-font-leading-relaxed);
|
|
327
327
|
margin-top: var(--a-space-0-5);
|
|
328
328
|
}
|
|
329
329
|
|
|
@@ -333,7 +333,7 @@ agent-reasoning-ui timeline-ui:not([orientation="horizontal"]),
|
|
|
333
333
|
color: var(--timeline-item-time-fg);
|
|
334
334
|
font-size: var(--timeline-item-time-size);
|
|
335
335
|
font-variant-numeric: tabular-nums;
|
|
336
|
-
line-height:
|
|
336
|
+
line-height: var(--a-font-leading-normal);
|
|
337
337
|
white-space: nowrap;
|
|
338
338
|
justify-self: end;
|
|
339
339
|
}
|
|
@@ -356,7 +356,7 @@ agent-reasoning-ui timeline-ui:not([orientation="horizontal"]),
|
|
|
356
356
|
gap: var(--a-space-0-5);
|
|
357
357
|
color: var(--timeline-item-outcome-fg);
|
|
358
358
|
font-size: var(--timeline-item-desc-size);
|
|
359
|
-
line-height:
|
|
359
|
+
line-height: var(--a-font-leading-relaxed);
|
|
360
360
|
animation: tl-fade var(--timeline-item-duration) var(--timeline-item-easing);
|
|
361
361
|
}
|
|
362
362
|
|
package/components/toc/toc.css
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
padding-inline: var(--toc-padding-inline);
|
|
60
60
|
text-decoration: none;
|
|
61
61
|
color: inherit;
|
|
62
|
-
line-height:
|
|
62
|
+
line-height: var(--a-font-leading-normal);
|
|
63
63
|
border-inline-start: 2px solid var(--toc-rule-inactive);
|
|
64
64
|
transition:
|
|
65
65
|
color var(--a-duration-fast) var(--a-easing),
|
|
@@ -34,11 +34,8 @@ import { UIElement } from '../../core/element.js';
|
|
|
34
34
|
// truth. ADR-0056 (gh#1303): the child's current-state surface is the
|
|
35
35
|
// declared, reflected `selected` prop below, converging onto <segment-ui>'s
|
|
36
36
|
// mechanism (yaml → catalog → generative grammar) instead of a private
|
|
37
|
-
// stamp. `
|
|
38
|
-
//
|
|
39
|
-
// CSS may already target it as an undocumented hook; its removal rides the
|
|
40
|
-
// 0.9.0 breaking wave. Don't set `selected` directly on an option; drive
|
|
41
|
-
// the group's `value` instead.
|
|
37
|
+
// stamp. Don't set `selected` directly on an option; drive the group's
|
|
38
|
+
// `value` instead.
|
|
42
39
|
|
|
43
40
|
export class UIToggleOption extends UIElement {
|
|
44
41
|
static properties = {
|
|
@@ -110,13 +107,8 @@ export class UIToggleGroup extends UIElement {
|
|
|
110
107
|
const isSelected = selected.has(optVal);
|
|
111
108
|
// ADR-0056 (gh#1303): `selected` is the declared, reflected mechanism —
|
|
112
109
|
// converges onto <segment-ui>'s convention (opt's own render() stamps
|
|
113
|
-
// aria-pressed from it).
|
|
114
|
-
// as a DEPRECATED parallel hook for pre-existing external CSS; it no
|
|
115
|
-
// longer drives styling (toggle-group.css) and its removal rides the
|
|
116
|
-
// 0.9.0 breaking wave.
|
|
110
|
+
// aria-pressed from it).
|
|
117
111
|
opt.selected = isSelected;
|
|
118
|
-
if (isSelected) opt.setAttribute('data-selected', '');
|
|
119
|
-
else opt.removeAttribute('data-selected');
|
|
120
112
|
}
|
|
121
113
|
}
|
|
122
114
|
|
|
@@ -10,9 +10,7 @@ toggle-option-ui:not([disabled]):hover {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/* ADR-0056 (gh#1303): converged onto <segment-ui>'s declared, reflected
|
|
13
|
-
[selected] prop, set by <toggle-group-ui> (toggle-group.class.js).
|
|
14
|
-
parent also stamps the legacy `data-selected` attribute in parallel —
|
|
15
|
-
DEPRECATED, no longer styled here; removal rides the 0.9.0 breaking wave. */
|
|
13
|
+
[selected] prop, set by <toggle-group-ui> (toggle-group.class.js). */
|
|
16
14
|
toggle-option-ui[selected] {
|
|
17
15
|
--toggle-option-bg: var(--toggle-option-selected-bg);
|
|
18
16
|
--toggle-option-fg: var(--toggle-option-selected-fg);
|
|
@@ -41,8 +41,7 @@ export class UIToggleOption extends UIElement {
|
|
|
41
41
|
/** Whether this option is currently selected. Managed by the parent
|
|
42
42
|
<toggle-group-ui> container (ADR-0056) — don't set directly; the group's
|
|
43
43
|
`value` is the single source of truth. Converges onto <segment-ui>'s
|
|
44
|
-
declared reflected-prop mechanism
|
|
45
|
-
`data-selected` stamp with no declared API surface). */
|
|
44
|
+
declared reflected-prop mechanism. */
|
|
46
45
|
selected: boolean;
|
|
47
46
|
/** Visible label text. */
|
|
48
47
|
text: string;
|
|
@@ -4,10 +4,7 @@
|
|
|
4
4
|
# ADR-0056 (gh#1303): <toggle-option-ui>'s current-state surface converges
|
|
5
5
|
# onto <segment-ui>'s declared, reflected `[selected]` prop (see
|
|
6
6
|
# toggle-option.yaml). This container sets that prop, keeping `value` as the
|
|
7
|
-
# single source of truth.
|
|
8
|
-
# attribute on each option in parallel — DEPRECATED (undocumented external
|
|
9
|
-
# CSS may target it); its removal rides the 0.9.0 breaking wave, not this
|
|
10
|
-
# change.
|
|
7
|
+
# single source of truth.
|
|
11
8
|
$schema: ../../../../scripts/schemas/component.yaml.schema.json
|
|
12
9
|
name: UIToggleGroup
|
|
13
10
|
tag: toggle-group-ui
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"default": ""
|
|
28
28
|
},
|
|
29
29
|
"selected": {
|
|
30
|
-
"description": "Whether this option is currently selected. Managed by the parent\n<toggle-group-ui> container (ADR-0056) — don't set directly; the group's\n`value` is the single source of truth. Converges onto <segment-ui>'s\ndeclared reflected-prop mechanism
|
|
30
|
+
"description": "Whether this option is currently selected. Managed by the parent\n<toggle-group-ui> container (ADR-0056) — don't set directly; the group's\n`value` is the single source of truth. Converges onto <segment-ui>'s\ndeclared reflected-prop mechanism.",
|
|
31
31
|
"type": "boolean",
|
|
32
32
|
"default": false
|
|
33
33
|
},
|
|
@@ -5,10 +5,7 @@
|
|
|
5
5
|
# + is registered alongside UIToggleGroup.
|
|
6
6
|
#
|
|
7
7
|
# ADR-0056 (gh#1303): `selected` converges onto <segment-ui>'s declared,
|
|
8
|
-
# parent-managed, reflected-prop convention.
|
|
9
|
-
# the legacy `data-selected` attribute in parallel — DEPRECATED, kept only
|
|
10
|
-
# because it was an undocumented hook external CSS may already target;
|
|
11
|
-
# removal rides the 0.9.0 breaking wave (see toggle-group.yaml + CHANGELOG).
|
|
8
|
+
# parent-managed, reflected-prop convention.
|
|
12
9
|
|
|
13
10
|
# Child component of <toggle-group-ui>. Surface only inside that parent.
|
|
14
11
|
$schema: ../../../../scripts/schemas/component.yaml.schema.json
|
|
@@ -43,8 +40,7 @@ props:
|
|
|
43
40
|
Whether this option is currently selected. Managed by the parent
|
|
44
41
|
<toggle-group-ui> container (ADR-0056) — don't set directly; the group's
|
|
45
42
|
`value` is the single source of truth. Converges onto <segment-ui>'s
|
|
46
|
-
declared reflected-prop mechanism
|
|
47
|
-
`data-selected` stamp with no declared API surface).
|
|
43
|
+
declared reflected-prop mechanism.
|
|
48
44
|
type: boolean
|
|
49
45
|
default: false
|
|
50
46
|
reflect: true
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
color: var(--md-sys-color-neutral-background);
|
|
31
31
|
font-family: var(--a-font-family);
|
|
32
32
|
font-size: var(--a-ui-sm);
|
|
33
|
-
line-height:
|
|
33
|
+
line-height: var(--a-font-leading-normal);
|
|
34
34
|
border: none;
|
|
35
35
|
border-radius: var(--a-radius-full);
|
|
36
36
|
box-shadow: var(--a-shadow-sm);
|
package/components/tour/tour.css
CHANGED
|
@@ -112,14 +112,14 @@
|
|
|
112
112
|
[data-tour-popover] [data-tour-title] {
|
|
113
113
|
margin: 0;
|
|
114
114
|
font-size: var(--a-text-lg);
|
|
115
|
-
font-weight:
|
|
115
|
+
font-weight: var(--a-weight-semibold);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
[data-tour-popover] [data-tour-body] {
|
|
119
119
|
margin: 0 0 var(--a-space-4);
|
|
120
120
|
font-size: var(--a-ui-size);
|
|
121
121
|
color: var(--md-sys-color-neutral-on-surface);
|
|
122
|
-
line-height:
|
|
122
|
+
line-height: var(--a-font-leading-relaxed);
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
[data-tour-popover] [data-tour-footer] {
|
package/components/tree/tree.css
CHANGED
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
background: var(--tree-badge-bg, transparent);
|
|
142
142
|
padding: 0 var(--tree-badge-px, var(--a-space-1));
|
|
143
143
|
border-radius: var(--tree-badge-radius, var(--a-radius-sm));
|
|
144
|
-
line-height:
|
|
144
|
+
line-height: var(--a-font-leading-none);
|
|
145
145
|
font-variant-numeric: tabular-nums;
|
|
146
146
|
}
|
|
147
147
|
[slot="badge"]:empty {
|
package/custom-elements.json
CHANGED
|
@@ -2028,12 +2028,12 @@
|
|
|
2028
2028
|
"description": "Hide value labels"
|
|
2029
2029
|
},
|
|
2030
2030
|
{
|
|
2031
|
-
"name": "radius",
|
|
2031
|
+
"name": "corner-radius",
|
|
2032
2032
|
"type": {
|
|
2033
2033
|
"text": "number"
|
|
2034
2034
|
},
|
|
2035
2035
|
"default": "null",
|
|
2036
|
-
"description": "Bar corner radius (null = let CSS tokens decide)"
|
|
2036
|
+
"description": "Bar corner radius in px (null = let CSS tokens decide)"
|
|
2037
2037
|
},
|
|
2038
2038
|
{
|
|
2039
2039
|
"name": "size",
|
|
@@ -7837,7 +7837,7 @@
|
|
|
7837
7837
|
"declarations": [
|
|
7838
7838
|
{
|
|
7839
7839
|
"kind": "class",
|
|
7840
|
-
"description": "Inline QR code generator — renders a scannable code as inline SVG. Two modes: **A. Auto-encode (default).** Set `[value]` to a string (URL, plain text, share link, 2FA secret). The component encodes the data with the built-in zero-deps QR encoder (byte mode, ECC level configurable, versions 1–10 up to ~150 byte chars) and renders an SVG. **B. Bring-your-own matrix.** Set `[matrix]` to a JSON string of a 2-D 0/1 array (`[[1,0,1,...],[...],...]`). The component renders the supplied matrix directly without invoking its own encoder. Use this when you need versions 11–40, kanji/alphanumeric mode, or any encoder feature beyond the built-in. When both `[value]` and `[matrix]` are set, the matrix wins (BYO override). Output is a single `<svg>` with `viewBox=\"0 0 N N\"`. Crisp-edges rendering preserves the scannable cell boundaries at any size. Sizing is controlled by the `[size]` prop (host CSS-pixel dimension); internal cell size is computed from `size / (matrix-size + 2 ·
|
|
7840
|
+
"description": "Inline QR code generator — renders a scannable code as inline SVG. Two modes: **A. Auto-encode (default).** Set `[value]` to a string (URL, plain text, share link, 2FA secret). The component encodes the data with the built-in zero-deps QR encoder (byte mode, ECC level configurable, versions 1–10 up to ~150 byte chars) and renders an SVG. **B. Bring-your-own matrix.** Set `[matrix]` to a JSON string of a 2-D 0/1 array (`[[1,0,1,...],[...],...]`). The component renders the supplied matrix directly without invoking its own encoder. Use this when you need versions 11–40, kanji/alphanumeric mode, or any encoder feature beyond the built-in. When both `[value]` and `[matrix]` are set, the matrix wins (BYO override). Output is a single `<svg>` with `viewBox=\"0 0 N N\"`. Crisp-edges rendering preserves the scannable cell boundaries at any size. Sizing is controlled by the `[size]` prop (host CSS-pixel dimension); internal cell size is computed from `size / (matrix-size + 2 · quiet-zone)`. ARIA: `role=\"img\"` with `aria-label` (default \"QR code\" or the `[label]` prop).",
|
|
7841
7841
|
"name": "UIQRCode",
|
|
7842
7842
|
"tagName": "qr-code-ui",
|
|
7843
7843
|
"superclass": {
|
|
@@ -7865,7 +7865,7 @@
|
|
|
7865
7865
|
"text": "number"
|
|
7866
7866
|
},
|
|
7867
7867
|
"default": "200",
|
|
7868
|
-
"description": "Host display size in CSS pixels (width and height; the SVG is always square). Default 200. Internal cell size is computed from this divided by `matrix-size + 2·
|
|
7868
|
+
"description": "Host display size in CSS pixels (width and height; the SVG is always square). Default 200. Internal cell size is computed from this divided by `matrix-size + 2·quiet-zone`."
|
|
7869
7869
|
},
|
|
7870
7870
|
{
|
|
7871
7871
|
"name": "error-correction",
|
|
@@ -7876,12 +7876,12 @@
|
|
|
7876
7876
|
"description": "Error-correction level (auto-encode mode only). `L` (7% recovery), `M` (15%, default), `Q` (25%), `H` (30%). Higher levels recover from more damage at the cost of QR-version size growth."
|
|
7877
7877
|
},
|
|
7878
7878
|
{
|
|
7879
|
-
"name": "
|
|
7879
|
+
"name": "quiet-zone",
|
|
7880
7880
|
"type": {
|
|
7881
7881
|
"text": "number"
|
|
7882
7882
|
},
|
|
7883
7883
|
"default": "4",
|
|
7884
|
-
"description": "Quiet zone in cells around the QR pattern. QR spec requires a minimum 4-cell
|
|
7884
|
+
"description": "Quiet zone in cells around the QR pattern. QR spec requires a minimum 4-cell quiet zone for reliable scanning; smaller values may not scan on some devices. Default `4`. (Renamed from `[margin]` — that name collided with the framework's global `[margin]` Scale attribute; `margin` on `qr-code-ui` now means the global spacing attribute, per ADR-0053.)"
|
|
7885
7885
|
},
|
|
7886
7886
|
{
|
|
7887
7887
|
"name": "color",
|
|
@@ -10376,14 +10376,6 @@
|
|
|
10376
10376
|
"default": "[]",
|
|
10377
10377
|
"description": "JS property (set programmatically — `el.data = [...]`) — row records, an array of plain objects keyed to columns[].key. May also be supplied declaratively as a JSON-array `data=\"[…]\"` attribute, hydrated once at connect (gh#288) — the same pattern chart-ui's `data` attribute uses. Custom accessor on the element class, not a reflected attribute."
|
|
10378
10378
|
},
|
|
10379
|
-
{
|
|
10380
|
-
"name": "density",
|
|
10381
|
-
"type": {
|
|
10382
|
-
"text": "string"
|
|
10383
|
-
},
|
|
10384
|
-
"default": "standard",
|
|
10385
|
-
"description": "Controls cell padding and row height. 'compact' for dense data, 'standard' for default"
|
|
10386
|
-
},
|
|
10387
10379
|
{
|
|
10388
10380
|
"name": "expandable",
|
|
10389
10381
|
"type": {
|
|
@@ -11759,7 +11751,7 @@
|
|
|
11759
11751
|
"text": "boolean"
|
|
11760
11752
|
},
|
|
11761
11753
|
"default": "false",
|
|
11762
|
-
"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
|
|
11754
|
+
"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."
|
|
11763
11755
|
}
|
|
11764
11756
|
]
|
|
11765
11757
|
}
|