@adia-ai/web-components 0.4.5 → 0.4.7
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/README.md +63 -24
- package/USAGE.md +604 -0
- package/components/accordion/accordion.d.ts +17 -0
- package/components/accordion/accordion.js +10 -117
- package/components/accordion/class.js +132 -0
- package/components/action-list/action-list.d.ts +15 -0
- package/components/action-list/action-list.js +9 -140
- package/components/action-list/class.js +156 -0
- package/components/agent-artifact/agent-artifact.d.ts +25 -0
- package/components/agent-artifact/agent-artifact.js +8 -181
- package/components/agent-artifact/class.js +200 -0
- package/components/agent-feedback-bar/agent-feedback-bar.d.ts +21 -0
- package/components/agent-feedback-bar/agent-feedback-bar.js +8 -143
- package/components/agent-feedback-bar/class.js +162 -0
- package/components/agent-questions/agent-questions.d.ts +23 -0
- package/components/agent-questions/agent-questions.js +8 -180
- package/components/agent-questions/class.js +199 -0
- package/components/agent-reasoning/agent-reasoning.d.ts +23 -0
- package/components/agent-reasoning/agent-reasoning.js +8 -494
- package/components/agent-reasoning/class.js +513 -0
- package/components/agent-suggestions/agent-suggestions.d.ts +21 -0
- package/components/agent-suggestions/agent-suggestions.js +8 -78
- package/components/agent-suggestions/class.js +97 -0
- package/components/agent-trace/agent-trace.d.ts +19 -0
- package/components/alert/alert.d.ts +29 -0
- package/components/alert/alert.js +8 -175
- package/components/alert/class.js +194 -0
- package/components/avatar/avatar.d.ts +27 -0
- package/components/avatar/avatar.js +9 -159
- package/components/avatar/class.js +173 -0
- package/components/badge/badge.d.ts +27 -0
- package/components/badge/badge.js +9 -75
- package/components/badge/class.js +93 -0
- package/components/block/block.d.ts +19 -0
- package/components/block/block.js +9 -15
- package/components/block/class.js +33 -0
- package/components/breadcrumb/breadcrumb.d.ts +23 -0
- package/components/breadcrumb/breadcrumb.js +8 -113
- package/components/breadcrumb/class.js +132 -0
- package/components/button/button.d.ts +34 -0
- package/components/button/button.js +15 -66
- package/components/button/class.js +80 -0
- package/components/calendar-picker/calendar-picker.a2ui.json +6 -1
- package/components/calendar-picker/calendar-picker.d.ts +27 -0
- package/components/calendar-picker/calendar-picker.js +8 -332
- package/components/calendar-picker/calendar-picker.yaml +51 -177
- package/components/calendar-picker/class.js +351 -0
- package/components/canvas/canvas.a2ui.json +6 -1
- package/components/canvas/canvas.d.ts +17 -0
- package/components/canvas/canvas.yaml +19 -36
- package/components/card/card.a2ui.json +3 -0
- package/components/card/card.d.ts +27 -0
- package/components/card/card.js +9 -50
- package/components/card/card.yaml +171 -433
- package/components/card/class.js +68 -0
- package/components/chart/chart.d.ts +41 -0
- package/components/chart/chart.js +8 -2131
- package/components/chart/class.js +2150 -0
- package/components/chart-legend/chart-legend.d.ts +27 -0
- package/components/chart-legend/chart-legend.js +8 -197
- package/components/chart-legend/class.js +215 -0
- package/components/chat-thread/chat-thread.d.ts +17 -0
- package/components/chat-thread/chat-thread.js +8 -157
- package/components/chat-thread/class.js +176 -0
- package/components/check/check.d.ts +30 -0
- package/components/check/check.js +11 -52
- package/components/check/class.js +68 -0
- package/components/code/class.js +501 -0
- package/components/code/code.d.ts +39 -0
- package/components/code/code.js +8 -482
- package/components/col/class.js +30 -0
- package/components/col/col.d.ts +23 -0
- package/components/col/col.js +10 -13
- package/components/color-picker/class.js +550 -0
- package/components/color-picker/color-picker.d.ts +37 -0
- package/components/color-picker/color-picker.js +8 -531
- package/components/command/class.js +364 -0
- package/components/command/command.a2ui.json +3 -0
- package/components/command/command.d.ts +19 -0
- package/components/command/command.js +8 -345
- package/components/command/command.yaml +105 -124
- package/components/demo-toggle/class.js +153 -0
- package/components/demo-toggle/demo-toggle.d.ts +23 -0
- package/components/demo-toggle/demo-toggle.js +8 -135
- package/components/description-list/class.js +86 -0
- package/components/description-list/description-list.d.ts +21 -0
- package/components/description-list/description-list.js +8 -67
- package/components/divider/class.js +57 -0
- package/components/divider/divider.d.ts +19 -0
- package/components/divider/divider.js +10 -40
- package/components/drawer/class.js +306 -0
- package/components/drawer/drawer.d.ts +25 -0
- package/components/drawer/drawer.js +8 -287
- package/components/embed/class.js +73 -0
- package/components/embed/embed.d.ts +23 -0
- package/components/embed/embed.js +9 -55
- package/components/empty-state/class.js +108 -0
- package/components/empty-state/empty-state.d.ts +21 -0
- package/components/empty-state/empty-state.js +9 -90
- package/components/feed/class.js +381 -0
- package/components/feed/feed.d.ts +19 -0
- package/components/feed/feed.js +9 -367
- package/components/field/class.js +266 -0
- package/components/field/field.d.ts +23 -0
- package/components/field/field.js +8 -247
- package/components/fields/class.js +106 -0
- package/components/fields/fields.d.ts +19 -0
- package/components/fields/fields.js +8 -87
- package/components/grid/class.js +31 -0
- package/components/grid/grid.d.ts +23 -0
- package/components/grid/grid.js +10 -14
- package/components/heatmap/class.js +305 -0
- package/components/heatmap/heatmap.d.ts +31 -0
- package/components/heatmap/heatmap.js +8 -286
- package/components/icon/class.js +54 -0
- package/components/icon/icon.d.ts +23 -0
- package/components/icon/icon.js +13 -40
- package/components/image/class.js +112 -0
- package/components/image/image.d.ts +33 -0
- package/components/image/image.js +9 -94
- package/components/index.js +1 -0
- package/components/input/class.js +773 -0
- package/components/input/input.a2ui.json +3 -0
- package/components/input/input.d.ts +61 -0
- package/components/input/input.js +8 -755
- package/components/input/input.yaml +171 -442
- package/components/inspector/class.js +142 -0
- package/components/inspector/inspector.a2ui.json +8 -1
- package/components/inspector/inspector.d.ts +17 -0
- package/components/inspector/inspector.js +8 -124
- package/components/inspector/inspector.yaml +15 -30
- package/components/kbd/class.js +34 -0
- package/components/kbd/kbd.a2ui.json +3 -0
- package/components/kbd/kbd.d.ts +17 -0
- package/components/kbd/kbd.js +10 -17
- package/components/kbd/kbd.yaml +54 -185
- package/components/link/class.js +187 -0
- package/components/link/link.d.ts +55 -0
- package/components/link/link.js +8 -168
- package/components/list/class.js +249 -0
- package/components/list/list.d.ts +23 -0
- package/components/list/list.js +9 -231
- package/components/menu/class.js +332 -0
- package/components/menu/menu.d.ts +21 -0
- package/components/menu/menu.js +11 -316
- package/components/modal/class.js +231 -0
- package/components/modal/modal.a2ui.json +5 -1
- package/components/modal/modal.d.ts +23 -0
- package/components/modal/modal.js +8 -212
- package/components/modal/modal.yaml +19 -39
- package/components/nav/class.js +150 -0
- package/components/nav/nav.d.ts +31 -0
- package/components/nav/nav.js +8 -131
- package/components/nav-group/class.js +152 -0
- package/components/nav-group/nav-group.d.ts +35 -0
- package/components/nav-group/nav-group.js +9 -134
- package/components/nav-item/class.js +86 -0
- package/components/nav-item/nav-item.d.ts +37 -0
- package/components/nav-item/nav-item.js +10 -69
- package/components/noodles/class.js +510 -0
- package/components/noodles/noodles.d.ts +33 -0
- package/components/noodles/noodles.js +9 -493
- package/components/option-card/class.js +167 -0
- package/components/option-card/option-card.d.ts +30 -0
- package/components/option-card/option-card.js +8 -149
- package/components/otp-input/class.js +180 -0
- package/components/otp-input/otp-input.a2ui.json +5 -1
- package/components/otp-input/otp-input.d.ts +25 -0
- package/components/otp-input/otp-input.js +9 -162
- package/components/otp-input/otp-input.yaml +45 -174
- package/components/page/class.js +97 -0
- package/components/page/page.d.ts +46 -0
- package/components/page/page.js +8 -79
- package/components/pagination/class.js +195 -0
- package/components/pagination/pagination.d.ts +23 -0
- package/components/pagination/pagination.js +9 -177
- package/components/pane/class.js +186 -0
- package/components/pane/pane.a2ui.json +12 -1
- package/components/pane/pane.css +10 -0
- package/components/pane/pane.d.ts +31 -0
- package/components/pane/pane.js +8 -143
- package/components/pane/pane.yaml +57 -157
- package/components/pipeline-status/class.js +189 -0
- package/components/pipeline-status/pipeline-status.a2ui.json +7 -1
- package/components/pipeline-status/pipeline-status.d.ts +21 -0
- package/components/pipeline-status/pipeline-status.js +9 -172
- package/components/pipeline-status/pipeline-status.yaml +34 -72
- package/components/popover/class.js +194 -0
- package/components/popover/popover.d.ts +23 -0
- package/components/popover/popover.js +9 -176
- package/components/progress/class.js +74 -0
- package/components/progress/progress.a2ui.json +3 -0
- package/components/progress/progress.d.ts +19 -0
- package/components/progress/progress.js +10 -57
- package/components/progress/progress.yaml +124 -287
- package/components/progress-row/class.js +110 -0
- package/components/progress-row/progress-row.d.ts +23 -0
- package/components/progress-row/progress-row.js +8 -92
- package/components/radio/class.js +83 -0
- package/components/radio/radio.d.ts +28 -0
- package/components/radio/radio.js +11 -67
- package/components/range/class.js +194 -0
- package/components/range/range.d.ts +31 -0
- package/components/range/range.js +9 -176
- package/components/rating/class.js +148 -0
- package/components/rating/rating.d.ts +33 -0
- package/components/rating/rating.js +9 -130
- package/components/richtext/class.js +87 -0
- package/components/richtext/richtext.a2ui.json +7 -1
- package/components/richtext/richtext.d.ts +19 -0
- package/components/richtext/richtext.js +8 -68
- package/components/richtext/richtext.yaml +30 -65
- package/components/row/class.js +50 -0
- package/components/row/row.d.ts +27 -0
- package/components/row/row.js +10 -33
- package/components/search/class.js +134 -0
- package/components/search/search.d.ts +35 -0
- package/components/search/search.js +10 -117
- package/components/segment/class.js +62 -0
- package/components/segment/segment.d.ts +25 -0
- package/components/segment/segment.js +10 -45
- package/components/segmented/class.js +165 -0
- package/components/segmented/segmented.a2ui.json +4 -0
- package/components/segmented/segmented.d.ts +24 -0
- package/components/segmented/segmented.js +10 -148
- package/components/segmented/segmented.yaml +41 -59
- package/components/select/class.js +408 -0
- package/components/select/select.d.ts +57 -0
- package/components/select/select.js +15 -396
- package/components/skeleton/class.js +52 -0
- package/components/skeleton/skeleton.d.ts +23 -0
- package/components/skeleton/skeleton.js +8 -34
- package/components/slider/class.js +184 -0
- package/components/slider/slider.d.ts +31 -0
- package/components/slider/slider.js +9 -166
- package/components/stack/class.js +28 -0
- package/components/stack/stack.d.ts +17 -0
- package/components/stack/stack.js +10 -11
- package/components/step-progress/class.js +98 -0
- package/components/step-progress/step-progress.d.ts +27 -0
- package/components/step-progress/step-progress.js +8 -79
- package/components/stepper/class.js +126 -0
- package/components/stepper/stepper.d.ts +19 -0
- package/components/stepper/stepper.js +9 -112
- package/components/stream/class.js +109 -0
- package/components/stream/stream.d.ts +19 -0
- package/components/stream/stream.js +8 -90
- package/components/swatch/class.js +131 -0
- package/components/swatch/swatch.d.ts +28 -0
- package/components/swatch/swatch.js +8 -112
- package/components/swiper/class.js +373 -0
- package/components/swiper/swiper.a2ui.json +4 -0
- package/components/swiper/swiper.d.ts +31 -0
- package/components/swiper/swiper.js +8 -354
- package/components/swiper/swiper.yaml +68 -212
- package/components/switch/class.js +63 -0
- package/components/switch/switch.a2ui.json +6 -1
- package/components/switch/switch.d.ts +30 -0
- package/components/switch/switch.js +11 -47
- package/components/switch/switch.yaml +70 -265
- package/components/table/class.js +1453 -0
- package/components/table/table.d.ts +37 -0
- package/components/table/table.js +8 -1435
- package/components/table-toolbar/class.js +680 -0
- package/components/table-toolbar/table-toolbar.d.ts +33 -0
- package/components/table-toolbar/table-toolbar.js +8 -689
- package/components/tabs/class.js +242 -0
- package/components/tabs/tabs.d.ts +21 -0
- package/components/tabs/tabs.js +8 -223
- package/components/tag/class.js +99 -0
- package/components/tag/tag.d.ts +27 -0
- package/components/tag/tag.js +8 -80
- package/components/text/class.js +46 -0
- package/components/text/text.d.ts +25 -0
- package/components/text/text.js +9 -28
- package/components/textarea/class.js +134 -0
- package/components/textarea/textarea.d.ts +31 -0
- package/components/textarea/textarea.js +11 -118
- package/components/timeline/class.js +176 -0
- package/components/timeline/timeline.d.ts +19 -0
- package/components/timeline/timeline.js +9 -162
- package/components/toast/class.js +92 -0
- package/components/toast/toast.d.ts +23 -0
- package/components/toast/toast.js +9 -76
- package/components/toggle-group/class.js +154 -0
- package/components/toggle-group/toggle-group.d.ts +19 -0
- package/components/toggle-group/toggle-group.js +11 -140
- package/components/toggle-scheme/class.js +286 -0
- package/components/toggle-scheme/toggle-scheme.a2ui.json +197 -0
- package/components/toggle-scheme/toggle-scheme.css +20 -0
- package/components/toggle-scheme/toggle-scheme.d.ts +41 -0
- package/components/toggle-scheme/toggle-scheme.js +17 -0
- package/components/toggle-scheme/toggle-scheme.yaml +173 -0
- package/components/toolbar/class.js +388 -0
- package/components/toolbar/toolbar.d.ts +23 -0
- package/components/toolbar/toolbar.js +10 -376
- package/components/tooltip/class.js +299 -0
- package/components/tooltip/tooltip.d.ts +27 -0
- package/components/tooltip/tooltip.js +8 -280
- package/components/tree/class.js +245 -0
- package/components/tree/tree.d.ts +15 -0
- package/components/tree/tree.js +9 -244
- package/components/upload/class.js +199 -0
- package/components/upload/upload.d.ts +27 -0
- package/components/upload/upload.js +11 -183
- package/core/element.d.ts +174 -0
- package/core/form.d.ts +108 -0
- package/core/index.d.ts +11 -0
- package/core/index.js +1 -0
- package/core/register.d.ts +25 -0
- package/core/register.js +58 -0
- package/core/signals.d.ts +94 -0
- package/core/template.d.ts +70 -0
- package/index.d.ts +315 -0
- package/package.json +25 -6
- package/traits/CATEGORIES.md +1 -1
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-side-effect class export for `<timeline-ui>` (+ co-located primitives).
|
|
3
|
+
*
|
|
4
|
+
* Importing this file gives you the class(es) without auto-registering the tag.
|
|
5
|
+
* Useful for test isolation, subclassing with tag-name override, or selective
|
|
6
|
+
* composition.
|
|
7
|
+
*
|
|
8
|
+
* The auto-register path stays at `@adia-ai/web-components/components/timeline`
|
|
9
|
+
* (which imports this file + calls `defineIfFree()`).
|
|
10
|
+
*
|
|
11
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* <timeline-ui> — Vertical (or horizontal) event / progress log.
|
|
16
|
+
*
|
|
17
|
+
* Each <timeline-item-ui> is one entry, with its own state via the `status`
|
|
18
|
+
* enum (idle | active | completed | error), optional icon, duration, and an
|
|
19
|
+
* expandable outcomes list. `[spinner]` is an orthogonal presentation hint
|
|
20
|
+
* that animates the dot as a ring when combined with `status="active"`.
|
|
21
|
+
*
|
|
22
|
+
* <timeline-ui>
|
|
23
|
+
* <timeline-item-ui text="Shipped" time="2h ago" status="completed"></timeline-item-ui>
|
|
24
|
+
* <timeline-item-ui text="Delivery" time="now" status="active" spinner></timeline-item-ui>
|
|
25
|
+
* <timeline-item-ui text="Received"></timeline-item-ui>
|
|
26
|
+
* </timeline-ui>
|
|
27
|
+
*
|
|
28
|
+
* For agent reasoning / pipeline views, set size="sm" and use
|
|
29
|
+
* duration, outcomes, spinner, status="error"
|
|
30
|
+
*
|
|
31
|
+
* <timeline-ui size="sm">
|
|
32
|
+
* <timeline-item-ui text="search" duration="850ms" status="completed"></timeline-item-ui>
|
|
33
|
+
* <timeline-item-ui text="generate" status="active" spinner></timeline-item-ui>
|
|
34
|
+
* </timeline-ui>
|
|
35
|
+
*
|
|
36
|
+
* For wizard / numbered-circle patterns, use the dedicated <stepper-ui>.
|
|
37
|
+
*
|
|
38
|
+
* Attributes (container):
|
|
39
|
+
* orientation — vertical (default) | horizontal
|
|
40
|
+
* size — md (default) | sm
|
|
41
|
+
*
|
|
42
|
+
* Attributes (item):
|
|
43
|
+
* text — primary label
|
|
44
|
+
* description — secondary text (optional)
|
|
45
|
+
* time — right-aligned timestamp (optional; mutually exclusive with duration)
|
|
46
|
+
* duration — right-aligned duration label (e.g. "850ms", "2s"); also set when live=true
|
|
47
|
+
* icon — icon-ui name (replaces the dot when set)
|
|
48
|
+
* variant — default | success | accent | warning | danger (colors the dot/icon)
|
|
49
|
+
* completed — boolean; renders "done" state
|
|
50
|
+
* active — boolean; renders "active" state
|
|
51
|
+
* error — boolean; renders "error" state (red dot)
|
|
52
|
+
* spinner — boolean; spinning dot while active
|
|
53
|
+
*
|
|
54
|
+
* JS (item):
|
|
55
|
+
* .outcomes = string[] // renders an expandable sub-list under the row
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
import { UIElement } from '../../core/element.js';
|
|
59
|
+
|
|
60
|
+
// ── Container ──────────────────────────────────────────────────
|
|
61
|
+
|
|
62
|
+
export class UITimeline extends UIElement {
|
|
63
|
+
static properties = {
|
|
64
|
+
orientation: { type: String, default: 'vertical', reflect: true },
|
|
65
|
+
size: { type: String, default: 'md', reflect: true },
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
static template = () => null;
|
|
69
|
+
|
|
70
|
+
render() {
|
|
71
|
+
const items = [...this.querySelectorAll(':scope > timeline-item-ui')];
|
|
72
|
+
for (const item of items) item.removeAttribute('data-last');
|
|
73
|
+
const last = items[items.length - 1];
|
|
74
|
+
if (last) last.setAttribute('data-last', '');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export class UITimelineItem extends UIElement {
|
|
79
|
+
static properties = {
|
|
80
|
+
text: { type: String, default: '', reflect: true },
|
|
81
|
+
description: { type: String, default: '', reflect: true },
|
|
82
|
+
time: { type: String, default: '', reflect: true },
|
|
83
|
+
duration: { type: String, default: '', reflect: true },
|
|
84
|
+
icon: { type: String, default: '', reflect: true },
|
|
85
|
+
variant: { type: String, default: 'default', reflect: true },
|
|
86
|
+
status: { type: String, default: 'idle', reflect: true },
|
|
87
|
+
spinner: { type: Boolean, default: false, reflect: true },
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
static template = () => null;
|
|
91
|
+
|
|
92
|
+
#outcomes = [];
|
|
93
|
+
#expanded = false;
|
|
94
|
+
|
|
95
|
+
get outcomes() { return this.#outcomes; }
|
|
96
|
+
set outcomes(v) {
|
|
97
|
+
this.#outcomes = Array.isArray(v) ? v.slice() : [];
|
|
98
|
+
this.render();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
connected() {
|
|
102
|
+
if (!this.querySelector(':scope > [slot="label"]')) {
|
|
103
|
+
// Author provided just text/time — stamp the default slot structure
|
|
104
|
+
this.innerHTML = `
|
|
105
|
+
<span slot="label"></span>
|
|
106
|
+
<span slot="description"></span>
|
|
107
|
+
<span slot="time"></span>
|
|
108
|
+
`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
render() {
|
|
113
|
+
const label = this.querySelector(':scope > [slot="label"]');
|
|
114
|
+
const desc = this.querySelector(':scope > [slot="description"]');
|
|
115
|
+
const time = this.querySelector(':scope > [slot="time"]');
|
|
116
|
+
if (label) label.textContent = this.text;
|
|
117
|
+
if (desc) desc.textContent = this.description;
|
|
118
|
+
if (time) time.textContent = this.duration || this.time;
|
|
119
|
+
|
|
120
|
+
if (this.icon) {
|
|
121
|
+
let iconEl = this.querySelector(':scope > [slot="icon"]');
|
|
122
|
+
if (!iconEl) {
|
|
123
|
+
iconEl = document.createElement('icon-ui');
|
|
124
|
+
iconEl.setAttribute('slot', 'icon');
|
|
125
|
+
this.prepend(iconEl);
|
|
126
|
+
}
|
|
127
|
+
iconEl.setAttribute('name', this.icon);
|
|
128
|
+
} else {
|
|
129
|
+
this.querySelector(':scope > [slot="icon"]')?.remove();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Outcomes sub-list + toggle chevron
|
|
133
|
+
let body = this.querySelector(':scope > [slot="outcomes"]');
|
|
134
|
+
if (this.#outcomes.length > 0) {
|
|
135
|
+
if (!body) {
|
|
136
|
+
body = document.createElement('ul');
|
|
137
|
+
body.setAttribute('slot', 'outcomes');
|
|
138
|
+
this.appendChild(body);
|
|
139
|
+
}
|
|
140
|
+
body.innerHTML = '';
|
|
141
|
+
for (const o of this.#outcomes) {
|
|
142
|
+
const li = document.createElement('li');
|
|
143
|
+
li.textContent = o;
|
|
144
|
+
body.appendChild(li);
|
|
145
|
+
}
|
|
146
|
+
body.hidden = !this.#expanded;
|
|
147
|
+
|
|
148
|
+
// Toggle chevron lives on the row — we stamp a button once
|
|
149
|
+
let toggle = this.querySelector(':scope > [data-timeline-toggle]');
|
|
150
|
+
if (!toggle) {
|
|
151
|
+
toggle = document.createElement('button');
|
|
152
|
+
toggle.type = 'button';
|
|
153
|
+
toggle.setAttribute('data-timeline-toggle', '');
|
|
154
|
+
toggle.setAttribute('aria-label', 'Toggle details');
|
|
155
|
+
toggle.addEventListener('click', (e) => {
|
|
156
|
+
e.stopPropagation();
|
|
157
|
+
this.#expanded = !this.#expanded;
|
|
158
|
+
this.render();
|
|
159
|
+
this.dispatchEvent(new CustomEvent('timeline-toggle', {
|
|
160
|
+
bubbles: true, detail: { expanded: this.#expanded },
|
|
161
|
+
}));
|
|
162
|
+
});
|
|
163
|
+
this.appendChild(toggle);
|
|
164
|
+
}
|
|
165
|
+
toggle.innerHTML = '';
|
|
166
|
+
const caret = document.createElement('icon-ui');
|
|
167
|
+
caret.setAttribute('name', this.#expanded ? 'caret-down' : 'caret-right');
|
|
168
|
+
caret.setAttribute('color', 'muted');
|
|
169
|
+
caret.setAttribute('size', 'sm');
|
|
170
|
+
toggle.appendChild(caret);
|
|
171
|
+
} else {
|
|
172
|
+
this.querySelector(':scope > [data-timeline-toggle]')?.remove();
|
|
173
|
+
body?.remove();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<timeline-ui>` — Timeline and step wizard. Two modes: timeline (per-item state) and steps (parent-driven).
|
|
3
|
+
*
|
|
4
|
+
* @see https://ui-kit.exe.xyz/site/components/timeline
|
|
5
|
+
*
|
|
6
|
+
* Type declarations generated by scripts/build/dts-codegen.mjs from
|
|
7
|
+
* the component's `.a2ui.json` sidecar. Edit the source `.yaml`,
|
|
8
|
+
* run `npm run components`, then `npm run codegen:dts` to regenerate;
|
|
9
|
+
* or hand-author this file fully if rich event types are needed.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { UIElement } from '../../core/element.js';
|
|
13
|
+
|
|
14
|
+
export class UITimeline extends UIElement {
|
|
15
|
+
/** Layout direction */
|
|
16
|
+
orientation: 'vertical' | 'horizontal';
|
|
17
|
+
/** Rail size preset — use `sm` for agent-reasoning/pipeline views; `md` is the default. */
|
|
18
|
+
size: 'sm' | 'md';
|
|
19
|
+
}
|
|
@@ -1,171 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* `<timeline-ui>` — auto-registers the tag on import.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* expandable outcomes list. `[spinner]` is an orthogonal presentation hint
|
|
7
|
-
* that animates the dot as a ring when combined with `status="active"`.
|
|
4
|
+
* For non-side-effect class import (test isolation, tag override), use
|
|
5
|
+
* the `class` subpath:
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
* <timeline-item-ui text="Shipped" time="2h ago" status="completed"></timeline-item-ui>
|
|
11
|
-
* <timeline-item-ui text="Delivery" time="now" status="active" spinner></timeline-item-ui>
|
|
12
|
-
* <timeline-item-ui text="Received"></timeline-item-ui>
|
|
13
|
-
* </timeline-ui>
|
|
7
|
+
* import { UITimeline, UITimelineItem } from '@adia-ai/web-components/components/timeline/class';
|
|
14
8
|
*
|
|
15
|
-
*
|
|
16
|
-
* duration, outcomes, spinner, status="error"
|
|
17
|
-
*
|
|
18
|
-
* <timeline-ui size="sm">
|
|
19
|
-
* <timeline-item-ui text="search" duration="850ms" status="completed"></timeline-item-ui>
|
|
20
|
-
* <timeline-item-ui text="generate" status="active" spinner></timeline-item-ui>
|
|
21
|
-
* </timeline-ui>
|
|
22
|
-
*
|
|
23
|
-
* For wizard / numbered-circle patterns, use the dedicated <stepper-ui>.
|
|
24
|
-
*
|
|
25
|
-
* Attributes (container):
|
|
26
|
-
* orientation — vertical (default) | horizontal
|
|
27
|
-
* size — md (default) | sm
|
|
28
|
-
*
|
|
29
|
-
* Attributes (item):
|
|
30
|
-
* text — primary label
|
|
31
|
-
* description — secondary text (optional)
|
|
32
|
-
* time — right-aligned timestamp (optional; mutually exclusive with duration)
|
|
33
|
-
* duration — right-aligned duration label (e.g. "850ms", "2s"); also set when live=true
|
|
34
|
-
* icon — icon-ui name (replaces the dot when set)
|
|
35
|
-
* variant — default | success | accent | warning | danger (colors the dot/icon)
|
|
36
|
-
* completed — boolean; renders "done" state
|
|
37
|
-
* active — boolean; renders "active" state
|
|
38
|
-
* error — boolean; renders "error" state (red dot)
|
|
39
|
-
* spinner — boolean; spinning dot while active
|
|
40
|
-
*
|
|
41
|
-
* JS (item):
|
|
42
|
-
* .outcomes = string[] // renders an expandable sub-list under the row
|
|
9
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
43
10
|
*/
|
|
44
11
|
|
|
45
|
-
import {
|
|
46
|
-
|
|
47
|
-
// ── Container ──────────────────────────────────────────────────
|
|
48
|
-
|
|
49
|
-
class UITimeline extends UIElement {
|
|
50
|
-
static properties = {
|
|
51
|
-
orientation: { type: String, default: 'vertical', reflect: true },
|
|
52
|
-
size: { type: String, default: 'md', reflect: true },
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
static template = () => null;
|
|
56
|
-
|
|
57
|
-
render() {
|
|
58
|
-
const items = [...this.querySelectorAll(':scope > timeline-item-ui')];
|
|
59
|
-
for (const item of items) item.removeAttribute('data-last');
|
|
60
|
-
const last = items[items.length - 1];
|
|
61
|
-
if (last) last.setAttribute('data-last', '');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
customElements.define('timeline-ui', UITimeline);
|
|
66
|
-
|
|
67
|
-
// ── Item ───────────────────────────────────────────────────────
|
|
68
|
-
|
|
69
|
-
class UITimelineItem extends UIElement {
|
|
70
|
-
static properties = {
|
|
71
|
-
text: { type: String, default: '', reflect: true },
|
|
72
|
-
description: { type: String, default: '', reflect: true },
|
|
73
|
-
time: { type: String, default: '', reflect: true },
|
|
74
|
-
duration: { type: String, default: '', reflect: true },
|
|
75
|
-
icon: { type: String, default: '', reflect: true },
|
|
76
|
-
variant: { type: String, default: 'default', reflect: true },
|
|
77
|
-
status: { type: String, default: 'idle', reflect: true },
|
|
78
|
-
spinner: { type: Boolean, default: false, reflect: true },
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
static template = () => null;
|
|
82
|
-
|
|
83
|
-
#outcomes = [];
|
|
84
|
-
#expanded = false;
|
|
85
|
-
|
|
86
|
-
get outcomes() { return this.#outcomes; }
|
|
87
|
-
set outcomes(v) {
|
|
88
|
-
this.#outcomes = Array.isArray(v) ? v.slice() : [];
|
|
89
|
-
this.render();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
connected() {
|
|
93
|
-
if (!this.querySelector(':scope > [slot="label"]')) {
|
|
94
|
-
// Author provided just text/time — stamp the default slot structure
|
|
95
|
-
this.innerHTML = `
|
|
96
|
-
<span slot="label"></span>
|
|
97
|
-
<span slot="description"></span>
|
|
98
|
-
<span slot="time"></span>
|
|
99
|
-
`;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
render() {
|
|
104
|
-
const label = this.querySelector(':scope > [slot="label"]');
|
|
105
|
-
const desc = this.querySelector(':scope > [slot="description"]');
|
|
106
|
-
const time = this.querySelector(':scope > [slot="time"]');
|
|
107
|
-
if (label) label.textContent = this.text;
|
|
108
|
-
if (desc) desc.textContent = this.description;
|
|
109
|
-
if (time) time.textContent = this.duration || this.time;
|
|
110
|
-
|
|
111
|
-
if (this.icon) {
|
|
112
|
-
let iconEl = this.querySelector(':scope > [slot="icon"]');
|
|
113
|
-
if (!iconEl) {
|
|
114
|
-
iconEl = document.createElement('icon-ui');
|
|
115
|
-
iconEl.setAttribute('slot', 'icon');
|
|
116
|
-
this.prepend(iconEl);
|
|
117
|
-
}
|
|
118
|
-
iconEl.setAttribute('name', this.icon);
|
|
119
|
-
} else {
|
|
120
|
-
this.querySelector(':scope > [slot="icon"]')?.remove();
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Outcomes sub-list + toggle chevron
|
|
124
|
-
let body = this.querySelector(':scope > [slot="outcomes"]');
|
|
125
|
-
if (this.#outcomes.length > 0) {
|
|
126
|
-
if (!body) {
|
|
127
|
-
body = document.createElement('ul');
|
|
128
|
-
body.setAttribute('slot', 'outcomes');
|
|
129
|
-
this.appendChild(body);
|
|
130
|
-
}
|
|
131
|
-
body.innerHTML = '';
|
|
132
|
-
for (const o of this.#outcomes) {
|
|
133
|
-
const li = document.createElement('li');
|
|
134
|
-
li.textContent = o;
|
|
135
|
-
body.appendChild(li);
|
|
136
|
-
}
|
|
137
|
-
body.hidden = !this.#expanded;
|
|
138
|
-
|
|
139
|
-
// Toggle chevron lives on the row — we stamp a button once
|
|
140
|
-
let toggle = this.querySelector(':scope > [data-timeline-toggle]');
|
|
141
|
-
if (!toggle) {
|
|
142
|
-
toggle = document.createElement('button');
|
|
143
|
-
toggle.type = 'button';
|
|
144
|
-
toggle.setAttribute('data-timeline-toggle', '');
|
|
145
|
-
toggle.setAttribute('aria-label', 'Toggle details');
|
|
146
|
-
toggle.addEventListener('click', (e) => {
|
|
147
|
-
e.stopPropagation();
|
|
148
|
-
this.#expanded = !this.#expanded;
|
|
149
|
-
this.render();
|
|
150
|
-
this.dispatchEvent(new CustomEvent('timeline-toggle', {
|
|
151
|
-
bubbles: true, detail: { expanded: this.#expanded },
|
|
152
|
-
}));
|
|
153
|
-
});
|
|
154
|
-
this.appendChild(toggle);
|
|
155
|
-
}
|
|
156
|
-
toggle.innerHTML = '';
|
|
157
|
-
const caret = document.createElement('icon-ui');
|
|
158
|
-
caret.setAttribute('name', this.#expanded ? 'caret-down' : 'caret-right');
|
|
159
|
-
caret.setAttribute('color', 'muted');
|
|
160
|
-
caret.setAttribute('size', 'sm');
|
|
161
|
-
toggle.appendChild(caret);
|
|
162
|
-
} else {
|
|
163
|
-
this.querySelector(':scope > [data-timeline-toggle]')?.remove();
|
|
164
|
-
body?.remove();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
12
|
+
import { defineIfFree } from '../../core/register.js';
|
|
13
|
+
import { UITimeline, UITimelineItem } from './class.js';
|
|
168
14
|
|
|
169
|
-
|
|
15
|
+
defineIfFree('timeline-ui', UITimeline);
|
|
16
|
+
defineIfFree('timeline-item-ui', UITimelineItem);
|
|
170
17
|
|
|
171
18
|
export { UITimeline, UITimelineItem };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-side-effect class export for `<toast-ui>`.
|
|
3
|
+
*
|
|
4
|
+
* Importing this file gives you the class(es) without auto-registering the tag.
|
|
5
|
+
* Useful for test isolation, subclassing with tag-name override, or selective
|
|
6
|
+
* composition.
|
|
7
|
+
*
|
|
8
|
+
* The auto-register path stays at `@adia-ai/web-components/components/toast`
|
|
9
|
+
* (which imports this file + calls `defineIfFree()`).
|
|
10
|
+
*
|
|
11
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* <toast-ui> — Thin facade over `<feed-ui>` / `UIFeed.post()`.
|
|
16
|
+
*
|
|
17
|
+
* Phase 4 of `docs/specs/feed-channel.md` (SPEC-FEED-CHANNEL-001) —
|
|
18
|
+
* toast-ui no longer owns its own per-position container. Both
|
|
19
|
+
* declarative `<toast-ui>` and imperative `UIToast.show()` paths
|
|
20
|
+
* route through `UIFeed`. The element exists for back-compat:
|
|
21
|
+
* authoring `<toast-ui text="…">` still produces a feed item.
|
|
22
|
+
*
|
|
23
|
+
* // Imperative API (delegates to UIFeed.post)
|
|
24
|
+
* UIToast.show({ text: 'Saved!', variant: 'success' });
|
|
25
|
+
*
|
|
26
|
+
* // Global event channel — same shape, same delegation.
|
|
27
|
+
* window.dispatchEvent(new CustomEvent('toast', {
|
|
28
|
+
* detail: { text: 'Saved!', variant: 'success' }
|
|
29
|
+
* }));
|
|
30
|
+
*
|
|
31
|
+
* // Declarative — auto-posts and removes self on connect.
|
|
32
|
+
* <toast-ui text="Saved!" variant="success"></toast-ui>
|
|
33
|
+
*
|
|
34
|
+
* The legacy `[data-toast-container]` per-position-Map plumbing was
|
|
35
|
+
* retired in this migration; the lane infrastructure now lives in
|
|
36
|
+
* `<feed-ui>` (see ../feed/feed.js).
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
import { UIElement, html } from '../../core/element.js';
|
|
40
|
+
import { UIFeed } from '../feed/feed.js';
|
|
41
|
+
|
|
42
|
+
export class UIToast extends UIElement {
|
|
43
|
+
static properties = {
|
|
44
|
+
text: { type: String, default: '', reflect: true },
|
|
45
|
+
variant: { type: String, default: 'info', reflect: true },
|
|
46
|
+
duration: { type: Number, default: 4000, reflect: true },
|
|
47
|
+
position: { type: String, default: 'bottom-right', reflect: true },
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
static template = () => html``;
|
|
51
|
+
|
|
52
|
+
connected() {
|
|
53
|
+
/* Declarative path: post into UIFeed and remove self. The
|
|
54
|
+
element is fire-and-forget — its only job is to forward the
|
|
55
|
+
authored attributes to the feed, then dissolve. Re-entrant
|
|
56
|
+
guard keeps this safe under HMR / dev-mode re-attachment. */
|
|
57
|
+
if (this.__routedToFeed) return;
|
|
58
|
+
this.__routedToFeed = true;
|
|
59
|
+
UIFeed.post({
|
|
60
|
+
text: this.text,
|
|
61
|
+
variant: this.variant === 'error' ? 'danger' : this.variant,
|
|
62
|
+
duration: this.duration,
|
|
63
|
+
position: this.position,
|
|
64
|
+
});
|
|
65
|
+
/* Schedule removal so the calling code can read the attributes
|
|
66
|
+
if it inspected this element on the same microtask. */
|
|
67
|
+
queueMicrotask(() => { try { this.remove(); } catch { /* noop */ } });
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Static facade — delegates to UIFeed.post(). Kept for back-compat
|
|
72
|
+
* with consumer code shaped like `customElements.get('toast-ui').show(...)`
|
|
73
|
+
* or `UIToast.show(...)`. New code should call UIFeed.post()
|
|
74
|
+
* directly.
|
|
75
|
+
*
|
|
76
|
+
* @param {Object} opts
|
|
77
|
+
* @param {string} opts.text
|
|
78
|
+
* @param {string} [opts.variant='info'] — `error` aliases to `danger`.
|
|
79
|
+
* @param {number} [opts.duration=4000]
|
|
80
|
+
* @param {string} [opts.position='bottom-right']
|
|
81
|
+
* @returns {{id:string|null, dismiss:function, update:function}} FeedHandle.
|
|
82
|
+
*/
|
|
83
|
+
static show(opts = {}) {
|
|
84
|
+
const { text, variant = 'info', duration = 4000, position = 'bottom-right' } = opts;
|
|
85
|
+
return UIFeed.post({
|
|
86
|
+
text,
|
|
87
|
+
variant: variant === 'error' ? 'danger' : variant,
|
|
88
|
+
duration,
|
|
89
|
+
position,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<toast-ui>` — Notification popup with auto-dismiss. Animated enter/exit.
|
|
3
|
+
*
|
|
4
|
+
* @see https://ui-kit.exe.xyz/site/components/toast
|
|
5
|
+
*
|
|
6
|
+
* Type declarations generated by scripts/build/dts-codegen.mjs from
|
|
7
|
+
* the component's `.a2ui.json` sidecar. Edit the source `.yaml`,
|
|
8
|
+
* run `npm run components`, then `npm run codegen:dts` to regenerate;
|
|
9
|
+
* or hand-author this file fully if rich event types are needed.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { UIElement } from '../../core/element.js';
|
|
13
|
+
|
|
14
|
+
export class UIToast extends UIElement {
|
|
15
|
+
/** Auto-dismiss time in milliseconds. 0 disables auto-dismiss. */
|
|
16
|
+
duration: number;
|
|
17
|
+
/** Screen position */
|
|
18
|
+
position: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
19
|
+
/** Toast message text */
|
|
20
|
+
text: string;
|
|
21
|
+
/** Semantic variant — `default | info | success | warning | danger`. `primary` and `muted` are style hints; canonical "neutral but interesting" tone is `info`. */
|
|
22
|
+
variant: 'default' | 'info' | 'success' | 'warning' | 'danger' | 'primary' | 'muted' | 'neutral';
|
|
23
|
+
}
|
|
@@ -1,88 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* `<toast-ui>` — auto-registers the tag on import.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* declarative `<toast-ui>` and imperative `UIToast.show()` paths
|
|
7
|
-
* route through `UIFeed`. The element exists for back-compat:
|
|
8
|
-
* authoring `<toast-ui text="…">` still produces a feed item.
|
|
4
|
+
* For non-side-effect class import (test isolation, tag override), use
|
|
5
|
+
* the `class` subpath:
|
|
9
6
|
*
|
|
10
|
-
*
|
|
11
|
-
* UIToast.show({ text: 'Saved!', variant: 'success' });
|
|
7
|
+
* import { UIToast } from '@adia-ai/web-components/components/toast/class';
|
|
12
8
|
*
|
|
13
|
-
*
|
|
14
|
-
* window.dispatchEvent(new CustomEvent('toast', {
|
|
15
|
-
* detail: { text: 'Saved!', variant: 'success' }
|
|
16
|
-
* }));
|
|
17
|
-
*
|
|
18
|
-
* // Declarative — auto-posts and removes self on connect.
|
|
19
|
-
* <toast-ui text="Saved!" variant="success"></toast-ui>
|
|
20
|
-
*
|
|
21
|
-
* The legacy `[data-toast-container]` per-position-Map plumbing was
|
|
22
|
-
* retired in this migration; the lane infrastructure now lives in
|
|
23
|
-
* `<feed-ui>` (see ../feed/feed.js).
|
|
9
|
+
* @see ../../USAGE.md#registration--auto-vs-explicit
|
|
24
10
|
*/
|
|
25
11
|
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
class UIToast extends UIElement {
|
|
30
|
-
static properties = {
|
|
31
|
-
text: { type: String, default: '', reflect: true },
|
|
32
|
-
variant: { type: String, default: 'info', reflect: true },
|
|
33
|
-
duration: { type: Number, default: 4000, reflect: true },
|
|
34
|
-
position: { type: String, default: 'bottom-right', reflect: true },
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
static template = () => html``;
|
|
12
|
+
import { defineIfFree } from '../../core/register.js';
|
|
13
|
+
import { UIToast } from './class.js';
|
|
38
14
|
|
|
39
|
-
|
|
40
|
-
/* Declarative path: post into UIFeed and remove self. The
|
|
41
|
-
element is fire-and-forget — its only job is to forward the
|
|
42
|
-
authored attributes to the feed, then dissolve. Re-entrant
|
|
43
|
-
guard keeps this safe under HMR / dev-mode re-attachment. */
|
|
44
|
-
if (this.__routedToFeed) return;
|
|
45
|
-
this.__routedToFeed = true;
|
|
46
|
-
UIFeed.post({
|
|
47
|
-
text: this.text,
|
|
48
|
-
variant: this.variant === 'error' ? 'danger' : this.variant,
|
|
49
|
-
duration: this.duration,
|
|
50
|
-
position: this.position,
|
|
51
|
-
});
|
|
52
|
-
/* Schedule removal so the calling code can read the attributes
|
|
53
|
-
if it inspected this element on the same microtask. */
|
|
54
|
-
queueMicrotask(() => { try { this.remove(); } catch { /* noop */ } });
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Static facade — delegates to UIFeed.post(). Kept for back-compat
|
|
59
|
-
* with consumer code shaped like `customElements.get('toast-ui').show(...)`
|
|
60
|
-
* or `UIToast.show(...)`. New code should call UIFeed.post()
|
|
61
|
-
* directly.
|
|
62
|
-
*
|
|
63
|
-
* @param {Object} opts
|
|
64
|
-
* @param {string} opts.text
|
|
65
|
-
* @param {string} [opts.variant='info'] — `error` aliases to `danger`.
|
|
66
|
-
* @param {number} [opts.duration=4000]
|
|
67
|
-
* @param {string} [opts.position='bottom-right']
|
|
68
|
-
* @returns {{id:string|null, dismiss:function, update:function}} FeedHandle.
|
|
69
|
-
*/
|
|
70
|
-
static show(opts = {}) {
|
|
71
|
-
const { text, variant = 'info', duration = 4000, position = 'bottom-right' } = opts;
|
|
72
|
-
return UIFeed.post({
|
|
73
|
-
text,
|
|
74
|
-
variant: variant === 'error' ? 'danger' : variant,
|
|
75
|
-
duration,
|
|
76
|
-
position,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
15
|
+
defineIfFree('toast-ui', UIToast);
|
|
80
16
|
|
|
81
17
|
/* Idempotent install of the global 'toast' CustomEvent listener.
|
|
82
18
|
Same shape as the historical channel — code that posts via
|
|
83
19
|
`window.dispatchEvent(new CustomEvent('toast', {detail:{…}}))`
|
|
84
|
-
keeps working.
|
|
85
|
-
delegates to UIFeed.post(). */
|
|
20
|
+
keeps working. Delegates to UIToast.show() → UIFeed.post(). */
|
|
86
21
|
if (typeof window !== 'undefined' && !window.__adiaToastListenerInstalled) {
|
|
87
22
|
window.__adiaToastListenerInstalled = true;
|
|
88
23
|
window.addEventListener('toast', (e) => {
|
|
@@ -90,6 +25,4 @@ if (typeof window !== 'undefined' && !window.__adiaToastListenerInstalled) {
|
|
|
90
25
|
});
|
|
91
26
|
}
|
|
92
27
|
|
|
93
|
-
customElements.define('toast-ui', UIToast);
|
|
94
|
-
|
|
95
28
|
export { UIToast };
|