@adia-ai/web-modules 0.8.35 → 0.8.37
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 +22 -0
- package/README.md +3 -3
- package/agent-admin/admin-roster/admin-roster.js +1 -1
- package/agent-admin/admin-settings/admin-settings.js +1 -1
- package/agent-admin/agent-admin/agent-admin.js +1 -1
- package/billing/billing-overview/billing-overview.a2ui.json +281 -0
- package/billing/billing-overview/billing-overview.class.js +838 -0
- package/billing/billing-overview/billing-overview.css +223 -0
- package/billing/billing-overview/billing-overview.js +16 -0
- package/billing/billing-overview/billing-overview.yaml +441 -0
- package/billing/index.js +21 -0
- package/billing/invoice-detail/invoice-detail.a2ui.json +276 -0
- package/billing/invoice-detail/invoice-detail.class.js +711 -0
- package/billing/invoice-detail/invoice-detail.css +305 -0
- package/billing/invoice-detail/invoice-detail.js +16 -0
- package/billing/invoice-detail/invoice-detail.yaml +411 -0
- package/billing/invoice-history/invoice-history.a2ui.json +315 -0
- package/billing/invoice-history/invoice-history.class.js +672 -0
- package/billing/invoice-history/invoice-history.css +130 -0
- package/billing/invoice-history/invoice-history.js +16 -0
- package/billing/invoice-history/invoice-history.yaml +398 -0
- package/billing/payment-method-form/payment-method-form.a2ui.json +310 -0
- package/billing/payment-method-form/payment-method-form.class.js +886 -0
- package/billing/payment-method-form/payment-method-form.css +149 -0
- package/billing/payment-method-form/payment-method-form.js +16 -0
- package/billing/payment-method-form/payment-method-form.yaml +430 -0
- package/billing/payment-method-list/payment-method-list.a2ui.json +283 -0
- package/billing/payment-method-list/payment-method-list.class.js +705 -0
- package/billing/payment-method-list/payment-method-list.css +128 -0
- package/billing/payment-method-list/payment-method-list.js +16 -0
- package/billing/payment-method-list/payment-method-list.yaml +355 -0
- package/billing/plan-picker/plan-picker.a2ui.json +349 -0
- package/billing/plan-picker/plan-picker.class.js +635 -0
- package/billing/plan-picker/plan-picker.css +227 -0
- package/billing/plan-picker/plan-picker.js +16 -0
- package/billing/plan-picker/plan-picker.yaml +453 -0
- package/chat/README.md +1 -1
- package/chat/chat-composer/chat-composer.js +2 -2
- package/chat/chat-empty/chat-empty.js +2 -2
- package/chat/chat-shell/chat-shell.js +4 -4
- package/chat/chat-sidebar/chat-sidebar.js +2 -2
- package/chat/chat-surfaces/chat-surfaces.js +2 -2
- package/chat/chat-thread/chat-thread.js +2 -2
- package/dashboard/dashboard-layout/dashboard-layout.a2ui.json +254 -0
- package/dashboard/dashboard-layout/dashboard-layout.css +190 -0
- package/dashboard/dashboard-layout/dashboard-layout.js +289 -0
- package/dashboard/dashboard-layout/dashboard-layout.yaml +374 -0
- package/dashboard/date-range-selector/date-range-selector.a2ui.json +236 -0
- package/dashboard/date-range-selector/date-range-selector.css +84 -0
- package/dashboard/date-range-selector/date-range-selector.js +686 -0
- package/dashboard/date-range-selector/date-range-selector.yaml +358 -0
- package/dashboard/index.js +14 -0
- package/dist/everything.min.js +1 -1
- package/editor/editor-canvas/editor-canvas.js +2 -2
- package/editor/editor-shell/editor-shell.js +2 -2
- package/editor/editor-sidebar/editor-sidebar.js +2 -2
- package/editor/editor-toolbar/editor-toolbar.js +2 -2
- package/feedback/confirm-dialog/confirm-dialog.a2ui.json +206 -0
- package/feedback/confirm-dialog/confirm-dialog.css +157 -0
- package/feedback/confirm-dialog/confirm-dialog.js +383 -0
- package/feedback/confirm-dialog/confirm-dialog.yaml +297 -0
- package/feedback/index.js +10 -0
- package/form/form-popover/form-popover.js +1 -1
- package/generative/index.d.ts +1 -1
- package/generative/index.js +2 -2
- package/onboarding/index.js +1 -0
- package/onboarding/onboarding-checklist/onboarding-checklist.a2ui.json +263 -0
- package/onboarding/onboarding-checklist/onboarding-checklist.css +157 -0
- package/onboarding/onboarding-checklist/onboarding-checklist.js +428 -0
- package/onboarding/onboarding-checklist/onboarding-checklist.yaml +236 -0
- package/package.json +99 -6
- package/runtime/a2ui-root/a2ui-root.js +3 -3
- package/runtime/gen-root/gen-root.js +5 -5
- package/settings/index.js +12 -0
- package/settings/integrations-page/integrations-page.a2ui.json +274 -0
- package/settings/integrations-page/integrations-page.css +177 -0
- package/settings/integrations-page/integrations-page.d.ts +77 -0
- package/settings/integrations-page/integrations-page.js +413 -0
- package/settings/integrations-page/integrations-page.yaml +317 -0
- package/settings/notification-preferences/notification-preferences.a2ui.json +245 -0
- package/settings/notification-preferences/notification-preferences.css +204 -0
- package/settings/notification-preferences/notification-preferences.js +622 -0
- package/settings/notification-preferences/notification-preferences.yaml +358 -0
- package/shell/admin-command/admin-command.js +2 -2
- package/shell/admin-shell/admin-shell.js +2 -2
- package/shell/admin-sidebar/admin-sidebar.js +2 -2
- package/shell/embed-shell/embed-shell.js +3 -3
- package/simple/simple-shell/simple-shell.js +1 -1
- package/theme/theme-panel/theme-panel.js +2 -2
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
# Edit this file; run `npm run build:components` to regenerate a2ui.json.
|
|
2
|
+
$schema: ../../../../scripts/schemas/component.yaml.schema.json
|
|
3
|
+
name: UINotificationPreferences
|
|
4
|
+
tag: notification-preferences-ui
|
|
5
|
+
status: stable
|
|
6
|
+
component: NotificationPreferences
|
|
7
|
+
category: container
|
|
8
|
+
version: 1
|
|
9
|
+
description: |
|
|
10
|
+
Page-level Settings composite: a matrix of notification types (rows)
|
|
11
|
+
× delivery channels (columns: in-app, email, SMS) with a binary
|
|
12
|
+
<check-ui> in each cell and an optional <switch-ui> column-header
|
|
13
|
+
master toggle for bulk-flipping a channel across every row.
|
|
14
|
+
|
|
15
|
+
Form-bearing — the composite extends UIFormElement and serializes its
|
|
16
|
+
current preferences shape as JSON on `value`. Per first-principle #2
|
|
17
|
+
("save is the consumer's job"), the composite does NOT mutate the
|
|
18
|
+
passed-in `preferences` array; it emits a typed `change` event per
|
|
19
|
+
cell toggle and a `bulk-toggle` event per column-header switch, and
|
|
20
|
+
exposes the staged JSON via the form value so a host <form> submit
|
|
21
|
+
carries it through ElementInternals.
|
|
22
|
+
|
|
23
|
+
Channels are columns; types are rows (the smaller-set / larger-set
|
|
24
|
+
invariant — channels are 3-5 in the wild, types are 10-50). Layout
|
|
25
|
+
renders as a semantic ARIA grid (`role="table"`/`row`/`cell`/
|
|
26
|
+
`rowheader`/`columnheader`) — NOT native `<table>` (per the HTML
|
|
27
|
+
parser strip rule, table-content tags would foster-parent out of a
|
|
28
|
+
custom-element subtree).
|
|
29
|
+
|
|
30
|
+
Spec: .claude/docs/specs/implementation-ready/SPEC-064-notification-preferences.md.
|
|
31
|
+
|
|
32
|
+
# Per ADR-0027 — composites do NOT auto-import the primitives they
|
|
33
|
+
# stamp in connected()/render(). The consumer (or this primitive's
|
|
34
|
+
# .html demo shell) must explicitly side-effect-import each one.
|
|
35
|
+
composes:
|
|
36
|
+
- check-ui
|
|
37
|
+
- switch-ui
|
|
38
|
+
- icon-ui
|
|
39
|
+
- text-ui
|
|
40
|
+
- empty-state-ui
|
|
41
|
+
|
|
42
|
+
props:
|
|
43
|
+
preferences:
|
|
44
|
+
description: |
|
|
45
|
+
Matrix data — one row per notification type. Each record carries
|
|
46
|
+
a stable `key`, a `label`, optional `description` (rendered under
|
|
47
|
+
the label), optional `group` (when `group-by="group"`), and a
|
|
48
|
+
`channels` map keyed by channel key with boolean values.
|
|
49
|
+
Example: {key:"mentions", label:"Mentions", channels:{"in-app":true,
|
|
50
|
+
email:false, sms:false}}. Empty array renders the empty state.
|
|
51
|
+
type: array
|
|
52
|
+
default: []
|
|
53
|
+
dynamic: true
|
|
54
|
+
required: true
|
|
55
|
+
|
|
56
|
+
channels:
|
|
57
|
+
description: |
|
|
58
|
+
Column definitions — one record per delivery channel. Each
|
|
59
|
+
carries a stable `key`, a `label` (the column header), and an
|
|
60
|
+
optional `icon` name (Phosphor — defaults to no icon when
|
|
61
|
+
absent). Example: [{key:"in-app", label:"In-app", icon:"chat-circle"},
|
|
62
|
+
{key:"email", label:"Email", icon:"envelope"}]. Empty array
|
|
63
|
+
renders nothing (the matrix needs at least one column).
|
|
64
|
+
type: array
|
|
65
|
+
default: []
|
|
66
|
+
dynamic: true
|
|
67
|
+
required: true
|
|
68
|
+
|
|
69
|
+
channelEnabled:
|
|
70
|
+
description: |
|
|
71
|
+
Map of channel-key → master-toggle boolean for the column-header
|
|
72
|
+
<switch-ui>. When omitted, master toggles default to `true` for
|
|
73
|
+
every channel. Independent of cell values — toggling the master
|
|
74
|
+
off does NOT auto-update the cells; the host receives a
|
|
75
|
+
`bulk-toggle` event and updates `preferences` itself.
|
|
76
|
+
type: object
|
|
77
|
+
default: {}
|
|
78
|
+
dynamic: true
|
|
79
|
+
|
|
80
|
+
loading:
|
|
81
|
+
description: |
|
|
82
|
+
Renders a skeleton matrix overlay. Cells become non-interactive
|
|
83
|
+
and dim while loading.
|
|
84
|
+
type: boolean
|
|
85
|
+
default: false
|
|
86
|
+
reflect: true
|
|
87
|
+
|
|
88
|
+
disabled:
|
|
89
|
+
description: All cells + master toggles become non-interactive.
|
|
90
|
+
type: boolean
|
|
91
|
+
default: false
|
|
92
|
+
reflect: true
|
|
93
|
+
|
|
94
|
+
group-by:
|
|
95
|
+
description: |
|
|
96
|
+
Row-grouping mode. `none` (default) renders all rows in one
|
|
97
|
+
block. `group` renders one section per unique `preferences[].group`
|
|
98
|
+
value with a header row above each section.
|
|
99
|
+
type: string
|
|
100
|
+
default: "none"
|
|
101
|
+
enum:
|
|
102
|
+
- none
|
|
103
|
+
- group
|
|
104
|
+
reflect: true
|
|
105
|
+
|
|
106
|
+
events:
|
|
107
|
+
change:
|
|
108
|
+
description: |
|
|
109
|
+
Fired when the user toggles a cell <check-ui>. Bubbles. The
|
|
110
|
+
composite emits this with the previous state — the host must
|
|
111
|
+
apply the new state to its own data and re-pass `preferences`
|
|
112
|
+
for the cell to visually update.
|
|
113
|
+
detail:
|
|
114
|
+
row:
|
|
115
|
+
type: string
|
|
116
|
+
description: The `key` of the notification type whose cell flipped.
|
|
117
|
+
channel:
|
|
118
|
+
type: string
|
|
119
|
+
description: The `key` of the channel column whose cell flipped.
|
|
120
|
+
enabled:
|
|
121
|
+
type: boolean
|
|
122
|
+
description: The new desired state (true = opted in).
|
|
123
|
+
|
|
124
|
+
bulk-toggle:
|
|
125
|
+
description: |
|
|
126
|
+
Fired when the user toggles a column-header <switch-ui>.
|
|
127
|
+
Bubbles. Mirrors `change` shape but for the column master —
|
|
128
|
+
host applies the bulk change to its own `preferences` data.
|
|
129
|
+
detail:
|
|
130
|
+
channel:
|
|
131
|
+
type: string
|
|
132
|
+
description: The `key` of the channel column whose master flipped.
|
|
133
|
+
enabled:
|
|
134
|
+
type: boolean
|
|
135
|
+
description: The new desired master state.
|
|
136
|
+
|
|
137
|
+
slots:
|
|
138
|
+
header:
|
|
139
|
+
description: |
|
|
140
|
+
Optional content above the matrix — e.g. a page title, intro
|
|
141
|
+
copy, or per-page save row. Falls back to nothing when empty.
|
|
142
|
+
|
|
143
|
+
footer:
|
|
144
|
+
description: |
|
|
145
|
+
Optional content below the matrix — e.g. a global Save Changes
|
|
146
|
+
button row or fine-print disclaimer. Falls back to nothing.
|
|
147
|
+
|
|
148
|
+
empty:
|
|
149
|
+
description: |
|
|
150
|
+
Custom empty-state copy shown when `preferences` is empty. Falls
|
|
151
|
+
back to a default <empty-state-ui> when not provided.
|
|
152
|
+
|
|
153
|
+
states:
|
|
154
|
+
- name: idle
|
|
155
|
+
description: Default — matrix rendered, ready for interaction.
|
|
156
|
+
- name: loading
|
|
157
|
+
description: Skeleton overlay while data loads.
|
|
158
|
+
attribute: loading
|
|
159
|
+
- name: disabled
|
|
160
|
+
description: All toggles non-interactive.
|
|
161
|
+
attribute: disabled
|
|
162
|
+
- name: empty
|
|
163
|
+
description: No notification types configured.
|
|
164
|
+
attribute: empty
|
|
165
|
+
|
|
166
|
+
traits: []
|
|
167
|
+
|
|
168
|
+
tokens:
|
|
169
|
+
--notification-preferences-bg:
|
|
170
|
+
description: Host background.
|
|
171
|
+
default: var(--a-bg)
|
|
172
|
+
--notification-preferences-row-bg:
|
|
173
|
+
description: Even-row zebra background.
|
|
174
|
+
default: var(--a-bg-muted)
|
|
175
|
+
--notification-preferences-px:
|
|
176
|
+
description: Host horizontal padding.
|
|
177
|
+
default: var(--a-space-5)
|
|
178
|
+
--notification-preferences-py:
|
|
179
|
+
description: Host vertical padding.
|
|
180
|
+
default: var(--a-space-5)
|
|
181
|
+
--notification-preferences-row-py:
|
|
182
|
+
description: Per-row vertical padding.
|
|
183
|
+
default: var(--a-space-3)
|
|
184
|
+
--notification-preferences-row-px:
|
|
185
|
+
description: Per-cell horizontal padding.
|
|
186
|
+
default: var(--a-space-3)
|
|
187
|
+
--notification-preferences-channel-width:
|
|
188
|
+
description: Minimum column width for each channel cell.
|
|
189
|
+
default: var(--a-space-9)
|
|
190
|
+
--notification-preferences-row-label-min:
|
|
191
|
+
description: Minimum row-label column width.
|
|
192
|
+
default: 12rem
|
|
193
|
+
--notification-preferences-border:
|
|
194
|
+
description: Row separator color.
|
|
195
|
+
default: var(--a-border-subtle)
|
|
196
|
+
--notification-preferences-radius:
|
|
197
|
+
description: Outer matrix container radius.
|
|
198
|
+
default: var(--a-radius-md)
|
|
199
|
+
--notification-preferences-group-fg:
|
|
200
|
+
description: Group-heading label color.
|
|
201
|
+
default: var(--a-fg-muted)
|
|
202
|
+
|
|
203
|
+
requiredIcons:
|
|
204
|
+
- bell
|
|
205
|
+
- envelope
|
|
206
|
+
- device-mobile
|
|
207
|
+
- chat-circle
|
|
208
|
+
|
|
209
|
+
a2ui:
|
|
210
|
+
rules:
|
|
211
|
+
- >-
|
|
212
|
+
NotificationPreferences.channels MUST be non-empty. A matrix with
|
|
213
|
+
zero columns renders nothing meaningful — author at least one
|
|
214
|
+
channel record.
|
|
215
|
+
- >-
|
|
216
|
+
NotificationPreferences.preferences[].channels keys MUST match the
|
|
217
|
+
channels[].key set. Mismatched keys silently render the cell as
|
|
218
|
+
`false` (off) — they do NOT raise an error, but the user can never
|
|
219
|
+
toggle them into existence either.
|
|
220
|
+
- >-
|
|
221
|
+
The composite is fully CONTROLLED — toggling a cell does NOT
|
|
222
|
+
mutate `preferences`. The host MUST listen for `change` (and
|
|
223
|
+
`bulk-toggle` for the column master), apply the change to its
|
|
224
|
+
own state, then re-pass the new `preferences` array. Failing to
|
|
225
|
+
do this leaves the toggle visually flipping back to its prior
|
|
226
|
+
state on the next render.
|
|
227
|
+
- >-
|
|
228
|
+
For binary on/off cell toggles, use <check-ui> semantics — NOT
|
|
229
|
+
<switch-ui>. The column-header master IS a <switch-ui> (because
|
|
230
|
+
it's a "setting" — flip the whole column), but each cell is a
|
|
231
|
+
multi-select-style checkbox.
|
|
232
|
+
- >-
|
|
233
|
+
Use `group-by="group"` only when `preferences[]` records carry a
|
|
234
|
+
stable `group` field. Mixing grouped + ungrouped rows in the
|
|
235
|
+
same matrix produces inconsistent section heights.
|
|
236
|
+
|
|
237
|
+
anti_patterns:
|
|
238
|
+
- wrong: |
|
|
239
|
+
<notification-preferences-ui>
|
|
240
|
+
<switch-ui label="Email mentions"></switch-ui>
|
|
241
|
+
<switch-ui label="Email replies"></switch-ui>
|
|
242
|
+
</notification-preferences-ui>
|
|
243
|
+
why: |
|
|
244
|
+
Cells are generated from the `preferences` matrix. Slotted
|
|
245
|
+
switches are ignored and the host renders empty.
|
|
246
|
+
fix: |
|
|
247
|
+
<notification-preferences-ui id="prefs"></notification-preferences-ui>
|
|
248
|
+
<script>
|
|
249
|
+
document.querySelector('#prefs').channels = [
|
|
250
|
+
{key:'email', label:'Email'}
|
|
251
|
+
];
|
|
252
|
+
document.querySelector('#prefs').preferences = [
|
|
253
|
+
{key:'mentions', label:'Mentions', channels:{email:true}},
|
|
254
|
+
{key:'replies', label:'Replies', channels:{email:false}}
|
|
255
|
+
];
|
|
256
|
+
</script>
|
|
257
|
+
- wrong: |
|
|
258
|
+
<table>
|
|
259
|
+
<thead><tr><th></th><th>Email</th></tr></thead>
|
|
260
|
+
<tbody>
|
|
261
|
+
<tr><th>Mentions</th><td><check-ui></check-ui></td></tr>
|
|
262
|
+
</tbody>
|
|
263
|
+
</table>
|
|
264
|
+
why: |
|
|
265
|
+
Re-implements the matrix in raw HTML — loses the typed
|
|
266
|
+
`change` / `bulk-toggle` event contract, the column-master
|
|
267
|
+
switch, the group-by support, and the consistent token-driven
|
|
268
|
+
visual treatment. Worse, table-content tags inside a custom
|
|
269
|
+
element subtree are foster-parented out of the DOM by the HTML
|
|
270
|
+
parser — they silently vanish.
|
|
271
|
+
fix: |
|
|
272
|
+
<notification-preferences-ui id="prefs"></notification-preferences-ui>
|
|
273
|
+
<script>/* set channels + preferences here */</script>
|
|
274
|
+
|
|
275
|
+
examples:
|
|
276
|
+
- name: default
|
|
277
|
+
description: Three channels (in-app / email / SMS) × four notification types.
|
|
278
|
+
a2ui: |
|
|
279
|
+
[
|
|
280
|
+
{
|
|
281
|
+
"id": "np-default",
|
|
282
|
+
"component": "NotificationPreferences",
|
|
283
|
+
"name": "notifications",
|
|
284
|
+
"channels": [
|
|
285
|
+
{"key": "in-app", "label": "In-app", "icon": "chat-circle"},
|
|
286
|
+
{"key": "email", "label": "Email", "icon": "envelope"},
|
|
287
|
+
{"key": "sms", "label": "SMS", "icon": "device-mobile"}
|
|
288
|
+
],
|
|
289
|
+
"preferences": [
|
|
290
|
+
{"key": "mentions", "label": "Mentions",
|
|
291
|
+
"channels": {"in-app": true, "email": true, "sms": false}},
|
|
292
|
+
{"key": "comments", "label": "Comments",
|
|
293
|
+
"channels": {"in-app": true, "email": false, "sms": false}},
|
|
294
|
+
{"key": "releases", "label": "Releases",
|
|
295
|
+
"channels": {"in-app": false,"email": true, "sms": false}},
|
|
296
|
+
{"key": "security", "label": "Security alerts",
|
|
297
|
+
"channels": {"in-app": true, "email": true, "sms": true}}
|
|
298
|
+
]
|
|
299
|
+
}
|
|
300
|
+
]
|
|
301
|
+
- name: grouped
|
|
302
|
+
description: Same matrix grouped by category via group-by="group".
|
|
303
|
+
a2ui: |
|
|
304
|
+
[
|
|
305
|
+
{
|
|
306
|
+
"id": "np-grouped",
|
|
307
|
+
"component": "NotificationPreferences",
|
|
308
|
+
"name": "notifications",
|
|
309
|
+
"groupBy": "group",
|
|
310
|
+
"channels": [
|
|
311
|
+
{"key": "in-app", "label": "In-app"},
|
|
312
|
+
{"key": "email", "label": "Email"}
|
|
313
|
+
],
|
|
314
|
+
"preferences": [
|
|
315
|
+
{"key": "mentions", "label": "Mentions", "group": "Activity",
|
|
316
|
+
"channels": {"in-app": true, "email": true}},
|
|
317
|
+
{"key": "comments", "label": "Comments", "group": "Activity",
|
|
318
|
+
"channels": {"in-app": true, "email": false}},
|
|
319
|
+
{"key": "digest", "label": "Weekly digest", "group": "Summaries",
|
|
320
|
+
"channels": {"in-app": false, "email": true}}
|
|
321
|
+
]
|
|
322
|
+
}
|
|
323
|
+
]
|
|
324
|
+
|
|
325
|
+
keywords:
|
|
326
|
+
- notification-preferences
|
|
327
|
+
- notifications
|
|
328
|
+
- preferences
|
|
329
|
+
- opt-in
|
|
330
|
+
- opt-out
|
|
331
|
+
- alerts
|
|
332
|
+
- channels
|
|
333
|
+
- in-app
|
|
334
|
+
- email
|
|
335
|
+
- sms
|
|
336
|
+
- subscriptions
|
|
337
|
+
- notification-settings
|
|
338
|
+
|
|
339
|
+
synonyms:
|
|
340
|
+
notifications:
|
|
341
|
+
- alerts
|
|
342
|
+
- messages
|
|
343
|
+
- updates
|
|
344
|
+
preferences:
|
|
345
|
+
- settings
|
|
346
|
+
- opt-ins
|
|
347
|
+
- subscriptions
|
|
348
|
+
channels:
|
|
349
|
+
- delivery
|
|
350
|
+
- destinations
|
|
351
|
+
|
|
352
|
+
related:
|
|
353
|
+
- Check
|
|
354
|
+
- Switch
|
|
355
|
+
- Table
|
|
356
|
+
- EmptyState
|
|
357
|
+
- Icon
|
|
358
|
+
- Text
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
* should prefer <admin-command>.
|
|
37
37
|
*/
|
|
38
38
|
|
|
39
|
-
import { defineIfFree } from '
|
|
40
|
-
import { UIElement } from '
|
|
39
|
+
import { defineIfFree } from '@adia-ai/web-components/core/register';
|
|
40
|
+
import { UIElement } from '@adia-ai/web-components/core/element';
|
|
41
41
|
|
|
42
42
|
class AdminCommand extends UIElement {
|
|
43
43
|
static properties = {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
* 4. command-select re-emit + nav routing when a <nav-ui> is present
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
-
import { defineIfFree } from '
|
|
33
|
-
import { UIElement } from '
|
|
32
|
+
import { defineIfFree } from '@adia-ai/web-components/core/register';
|
|
33
|
+
import { UIElement } from '@adia-ai/web-components/core/element';
|
|
34
34
|
|
|
35
35
|
const DEFAULT_MODE = 'rounded borderless';
|
|
36
36
|
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
* code should prefer <admin-sidebar>.
|
|
38
38
|
*/
|
|
39
39
|
|
|
40
|
-
import { defineIfFree } from '
|
|
41
|
-
import { UIElement } from '
|
|
40
|
+
import { defineIfFree } from '@adia-ai/web-components/core/register';
|
|
41
|
+
import { UIElement } from '@adia-ai/web-components/core/element';
|
|
42
42
|
|
|
43
43
|
const SNAP_THRESHOLD = 96;
|
|
44
44
|
const SNAP_MIN_USABLE = 160;
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
* edge to resize + a `resize-end` event), not a CSS stand-in. The trait is imported
|
|
32
32
|
* here so it's registered for declarative lookup.
|
|
33
33
|
*/
|
|
34
|
-
import { defineIfFree } from '
|
|
35
|
-
import { UIElement } from '
|
|
36
|
-
import '
|
|
34
|
+
import { defineIfFree } from '@adia-ai/web-components/core/register';
|
|
35
|
+
import { UIElement } from '@adia-ai/web-components/core/element';
|
|
36
|
+
import '@adia-ai/web-components/traits'; // registers the full trait library (incl. `resizable`) for declarative traits="resizable" lookup
|
|
37
37
|
|
|
38
38
|
class EmbedShell extends UIElement {
|
|
39
39
|
static template = () => null; // behavior-only, light-DOM — keep the consumer's children
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
* theme-panel[active-scheme="dark"] button-ui { … }
|
|
52
52
|
*/
|
|
53
53
|
|
|
54
|
-
import { defineIfFree } from '
|
|
55
|
-
import { UIElement } from '
|
|
54
|
+
import { defineIfFree } from '@adia-ai/web-components/core/register';
|
|
55
|
+
import { UIElement } from '@adia-ai/web-components/core/element';
|
|
56
56
|
|
|
57
57
|
// The 12 named identities shipped in styles/themes.css (real recolor +
|
|
58
58
|
// real typeface pairing per theme, not a decorative hue nudge) — see that
|