@adia-ai/web-components 0.7.28 → 0.8.1
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 +29 -0
- package/components/accordion/accordion.css +13 -4
- package/components/action-list/action-list.css +3 -3
- package/components/agent-artifact/agent-artifact.css +4 -4
- package/components/agent-questions/agent-questions.css +8 -8
- package/components/agent-reasoning/agent-reasoning.css +6 -6
- package/components/agent-trace/agent-trace.css +4 -4
- package/components/agent-trace/agent-trace.js +1 -1
- package/components/alert/alert.css +16 -16
- package/components/avatar/avatar.css +3 -3
- package/components/badge/badge.css +32 -32
- package/components/blockquote/blockquote.css +1 -1
- package/components/breadcrumb/breadcrumb.css +2 -2
- package/components/button/button.css +14 -14
- package/components/calendar-grid/calendar-grid.a2ui.json +3 -3
- package/components/calendar-grid/calendar-grid.css +10 -10
- package/components/calendar-grid/calendar-grid.yaml +3 -3
- package/components/calendar-picker/calendar-picker.css +11 -11
- package/components/canvas/canvas.css +2 -2
- package/components/card/card.css +15 -15
- package/components/chart/chart.css +23 -23
- package/components/chart-legend/chart-legend.css +2 -2
- package/components/chat-thread/chat-input.css +6 -6
- package/components/chat-thread/chat-thread.css +7 -7
- package/components/check/check.css +4 -4
- package/components/code/code-editor.js +1 -1
- package/components/code/code.css +45 -22
- package/components/color-picker/color-picker.css +4 -4
- package/components/combobox/combobox.css +6 -6
- package/components/command/command.class.js +14 -3
- package/components/command/command.css +4 -4
- package/components/context-menu/context-menu.css +2 -2
- package/components/date-range-picker/date-range-picker.a2ui.json +3 -3
- package/components/date-range-picker/date-range-picker.css +8 -8
- package/components/date-range-picker/date-range-picker.yaml +3 -3
- package/components/datetime-picker/datetime-picker.css +6 -6
- package/components/demo-toggle/demo-toggle.css +4 -4
- package/components/description-list/description-list.css +1 -1
- package/components/display-field/display-field.css +2 -2
- package/components/divider/divider.css +1 -1
- package/components/drawer/drawer.css +7 -7
- package/components/embed/embed.css +1 -1
- package/components/empty-state/empty-state.css +5 -5
- package/components/feed/feed.css +7 -7
- package/components/field/field.css +2 -2
- package/components/heatmap/heatmap.css +8 -8
- package/components/inline-edit/inline-edit.a2ui.json +1 -1
- package/components/inline-edit/inline-edit.css +3 -3
- package/components/inline-edit/inline-edit.yaml +1 -1
- package/components/inline-message/inline-message.css +4 -4
- package/components/input/input.css +1 -1
- package/components/inspector/inspector.css +1 -1
- package/components/integration-card/integration-card.css +3 -3
- package/components/kbd/kbd.css +2 -2
- package/components/link/link.css +2 -2
- package/components/list/list.css +10 -10
- package/components/list-window/list-window.css +2 -2
- package/components/mark/mark.css +9 -9
- package/components/menu/menu.css +9 -9
- package/components/modal/modal.css +4 -4
- package/components/nav/nav.css +1 -1
- package/components/nav-group/nav-group.css +7 -16
- package/components/nav-item/nav-item.css +1 -1
- package/components/noodles/noodles.a2ui.json +1 -1
- package/components/noodles/noodles.css +3 -3
- package/components/noodles/noodles.d.ts +1 -1
- package/components/noodles/noodles.yaml +1 -1
- package/components/option-card/option-card.css +11 -11
- package/components/otp-input/otp-input.css +1 -1
- package/components/page/page.css +2 -2
- package/components/pane/pane.css +5 -5
- package/components/password-strength/password-strength.css +1 -1
- package/components/pipeline-status/pipeline-status.css +9 -9
- package/components/popover/popover.css +2 -2
- package/components/preview/preview.css +14 -3
- package/components/progress/progress.a2ui.json +1 -1
- package/components/progress/progress.css +1 -1
- package/components/progress/progress.d.ts +1 -1
- package/components/progress/progress.yaml +1 -1
- package/components/progress-row/progress-row.css +2 -2
- package/components/radio/radio.css +4 -4
- package/components/range/range.css +2 -2
- package/components/rating/rating.css +2 -2
- package/components/richtext/richtext.class.js +4 -0
- package/components/richtext/richtext.css +5 -5
- package/components/richtext/richtext.yaml +1 -0
- package/components/row/row.css +1 -1
- package/components/select/select.css +8 -8
- package/components/skip-nav/skip-nav.a2ui.json +2 -2
- package/components/skip-nav/skip-nav.css +3 -3
- package/components/skip-nav/skip-nav.yaml +2 -2
- package/components/slider/slider.css +5 -5
- package/components/spinner/spinner.css +2 -2
- package/components/spinner/spinner.test.js +4 -2
- package/components/stat/stat.css +1 -1
- package/components/step-progress/step-progress.a2ui.json +1 -1
- package/components/step-progress/step-progress.class.js +1 -1
- package/components/step-progress/step-progress.css +2 -2
- package/components/step-progress/step-progress.d.ts +1 -1
- package/components/step-progress/step-progress.yaml +1 -1
- package/components/stepper/stepper.css +22 -22
- package/components/stream/stream.css +2 -2
- package/components/swatch/swatch.class.js +1 -1
- package/components/swatch/swatch.css +11 -11
- package/components/swiper/swiper.css +5 -5
- package/components/switch/switch.css +5 -5
- package/components/table/cell-types.js +1 -1
- package/components/table/table.css +16 -11
- package/components/table-toolbar/table-toolbar.css +8 -8
- package/components/tabs/tabs.css +5 -5
- package/components/tag/tag.css +41 -29
- package/components/tag/tag.test.js +22 -29
- package/components/tags-input/tags-input.a2ui.json +2 -2
- package/components/tags-input/tags-input.class.js +93 -20
- package/components/tags-input/tags-input.css +3 -3
- package/components/tags-input/tags-input.test.js +109 -0
- package/components/tags-input/tags-input.yaml +18 -4
- package/components/text/text.css +4 -4
- package/components/textarea/textarea.css +1 -1
- package/components/time-picker/time-picker.css +2 -2
- package/components/timeline/timeline.css +31 -31
- package/components/toast/toast.css +19 -19
- package/components/toc/toc.a2ui.json +1 -1
- package/components/toc/toc.css +3 -3
- package/components/toc/toc.yaml +1 -1
- package/components/toggle-group/toggle-group.css +3 -3
- package/components/toolbar/toolbar.css +3 -3
- package/components/tooltip/tooltip.css +9 -9
- package/components/tour/tour.css +3 -3
- package/components/tree/tree.css +2 -2
- package/components/upload/upload.css +7 -7
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/theme-provider.min.js +7 -7
- package/dist/themes.min.css +1 -1
- package/dist/themes.sheet.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +41 -41
- package/dist/web-components.sheet.js +1 -1
- package/package.json +3 -3
- package/styles/api/text.css +1 -1
- package/styles/colors/bridges/material-bridge.css +30 -0
- package/styles/colors/index.css +19 -1
- package/styles/colors/material-static.css +771 -0
- package/styles/colors/parameters.css +40 -4
- package/styles/colors/primitives-primary.css +89 -0
- package/styles/colors/primitives-secondary.css +89 -0
- package/styles/colors/primitives-tertiary.css +89 -0
- package/styles/colors/primitives.css +3 -1
- package/styles/colors/scrims.css +19 -180
- package/styles/colors/semantics/aliases.css +25 -11
- package/styles/colors/semantics/buckets.css +28 -12
- package/styles/colors/semantics/core.css +330 -202
- package/styles/colors/semantics/data-viz.css +13 -13
- package/styles/colors/semantics/features.css +31 -13
- package/styles/colors/surfaces.css +41 -31
- package/styles/themes.css +15 -15
- package/styles/colors/primitives-accent.css +0 -89
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
--calendar-picker-font-size: var(--a-ui-size);
|
|
8
8
|
--calendar-picker-label-size: var(--a-label-size);
|
|
9
9
|
--calendar-picker-label-fg: var(--a-label-color);
|
|
10
|
-
--calendar-picker-label-fg-focus: var(--
|
|
10
|
+
--calendar-picker-label-fg-focus: var(--md-sys-color-neutral-on-surface-variant);
|
|
11
11
|
|
|
12
12
|
/* Trigger */
|
|
13
13
|
--calendar-picker-trigger-height: var(--a-size);
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
/* Popover */
|
|
31
31
|
--calendar-picker-popover-bg: var(--a-bg-subtle);
|
|
32
|
-
--calendar-picker-popover-border: var(--
|
|
32
|
+
--calendar-picker-popover-border: var(--md-sys-color-neutral-outline-variant);
|
|
33
33
|
--calendar-picker-popover-radius: var(--a-radius-lg);
|
|
34
34
|
--calendar-picker-popover-shadow: var(--a-shadow-lg);
|
|
35
35
|
--calendar-picker-popover-padding: var(--a-space-2);
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
7 columns at --a-size + inter-cell breathing + popover padding both
|
|
38
38
|
sides (border-box). Matches calendar-grid-ui's width formula. */
|
|
39
39
|
--calendar-picker-popover-width: calc(7 * var(--a-size) + 6 * var(--a-space-1) + 2 * var(--a-space-2));
|
|
40
|
-
--calendar-picker-popover-fg: var(--
|
|
40
|
+
--calendar-picker-popover-fg: var(--md-sys-color-neutral-on-surface);
|
|
41
41
|
|
|
42
42
|
/* Header */
|
|
43
43
|
--calendar-picker-header-gap: var(--a-space-1);
|
|
44
44
|
--calendar-picker-header-mb: var(--a-space-2);
|
|
45
|
-
--calendar-picker-title-fg: var(--
|
|
45
|
+
--calendar-picker-title-fg: var(--md-sys-color-neutral-on-surface);
|
|
46
46
|
--calendar-picker-title-size: var(--a-ui-size);
|
|
47
47
|
--calendar-picker-title-weight: var(--a-weight-medium);
|
|
48
48
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
--calendar-picker-nav-bg: transparent;
|
|
55
55
|
--calendar-picker-nav-bg-hover: var(--a-bg-muted);
|
|
56
56
|
--calendar-picker-nav-fg: var(--a-fg-muted);
|
|
57
|
-
--calendar-picker-nav-fg-hover: var(--
|
|
57
|
+
--calendar-picker-nav-fg-hover: var(--md-sys-color-neutral-on-surface);
|
|
58
58
|
--calendar-picker-nav-icon-size: var(--a-caret-size);
|
|
59
59
|
|
|
60
60
|
/* Weekday header — row height tracks the control height (one notch
|
|
@@ -73,15 +73,15 @@
|
|
|
73
73
|
--calendar-picker-day-radius: var(--a-radius);
|
|
74
74
|
--calendar-picker-day-font-size: var(--a-ui-size);
|
|
75
75
|
--calendar-picker-day-bg: transparent;
|
|
76
|
-
--calendar-picker-day-fg: var(--
|
|
76
|
+
--calendar-picker-day-fg: var(--md-sys-color-neutral-on-surface-variant);
|
|
77
77
|
--calendar-picker-day-bg-hover: var(--a-bg-hover);
|
|
78
|
-
--calendar-picker-day-fg-hover: var(--
|
|
79
|
-
--calendar-picker-day-bg-selected-hover: var(--a-
|
|
80
|
-
--calendar-picker-day-bg-selected: var(--
|
|
81
|
-
--calendar-picker-day-fg-selected: var(--
|
|
78
|
+
--calendar-picker-day-fg-hover: var(--md-sys-color-neutral-on-surface);
|
|
79
|
+
--calendar-picker-day-bg-selected-hover: var(--a-primary-bg-hover);
|
|
80
|
+
--calendar-picker-day-bg-selected: var(--md-sys-color-primary);
|
|
81
|
+
--calendar-picker-day-fg-selected: var(--md-sys-color-primary-on-primary);
|
|
82
82
|
--calendar-picker-day-fg-outside: var(--a-fg-muted);
|
|
83
83
|
--calendar-picker-day-fg-disabled: var(--a-ui-text-disabled);
|
|
84
|
-
--calendar-picker-day-today-border: var(--
|
|
84
|
+
--calendar-picker-day-today-border: var(--md-sys-color-primary);
|
|
85
85
|
--calendar-picker-day-today-dot-size: var(--a-space-0-5);
|
|
86
86
|
--calendar-picker-day-today-dot-offset: var(--a-space-1);
|
|
87
87
|
--calendar-picker-day-grid-gap: var(--a-space-px); /* 1px hairline between cells */
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
:where(:scope) {
|
|
8
8
|
--canvas-bg: var(--a-canvas-0);
|
|
9
|
-
--canvas-fg: var(--
|
|
9
|
+
--canvas-fg: var(--md-sys-color-neutral-on-surface);
|
|
10
10
|
--canvas-font-family: var(--a-font-family);
|
|
11
11
|
--canvas-inset: var(--a-space-2);
|
|
12
|
-
--canvas-surface-bg: var(--
|
|
12
|
+
--canvas-surface-bg: var(--md-sys-color-neutral-background);
|
|
13
13
|
--canvas-surface-max: 56rem;
|
|
14
14
|
}
|
|
15
15
|
|
package/components/card/card.css
CHANGED
|
@@ -20,20 +20,20 @@
|
|
|
20
20
|
--card-description-size: var(--a-caption-size);
|
|
21
21
|
|
|
22
22
|
/* ── Colors ── */
|
|
23
|
-
--card-bg: var(--
|
|
24
|
-
--card-bg-padded: var(--
|
|
25
|
-
--card-fg: var(--
|
|
23
|
+
--card-bg: var(--md-sys-color-neutral-surface);
|
|
24
|
+
--card-bg-padded: var(--md-sys-color-neutral-scrim-weakest);
|
|
25
|
+
--card-fg: var(--md-sys-color-neutral-on-surface);
|
|
26
26
|
--card-heading-fg: var(--a-fg-strong);
|
|
27
|
-
--card-description-fg: var(--
|
|
28
|
-
--card-border: 1px solid var(--
|
|
29
|
-
--card-divider: var(--
|
|
27
|
+
--card-description-fg: var(--md-sys-color-neutral-on-surface-variant);
|
|
28
|
+
--card-border: 1px solid var(--md-sys-color-neutral-outline-variant);
|
|
29
|
+
--card-divider: var(--md-sys-color-neutral-outline-variant);
|
|
30
30
|
--card-shadow: var(--a-shadow-sm);
|
|
31
31
|
|
|
32
32
|
/* ── Loading ring ──
|
|
33
33
|
The mask composition below uses an opaque source (masks are intensity-only,
|
|
34
34
|
not theme-colored). `--a-chrome-light` is our theme-stable opaque white token.
|
|
35
35
|
The visible ring color comes from the accent token. */
|
|
36
|
-
--card-loading-ring: var(--a-
|
|
36
|
+
--card-loading-ring: var(--a-primary-bg);
|
|
37
37
|
--card-loading-mask-color: var(--a-chrome-light);
|
|
38
38
|
|
|
39
39
|
/* ── Elevation ── */
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
--card-loading-easing: linear;
|
|
48
48
|
|
|
49
49
|
/* ── Draggable ── */
|
|
50
|
-
--card-drag-bg-active: var(--
|
|
50
|
+
--card-drag-bg-active: var(--md-sys-color-primary-container);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
:scope {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
:scope[variant="outline"] {
|
|
72
72
|
--card-bg: transparent;
|
|
73
73
|
--card-shadow: none;
|
|
74
|
-
--card-border: 1px solid var(--
|
|
74
|
+
--card-border: 1px solid var(--md-sys-color-neutral-outline);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
:scope[variant="filled"] {
|
|
@@ -461,10 +461,10 @@
|
|
|
461
461
|
brightest) per nesting depth; depths past brightest cap at brightest.
|
|
462
462
|
:scope card-ui has specificity (0,1,1) which beats the
|
|
463
463
|
:where(:scope) initializer (0,0,0) in each inner scope. */
|
|
464
|
-
:scope card-ui { --card-bg: var(--
|
|
465
|
-
:scope card-ui card-ui { --card-bg: var(--
|
|
466
|
-
:scope card-ui card-ui card-ui { --card-bg: var(--
|
|
467
|
-
:scope card-ui card-ui card-ui card-ui { --card-bg: var(--
|
|
468
|
-
:scope card-ui card-ui card-ui card-ui card-ui { --card-bg: var(--
|
|
469
|
-
:scope card-ui card-ui card-ui card-ui card-ui card-ui { --card-bg: var(--
|
|
464
|
+
:scope card-ui { --card-bg: var(--md-sys-color-neutral-surface); --card-border: 1px solid var(--md-sys-color-neutral-outline); --a-radius: var(--a-radius-md); }
|
|
465
|
+
:scope card-ui card-ui { --card-bg: var(--md-sys-color-neutral-surface-bright); --a-radius: var(--a-radius-sm); }
|
|
466
|
+
:scope card-ui card-ui card-ui { --card-bg: var(--md-sys-color-neutral-surface-brighter); }
|
|
467
|
+
:scope card-ui card-ui card-ui card-ui { --card-bg: var(--md-sys-color-neutral-surface-brightest); }
|
|
468
|
+
:scope card-ui card-ui card-ui card-ui card-ui { --card-bg: var(--md-sys-color-neutral-surface-brightest); }
|
|
469
|
+
:scope card-ui card-ui card-ui card-ui card-ui card-ui { --card-bg: var(--md-sys-color-neutral-surface-brightest); }
|
|
470
470
|
}
|
|
@@ -12,26 +12,26 @@
|
|
|
12
12
|
and the chart inherits that value naturally. To register the
|
|
13
13
|
default formally (and enable transitions), add an `@property` rule
|
|
14
14
|
at `:root` in a global stylesheet. */
|
|
15
|
-
--chart-fg: var(--
|
|
16
|
-
--chart-bar: var(--
|
|
17
|
-
--chart-bar-hover: var(--a-
|
|
18
|
-
--chart-line: var(--
|
|
19
|
-
--chart-dot: var(--
|
|
20
|
-
--chart-grid: var(--
|
|
15
|
+
--chart-fg: var(--md-sys-color-neutral-on-surface);
|
|
16
|
+
--chart-bar: var(--md-sys-color-primary);
|
|
17
|
+
--chart-bar-hover: var(--a-primary-bg-hover);
|
|
18
|
+
--chart-line: var(--md-sys-color-primary);
|
|
19
|
+
--chart-dot: var(--md-sys-color-primary);
|
|
20
|
+
--chart-grid: var(--md-sys-color-neutral-outline-variant);
|
|
21
21
|
--chart-axis: var(--a-fg-muted);
|
|
22
|
-
--chart-label: var(--
|
|
23
|
-
--chart-value: var(--
|
|
24
|
-
--chart-avg: var(--
|
|
22
|
+
--chart-label: var(--md-sys-color-neutral-on-surface-variant);
|
|
23
|
+
--chart-value: var(--md-sys-color-neutral-on-surface);
|
|
24
|
+
--chart-avg: var(--md-sys-color-warning);
|
|
25
25
|
--chart-area-opacity: 0.15;
|
|
26
26
|
--chart-line-width: 2;
|
|
27
27
|
--chart-radius: 4;
|
|
28
28
|
|
|
29
29
|
/* Layout */
|
|
30
|
-
--chart-border: var(--
|
|
30
|
+
--chart-border: var(--md-sys-color-neutral-outline-variant);
|
|
31
31
|
--chart-space-sm: var(--a-space-1);
|
|
32
32
|
--chart-space-md: var(--a-space-2);
|
|
33
33
|
--chart-space-lg: var(--a-space-3);
|
|
34
|
-
--chart-dot-stroke: var(--
|
|
34
|
+
--chart-dot-stroke: var(--md-sys-color-neutral-background);
|
|
35
35
|
--chart-max-height: 28rem;
|
|
36
36
|
|
|
37
37
|
/* Legend */
|
|
@@ -457,7 +457,7 @@
|
|
|
457
457
|
produce a solid-disc render. The inline `fill="none"` attribute on the
|
|
458
458
|
SVG element loses to any CSS rule that names `fill`. */
|
|
459
459
|
circle[data-radial-track] {
|
|
460
|
-
stroke: var(--
|
|
460
|
+
stroke: var(--md-sys-color-neutral-outline-variant);
|
|
461
461
|
fill: none;
|
|
462
462
|
}
|
|
463
463
|
circle[data-radial-bar] {
|
|
@@ -478,7 +478,7 @@
|
|
|
478
478
|
/* ── Gauge ──
|
|
479
479
|
Half-donut — track is faint backing, fill reads as primary accent. */
|
|
480
480
|
:scope[type="gauge"] [data-radial-track] {
|
|
481
|
-
fill: var(--
|
|
481
|
+
fill: var(--md-sys-color-neutral-outline-variant);
|
|
482
482
|
stroke: none;
|
|
483
483
|
}
|
|
484
484
|
:scope[type="gauge"] [data-gauge-fill] {
|
|
@@ -572,7 +572,7 @@
|
|
|
572
572
|
[data-sankey-node][data-slice="9"] { fill: var(--chart-9); }
|
|
573
573
|
|
|
574
574
|
[data-sankey-link] {
|
|
575
|
-
fill: var(--
|
|
575
|
+
fill: var(--md-sys-color-neutral-on-surface-variant);
|
|
576
576
|
opacity: 0.35;
|
|
577
577
|
}
|
|
578
578
|
[data-sankey-link]:hover {
|
|
@@ -646,17 +646,17 @@
|
|
|
646
646
|
}
|
|
647
647
|
|
|
648
648
|
:scope[color="info"] {
|
|
649
|
-
--chart-bar: var(--
|
|
649
|
+
--chart-bar: var(--md-sys-color-info);
|
|
650
650
|
--chart-bar-hover: var(--a-info-bg-hover);
|
|
651
|
-
--chart-line: var(--
|
|
652
|
-
--chart-dot: var(--
|
|
651
|
+
--chart-line: var(--md-sys-color-info);
|
|
652
|
+
--chart-dot: var(--md-sys-color-info);
|
|
653
653
|
}
|
|
654
654
|
|
|
655
655
|
:scope[color="accent"] {
|
|
656
|
-
--chart-bar: var(--
|
|
657
|
-
--chart-bar-hover: var(--a-
|
|
658
|
-
--chart-line: var(--
|
|
659
|
-
--chart-dot: var(--
|
|
656
|
+
--chart-bar: var(--md-sys-color-primary);
|
|
657
|
+
--chart-bar-hover: var(--a-primary-bg-hover);
|
|
658
|
+
--chart-line: var(--md-sys-color-primary);
|
|
659
|
+
--chart-dot: var(--md-sys-color-primary);
|
|
660
660
|
}
|
|
661
661
|
|
|
662
662
|
/* ── Tooltip hit-target cursor ──
|
|
@@ -677,8 +677,8 @@
|
|
|
677
677
|
───────────────────────────────────────────────────────────────── */
|
|
678
678
|
|
|
679
679
|
.chart-tooltip-popup {
|
|
680
|
-
--chart-tooltip-bg: var(--
|
|
681
|
-
--chart-tooltip-fg: var(--
|
|
680
|
+
--chart-tooltip-bg: var(--md-sys-color-neutral-on-surface);
|
|
681
|
+
--chart-tooltip-fg: var(--md-sys-color-neutral-background);
|
|
682
682
|
--chart-tooltip-px: var(--a-space-2-5);
|
|
683
683
|
--chart-tooltip-py: var(--a-space-1-5);
|
|
684
684
|
--chart-tooltip-radius: var(--a-radius-sm);
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
|
|
13
13
|
/* ── Typography ── */
|
|
14
14
|
--chart-legend-font-size: var(--a-ui-tiny);
|
|
15
|
-
--chart-legend-fg: var(--
|
|
15
|
+
--chart-legend-fg: var(--md-sys-color-neutral-on-surface-variant);
|
|
16
16
|
--chart-legend-fg-inactive: var(--a-fg-muted);
|
|
17
17
|
|
|
18
18
|
/* ── Interaction ── */
|
|
19
19
|
--chart-legend-row-radius: var(--a-radius-sm);
|
|
20
20
|
--chart-legend-row-hover: var(--a-canvas-2);
|
|
21
|
-
--chart-legend-row-fg-hover: var(--
|
|
21
|
+
--chart-legend-row-fg-hover: var(--md-sys-color-neutral-on-surface);
|
|
22
22
|
|
|
23
23
|
/* ── Focus ── */
|
|
24
24
|
--chart-legend-focus-ring: var(--a-focus-ring);
|
|
@@ -34,9 +34,9 @@ chat-input-ui textarea-ui:not([disabled]) [slot="text"]:hover {
|
|
|
34
34
|
hover / focus / disabled / placeholder treatments inside this
|
|
35
35
|
@scope and re-paints them with these tokens. */
|
|
36
36
|
--chat-input-bg: var(--a-canvas-0);
|
|
37
|
-
--chat-input-fg: var(--
|
|
38
|
-
--chat-input-border: var(--
|
|
39
|
-
--chat-input-caret-color: var(--
|
|
37
|
+
--chat-input-fg: var(--md-sys-color-neutral-on-surface);
|
|
38
|
+
--chat-input-border: var(--md-sys-color-neutral-outline-variant);
|
|
39
|
+
--chat-input-caret-color: var(--md-sys-color-neutral-on-surface-variant);
|
|
40
40
|
--chat-input-placeholder-fg: var(--a-ui-text-placeholder);
|
|
41
41
|
|
|
42
42
|
/* Hover — matches input-ui's affordance (subtle alpha lift on the
|
|
@@ -54,7 +54,7 @@ chat-input-ui textarea-ui:not([disabled]) [slot="text"]:hover {
|
|
|
54
54
|
owned here so the inner textarea-ui's `--a-ui-text-disabled` doesn't
|
|
55
55
|
leak through. */
|
|
56
56
|
--chat-input-bg-disabled: transparent;
|
|
57
|
-
--chat-input-border-disabled: var(--
|
|
57
|
+
--chat-input-border-disabled: var(--md-sys-color-neutral-outline-variant);
|
|
58
58
|
--chat-input-fg-disabled: var(--a-ui-text-disabled);
|
|
59
59
|
|
|
60
60
|
/* Canonical focus ring — chat-input is a *nested-control host*.
|
|
@@ -69,7 +69,7 @@ chat-input-ui textarea-ui:not([disabled]) [slot="text"]:hover {
|
|
|
69
69
|
/* ── Image preview ── */
|
|
70
70
|
--chat-input-image-size: 3rem; /* 48px at d=1 */
|
|
71
71
|
--chat-input-image-radius: var(--a-radius-sm);
|
|
72
|
-
--chat-input-image-border: var(--
|
|
72
|
+
--chat-input-image-border: var(--md-sys-color-neutral-outline-variant);
|
|
73
73
|
--chat-input-preview-gap: var(--a-space-2);
|
|
74
74
|
--chat-input-preview-py: var(--a-space-2);
|
|
75
75
|
|
|
@@ -77,7 +77,7 @@ chat-input-ui textarea-ui:not([disabled]) [slot="text"]:hover {
|
|
|
77
77
|
--chat-input-remove-size: var(--a-space-4);
|
|
78
78
|
--chat-input-remove-offset: var(--a-space-1);
|
|
79
79
|
--chat-input-remove-bg: var(--a-fg-muted);
|
|
80
|
-
--chat-input-remove-fg: var(--
|
|
80
|
+
--chat-input-remove-fg: var(--md-sys-color-neutral-background);
|
|
81
81
|
--chat-input-remove-font: var(--a-ui-tiny);
|
|
82
82
|
|
|
83
83
|
/* ── Transition ── */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
@scope (chat-thread-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Layout ── */
|
|
4
|
-
--chat-border-color: var(--
|
|
4
|
+
--chat-border-color: var(--md-sys-color-neutral-outline-variant);
|
|
5
5
|
--chat-radius: var(--a-radius-lg);
|
|
6
|
-
--chat-bg: var(--
|
|
6
|
+
--chat-bg: var(--md-sys-color-neutral-background);
|
|
7
7
|
--chat-gap: var(--a-space-2);
|
|
8
8
|
--chat-padding-y: var(--a-space-3);
|
|
9
9
|
--chat-padding-x: var(--a-space-4);
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
--chat-header-avatar-size: var(--a-size-md);
|
|
20
20
|
--chat-header-avatar-radius: var(--a-radius-full);
|
|
21
21
|
--chat-header-avatar-bg: var(--a-bg-muted);
|
|
22
|
-
--chat-header-avatar-fg: var(--
|
|
22
|
+
--chat-header-avatar-fg: var(--md-sys-color-neutral-on-surface-variant);
|
|
23
23
|
|
|
24
24
|
/* ── Message avatar ── */
|
|
25
25
|
--chat-msg-avatar-radius: var(--a-radius-full);
|
|
26
26
|
--chat-msg-avatar-bg: var(--a-bg-muted);
|
|
27
|
-
--chat-msg-avatar-fg: var(--
|
|
27
|
+
--chat-msg-avatar-fg: var(--md-sys-color-neutral-on-surface-variant);
|
|
28
28
|
|
|
29
29
|
/* ── Bubble ── */
|
|
30
30
|
--chat-bubble-padding-y: var(--a-space-2);
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
--chat-bubble-tail-radius: var(--a-radius-sm);
|
|
34
34
|
|
|
35
35
|
/* ── Bubble: user ── */
|
|
36
|
-
--chat-user-bg: var(--
|
|
37
|
-
--chat-user-fg: var(--
|
|
36
|
+
--chat-user-bg: var(--md-sys-color-primary);
|
|
37
|
+
--chat-user-fg: var(--md-sys-color-primary-on-primary);
|
|
38
38
|
|
|
39
39
|
/* ── Bubble: assistant ── */
|
|
40
40
|
--chat-assistant-bg: var(--a-bg-subtle);
|
|
41
|
-
--chat-assistant-fg: var(--
|
|
41
|
+
--chat-assistant-fg: var(--md-sys-color-neutral-on-surface);
|
|
42
42
|
|
|
43
43
|
/* ── Typography ── */
|
|
44
44
|
--chat-header-avatar-size-font: var(--a-ui-md);
|
|
@@ -41,7 +41,7 @@ check-ui[indeterminate] {
|
|
|
41
41
|
/* ── State: default ── */
|
|
42
42
|
--check-bg: var(--a-ui-bg);
|
|
43
43
|
--check-border: var(--a-ui-border);
|
|
44
|
-
--check-border-hover: var(--
|
|
44
|
+
--check-border-hover: var(--md-sys-color-neutral-on-surface-variant);
|
|
45
45
|
|
|
46
46
|
/* ── Transitions ── */
|
|
47
47
|
--check-duration: var(--a-duration-fast);
|
|
@@ -54,10 +54,10 @@ check-ui[indeterminate] {
|
|
|
54
54
|
--check-bg-hover: var(--a-bg-muted);
|
|
55
55
|
|
|
56
56
|
/* ── State: checked ── */
|
|
57
|
-
--check-bg-checked: var(--
|
|
58
|
-
--check-border-checked: var(--
|
|
57
|
+
--check-bg-checked: var(--md-sys-color-primary);
|
|
58
|
+
--check-border-checked: var(--md-sys-color-primary);
|
|
59
59
|
--check-fg-checked: var(--a-chrome-light);
|
|
60
|
-
--check-bg-checked-hover: var(--
|
|
60
|
+
--check-bg-checked-hover: var(--md-sys-color-primary-hover);
|
|
61
61
|
|
|
62
62
|
/* ── State: disabled ── */
|
|
63
63
|
--check-fg-disabled: var(--a-ui-text-disabled);
|
|
@@ -38,7 +38,7 @@ import { tags as t } from '@lezer/highlight';
|
|
|
38
38
|
|
|
39
39
|
export const adiaBaseTheme = EditorView.theme({
|
|
40
40
|
'&': { fontFamily: 'inherit', fontSize: 'inherit', color: 'inherit', backgroundColor: 'transparent' },
|
|
41
|
-
'.cm-content': {
|
|
41
|
+
'.cm-content': { caretColor: 'inherit' },
|
|
42
42
|
'.cm-focused': { outline: 'none' },
|
|
43
43
|
});
|
|
44
44
|
|
package/components/code/code.css
CHANGED
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
--code-lint-marker-w: 3px; /* Vertical lint-marker rule; intrinsic measurement; no --a-space-* equivalent at this width. */
|
|
11
11
|
|
|
12
12
|
/* ── Colors ── */
|
|
13
|
-
--code-bg: var(--
|
|
14
|
-
--code-fg: var(--
|
|
15
|
-
--code-border: var(--
|
|
13
|
+
--code-bg: var(--md-sys-color-neutral-background);
|
|
14
|
+
--code-fg: var(--md-sys-color-neutral-on-surface);
|
|
15
|
+
--code-border: var(--md-sys-color-neutral-outline-variant);
|
|
16
16
|
--code-header-bg: var(--a-bg-scrim);
|
|
17
17
|
--code-header-fg: var(--a-fg-muted);
|
|
18
18
|
--code-copy-hover-bg: var(--a-bg-muted);
|
|
19
|
-
--code-copy-hover-fg: var(--
|
|
19
|
+
--code-copy-hover-fg: var(--md-sys-color-neutral-on-surface);
|
|
20
20
|
|
|
21
21
|
/* ── Typography ── */
|
|
22
22
|
--code-font: var(--a-font-family-code);
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
/* Transparency-mixing in oklab — Safari < 18 has an OKLCH bug where
|
|
37
37
|
the transparent operand's hue resolves to 0, red-shifting the mix.
|
|
38
38
|
oklab is hue-agnostic and visually identical in fixed engines. */
|
|
39
|
-
--code-active-line-bg: color-mix(in oklab, var(--
|
|
40
|
-
--code-selection-bg: color-mix(in oklab, var(--
|
|
41
|
-
--code-selection-match: color-mix(in oklab, var(--
|
|
42
|
-
--code-cursor: var(--a-
|
|
39
|
+
--code-active-line-bg: color-mix(in oklab, var(--md-sys-color-primary-container) 40%, transparent);
|
|
40
|
+
--code-selection-bg: color-mix(in oklab, var(--md-sys-color-primary-container) 60%, transparent);
|
|
41
|
+
--code-selection-match: color-mix(in oklab, var(--md-sys-color-primary-container) 30%, transparent);
|
|
42
|
+
--code-cursor: var(--a-primary-strong);
|
|
43
43
|
--code-focus-ring: var(--a-focus-ring);
|
|
44
44
|
|
|
45
45
|
/* ── Syntax highlight tokens ──
|
|
@@ -47,18 +47,18 @@
|
|
|
47
47
|
tokens. Overridable per-instance by setting `--code-tok-*` on
|
|
48
48
|
any ancestor. See docs/specs/code-editor.md §6.3 for the tag →
|
|
49
49
|
class → role map. */
|
|
50
|
-
--code-tok-comment: var(--
|
|
51
|
-
--code-tok-keyword: var(--a-
|
|
50
|
+
--code-tok-comment: var(--md-sys-color-neutral-on-surface-variant);
|
|
51
|
+
--code-tok-keyword: var(--a-primary-strong);
|
|
52
52
|
--code-tok-string: var(--a-success-strong);
|
|
53
53
|
--code-tok-number: var(--a-info-strong);
|
|
54
54
|
--code-tok-boolean: var(--a-info-strong);
|
|
55
|
-
--code-tok-operator: var(--
|
|
55
|
+
--code-tok-operator: var(--md-sys-color-neutral-on-surface);
|
|
56
56
|
--code-tok-punctuation: var(--a-fg-muted);
|
|
57
57
|
--code-tok-function: var(--a-brand-strong);
|
|
58
|
-
--code-tok-variable: var(--
|
|
58
|
+
--code-tok-variable: var(--md-sys-color-neutral-on-surface);
|
|
59
59
|
--code-tok-type: var(--a-warning-strong);
|
|
60
|
-
--code-tok-property: var(--
|
|
61
|
-
--code-tok-tag: var(--a-
|
|
60
|
+
--code-tok-property: var(--md-sys-color-neutral-on-surface);
|
|
61
|
+
--code-tok-tag: var(--a-primary-strong);
|
|
62
62
|
--code-tok-attribute: var(--a-warning-strong);
|
|
63
63
|
--code-tok-url: var(--a-info-strong);
|
|
64
64
|
--code-tok-invalid: var(--a-danger-strong);
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
--code-lint-warning: var(--a-warning-strong);
|
|
73
73
|
--code-lint-info: var(--a-info-strong);
|
|
74
74
|
--code-lint-tooltip-bg: var(--a-bg-strong); /* §230-bundle (v0.5.9): elevated panel surface. Was orphaned --a-surface-floating. */
|
|
75
|
-
--code-lint-tooltip-fg: var(--
|
|
76
|
-
--code-lint-tooltip-border: var(--
|
|
75
|
+
--code-lint-tooltip-fg: var(--md-sys-color-neutral-on-surface);
|
|
76
|
+
--code-lint-tooltip-border: var(--md-sys-color-neutral-outline-variant);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/* ── Block (default) ── */
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
column-gap: var(--a-space-3);
|
|
179
179
|
}
|
|
180
180
|
& > pre > code[data-line-state-mode] [data-line-num] {
|
|
181
|
-
color: var(--
|
|
181
|
+
color: var(--md-sys-color-neutral-on-surface-variant);
|
|
182
182
|
text-align: end;
|
|
183
183
|
user-select: none;
|
|
184
184
|
min-width: 1.5ch;
|
|
@@ -191,10 +191,10 @@
|
|
|
191
191
|
content: " ";
|
|
192
192
|
}
|
|
193
193
|
& > pre > code [data-line-state="added"] {
|
|
194
|
-
background: var(--
|
|
194
|
+
background: var(--md-sys-color-success-container);
|
|
195
195
|
}
|
|
196
196
|
& > pre > code [data-line-state="removed"] {
|
|
197
|
-
background: var(--
|
|
197
|
+
background: var(--md-sys-color-danger-container);
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
/* Footer — optional chrome band below the code block
|
|
@@ -285,8 +285,19 @@
|
|
|
285
285
|
|
|
286
286
|
Selector discipline: `.cm-*` classes are CodeMirror's; `.tok-*`
|
|
287
287
|
classes come from our `adiaHighlightStyle` (see core/_cm-theme.js).
|
|
288
|
-
|
|
289
|
-
|
|
288
|
+
TKT-0019 correction: this file is imported into `layer(components)`
|
|
289
|
+
(styles/index.css) — per the cascade-layer architecture, ANY
|
|
290
|
+
unlayered rule beats ANY layered rule regardless of specificity or
|
|
291
|
+
load order, and CM's runtime-injected `<style>` is unlayered by
|
|
292
|
+
construction (third-party DOM we don't control). Most `.cm-*`
|
|
293
|
+
overrides below don't collide with a CM default (color/font/etc.
|
|
294
|
+
are inherit/transparent in CM's own base styles), so they "just
|
|
295
|
+
work" without needing to fight this — but `.cm-content`'s padding
|
|
296
|
+
does collide (CM ships a non-zero default), and needed `!important`
|
|
297
|
+
to actually win; see that rule's own comment. This is the sanctioned
|
|
298
|
+
escape hatch for exactly this case (cascade-layer-architecture.md:
|
|
299
|
+
"!important … beat … third-party DOM injected outside our layers"),
|
|
300
|
+
not a specificity workaround. */
|
|
290
301
|
|
|
291
302
|
& > [data-cm-mount] {
|
|
292
303
|
display: block;
|
|
@@ -312,8 +323,20 @@
|
|
|
312
323
|
padding: 0;
|
|
313
324
|
}
|
|
314
325
|
|
|
326
|
+
/* padding: !important — TKT-0019. CM6 ships its own non-zero
|
|
327
|
+
`.cm-content` default padding (4px 0), injected as an unlayered
|
|
328
|
+
runtime `<style>` tag; this file lives in `layer(components)`, and
|
|
329
|
+
unlayered rules beat ANY layered rule regardless of specificity —
|
|
330
|
+
a plain `:scope .cm-content` selector (even a more specific one)
|
|
331
|
+
can never win here, only `!important` can (a layered `!important`
|
|
332
|
+
outranks an unlayered normal declaration). Confirmed empirically:
|
|
333
|
+
bumping selector specificity alone left the padding at CM's 4px 0
|
|
334
|
+
default. Kept as the sole padding source (code-editor.js's
|
|
335
|
+
`adiaBaseTheme` intentionally sets no padding — see its own
|
|
336
|
+
"structural only" comment) so `--code-py`/`--code-px` stays the one
|
|
337
|
+
token pair driving both the header and this content. */
|
|
315
338
|
:scope .cm-content {
|
|
316
|
-
padding: var(--code-py) var(--code-px);
|
|
339
|
+
padding: var(--code-py) var(--code-px) !important;
|
|
317
340
|
caret-color: var(--code-cursor);
|
|
318
341
|
}
|
|
319
342
|
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
--color-picker-thumb-shadow: 0 0 0 1px var(--a-chrome-ring-subtle), 0 2px 4px var(--a-chrome-shadow-soft);
|
|
12
12
|
--color-picker-font: var(--a-font-family-code);
|
|
13
13
|
--color-picker-font-size: var(--a-ui-sm);
|
|
14
|
-
--color-picker-fg: var(--
|
|
14
|
+
--color-picker-fg: var(--md-sys-color-neutral-on-surface);
|
|
15
15
|
--color-picker-label-fg: var(--a-fg-muted);
|
|
16
|
-
--color-picker-border: var(--
|
|
16
|
+
--color-picker-border: var(--md-sys-color-neutral-outline-variant);
|
|
17
17
|
--color-picker-output-bg: var(--a-bg-muted);
|
|
18
18
|
--color-picker-output-radius: var(--a-radius-sm);
|
|
19
19
|
--color-picker-fg-disabled: var(--a-ui-text-disabled);
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
--color-picker-pad-sm: var(--a-space-2);
|
|
24
24
|
|
|
25
25
|
/* ── Interactive ── */
|
|
26
|
-
--color-picker-focus-color: var(--
|
|
27
|
-
--color-picker-disabled-border: var(--
|
|
26
|
+
--color-picker-focus-color: var(--md-sys-color-primary);
|
|
27
|
+
--color-picker-disabled-border: var(--md-sys-color-neutral-outline-variant);
|
|
28
28
|
|
|
29
29
|
/* ── Transitions ── */
|
|
30
30
|
--color-picker-duration: var(--a-duration-fast);
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
--combobox-easing: var(--a-easing);
|
|
32
32
|
|
|
33
33
|
/* ── Popover ── */
|
|
34
|
-
--combobox-popover-bg: var(--
|
|
34
|
+
--combobox-popover-bg: var(--md-sys-color-neutral-surface-bright);
|
|
35
35
|
--combobox-popover-border: var(--a-ui-border);
|
|
36
36
|
--combobox-popover-radius: var(--a-radius);
|
|
37
37
|
--combobox-popover-shadow: var(--a-shadow-lg);
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
--combobox-option-fg-selected: var(--a-ui-text-selected);
|
|
46
46
|
|
|
47
47
|
/* ── Match highlight ── */
|
|
48
|
-
--combobox-match-bg: var(--
|
|
49
|
-
--combobox-match-fg: var(--a-
|
|
48
|
+
--combobox-match-bg: var(--md-sys-color-primary-container);
|
|
49
|
+
--combobox-match-fg: var(--a-primary-strong);
|
|
50
50
|
|
|
51
51
|
text-align: start; /* §text-align-reset — block ancestor centering */
|
|
52
52
|
}
|
|
@@ -194,7 +194,7 @@ combobox-ui [data-listbox] {
|
|
|
194
194
|
padding: var(--a-space-1);
|
|
195
195
|
border: 1px solid var(--a-ui-border);
|
|
196
196
|
border-radius: var(--a-radius);
|
|
197
|
-
background: var(--
|
|
197
|
+
background: var(--md-sys-color-neutral-surface-bright);
|
|
198
198
|
box-shadow: var(--a-shadow-lg);
|
|
199
199
|
/* --combobox-list-max-block is set inline by #applyVisibleCap() when the
|
|
200
200
|
rendered options exceed [max-visible-items] (default 10) — the menu hugs
|
|
@@ -259,8 +259,8 @@ combobox-ui [data-listbox] [role="option"] mark {
|
|
|
259
259
|
/* Consume the :where(:scope) match tokens (custom props inherit through the
|
|
260
260
|
DOM even though the popover paints in the top layer); raw-token fallbacks
|
|
261
261
|
keep the highlight alive if the host tokens are unavailable. */
|
|
262
|
-
background: var(--combobox-match-bg, var(--
|
|
263
|
-
color: var(--combobox-match-fg, var(--a-
|
|
262
|
+
background: var(--combobox-match-bg, var(--md-sys-color-primary-container));
|
|
263
|
+
color: var(--combobox-match-fg, var(--a-primary-strong));
|
|
264
264
|
padding: 0 0.1em;
|
|
265
265
|
border-radius: var(--a-radius-sm);
|
|
266
266
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { UIElement } from '../../core/element.js';
|
|
15
|
+
import { logicalSlotted } from '../../core/logical-children.js';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* <command-ui> — Searchable command palette.
|
|
@@ -56,6 +57,7 @@ export class UICommand extends UIElement {
|
|
|
56
57
|
#footerEl = null;
|
|
57
58
|
#bound = false;
|
|
58
59
|
#itemByEl = new WeakMap();
|
|
60
|
+
#emptyNodes = [];
|
|
59
61
|
|
|
60
62
|
static #RECENTS_MAX = 3;
|
|
61
63
|
|
|
@@ -83,8 +85,11 @@ export class UICommand extends UIElement {
|
|
|
83
85
|
render() {
|
|
84
86
|
// Stamp internal structure once
|
|
85
87
|
if (!this.#inputEl) {
|
|
86
|
-
// Parse options
|
|
88
|
+
// Parse options + capture author-provided slot="empty" content
|
|
89
|
+
// before replacing innerHTML (dogfood-status yaml-drift finding:
|
|
90
|
+
// yaml documented an overridable empty state that was never wired).
|
|
87
91
|
this.#parseOptions();
|
|
92
|
+
this.#emptyNodes = logicalSlotted(this, 'empty');
|
|
88
93
|
|
|
89
94
|
this.innerHTML = `
|
|
90
95
|
<header>
|
|
@@ -244,11 +249,17 @@ export class UICommand extends UIElement {
|
|
|
244
249
|
}
|
|
245
250
|
}
|
|
246
251
|
|
|
247
|
-
// Empty state
|
|
252
|
+
// Empty state — author-provided slot="empty" content wins over the
|
|
253
|
+
// default text (moves the same captured node references each time;
|
|
254
|
+
// safe since a node not currently attached is simply re-appended).
|
|
248
255
|
if (!visibleCount) {
|
|
249
256
|
const empty = document.createElement('div');
|
|
250
257
|
empty.setAttribute('data-empty', '');
|
|
251
|
-
|
|
258
|
+
if (this.#emptyNodes.length) {
|
|
259
|
+
empty.append(...this.#emptyNodes);
|
|
260
|
+
} else {
|
|
261
|
+
empty.textContent = 'No results found.';
|
|
262
|
+
}
|
|
252
263
|
this.#listEl.appendChild(empty);
|
|
253
264
|
}
|
|
254
265
|
|