@adia-ai/web-modules 0.8.36 → 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 +17 -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
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* truth, same rule as chart-legend-ui's peer contract).
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
|
-
import { UIElement } from '
|
|
27
|
+
import { UIElement } from '@adia-ai/web-components/core/element';
|
|
28
28
|
|
|
29
29
|
const SUMMARY_EVENTS = ['change', 'input'];
|
|
30
30
|
|
package/generative/index.d.ts
CHANGED
package/generative/index.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* import { Canvas, A2UIRoot, registerResolver }
|
|
23
23
|
* from '@adia-ai/web-modules/generative';
|
|
24
24
|
*
|
|
25
|
-
* Pairs with the @adia-ai/a2ui
|
|
25
|
+
* Pairs with the @adia-ai/a2ui registry (registerResolver, etc.)
|
|
26
26
|
* for wiring data sources to api:// + resource:// URIs.
|
|
27
27
|
*/
|
|
28
28
|
|
|
@@ -42,4 +42,4 @@ export { UICanvas as Canvas } from '@adia-ai/web-components/components/canvas';
|
|
|
42
42
|
// without a second import.
|
|
43
43
|
export {
|
|
44
44
|
registerResolver,
|
|
45
|
-
} from '@adia-ai/a2ui
|
|
45
|
+
} from '@adia-ai/a2ui';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { UIOnboardingChecklist } from './onboarding-checklist/onboarding-checklist.js';
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://adiaui.dev/a2ui/v0_9/components/OnboardingChecklist.json",
|
|
4
|
+
"title": "OnboardingChecklist",
|
|
5
|
+
"description": "Module-tier onboarding checklist — a progressive setup-step widget\n(\"Getting started\" card seen in Stripe / Linear / Vercel dashboards).\nComposes <progress-ui> (top fill bar), <list-ui> + <list-item-ui>\n(the step rows), <check-ui> (per-item completion checkbox), and\noptional <button-ui> (per-item action CTA).\n\nOwns the data model (items: array of {id, label, description, href,\ndone}), the persistence contract (storage-key writes a JSON blob to\nlocalStorage / sessionStorage), the auto-computed progress display,\nand the dismiss-on-complete behavior. Items are data, not slotted\nmarkup — host wiring uses stable per-item ids, not DOM positions.\n\nUse for the \"card of optional setup tasks\" case; use <step-progress-ui>\nfor horizontal multi-screen wizards where the user is locked into\nlinear progression.\n",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"allOf": [
|
|
8
|
+
{
|
|
9
|
+
"$ref": "common_types.json#/$defs/ComponentCommon"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"$ref": "common_types.json#/$defs/CatalogComponentCommon"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"properties": {
|
|
16
|
+
"title": {
|
|
17
|
+
"description": "Header label above the progress bar. Defaults to \"Get started\".",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"default": "Get started"
|
|
20
|
+
},
|
|
21
|
+
"items": {
|
|
22
|
+
"description": "Step list — each item is { id, label, description?, href?, done? }. Required, non-empty.",
|
|
23
|
+
"$ref": "common_types.json#/$defs/DynamicStringList"
|
|
24
|
+
},
|
|
25
|
+
"collapsed": {
|
|
26
|
+
"description": "Initial / current collapsed state — hides the item list, keeps progress + header visible.",
|
|
27
|
+
"$ref": "common_types.json#/$defs/DynamicBoolean"
|
|
28
|
+
},
|
|
29
|
+
"collapsible": {
|
|
30
|
+
"description": "Show a top-right collapse toggle.",
|
|
31
|
+
"type": "boolean",
|
|
32
|
+
"default": true
|
|
33
|
+
},
|
|
34
|
+
"component": {
|
|
35
|
+
"const": "OnboardingChecklist"
|
|
36
|
+
},
|
|
37
|
+
"dismiss-on-complete": {
|
|
38
|
+
"description": "Auto-hide the widget when all items are done.",
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"default": true
|
|
41
|
+
},
|
|
42
|
+
"storage": {
|
|
43
|
+
"description": "Persistence backend when storage-key is set.",
|
|
44
|
+
"type": "string",
|
|
45
|
+
"enum": [
|
|
46
|
+
"local",
|
|
47
|
+
"session",
|
|
48
|
+
"none"
|
|
49
|
+
],
|
|
50
|
+
"default": "local"
|
|
51
|
+
},
|
|
52
|
+
"storage-key": {
|
|
53
|
+
"description": "localStorage key for per-item completion persistence. Empty string disables storage (ephemeral).",
|
|
54
|
+
"type": "string",
|
|
55
|
+
"default": ""
|
|
56
|
+
},
|
|
57
|
+
"value": {
|
|
58
|
+
"description": "Completion map mapping item id to boolean. When set, host owns state and storage attributes are ignored.",
|
|
59
|
+
"type": "object",
|
|
60
|
+
"default": {}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": [
|
|
64
|
+
"component",
|
|
65
|
+
"items"
|
|
66
|
+
],
|
|
67
|
+
"unevaluatedProperties": false,
|
|
68
|
+
"x-adiaui": {
|
|
69
|
+
"anti_patterns": [
|
|
70
|
+
{
|
|
71
|
+
"fix": "{ \"component\": \"OnboardingChecklist\", \"items\": [{ \"id\": \"x\", \"label\": \"Step 1\" }] }\n",
|
|
72
|
+
"why": "Empty checklist — renders an empty card.\n",
|
|
73
|
+
"wrong": "{ \"component\": \"OnboardingChecklist\", \"items\": [] }\n"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"fix": "{ \"component\": \"OnboardingChecklist\", \"items\": [\n { \"id\": \"a\", \"label\": \"Step A\" }, { \"id\": \"b\", \"label\": \"Step B\" }\n] }\n",
|
|
77
|
+
"why": "Items missing `id`. The component cannot persist completion\nwithout stable per-item identifiers.\n",
|
|
78
|
+
"wrong": "{ \"component\": \"OnboardingChecklist\", \"items\": [\n { \"label\": \"Step A\" }, { \"label\": \"Step B\" }\n] }\n"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"category": "feedback",
|
|
82
|
+
"composes": [],
|
|
83
|
+
"events": {
|
|
84
|
+
"onboarding-complete": {
|
|
85
|
+
"description": "Fired when all items become done.",
|
|
86
|
+
"detail": {
|
|
87
|
+
"value": {
|
|
88
|
+
"description": "The completion map at the moment of full completion.",
|
|
89
|
+
"type": "object"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"onboarding-dismiss": {
|
|
94
|
+
"description": "Fired when the widget collapses or auto-dismisses on completion.",
|
|
95
|
+
"detail": {
|
|
96
|
+
"reason": {
|
|
97
|
+
"description": "Why the widget was dismissed.",
|
|
98
|
+
"type": "string",
|
|
99
|
+
"enum": [
|
|
100
|
+
"collapsed",
|
|
101
|
+
"complete"
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"onboarding-step-action": {
|
|
107
|
+
"description": "Fired when the user clicks an item's action CTA.",
|
|
108
|
+
"detail": {
|
|
109
|
+
"href": {
|
|
110
|
+
"description": "The href of the CTA (may be empty when host wires the click elsewhere).",
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"id": {
|
|
114
|
+
"description": "The id of the step whose CTA was clicked.",
|
|
115
|
+
"type": "string"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"onboarding-step-complete": {
|
|
120
|
+
"description": "Fired when a step transitions from undone to done.",
|
|
121
|
+
"detail": {
|
|
122
|
+
"id": {
|
|
123
|
+
"description": "The id of the step that just completed.",
|
|
124
|
+
"type": "string"
|
|
125
|
+
},
|
|
126
|
+
"value": {
|
|
127
|
+
"description": "Snapshot of the full completion map after the change.",
|
|
128
|
+
"type": "object"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"examples": [
|
|
134
|
+
{
|
|
135
|
+
"description": "Three-step dashboard setup card.",
|
|
136
|
+
"a2ui": "[\n {\n \"id\": \"onb-1\",\n \"component\": \"OnboardingChecklist\",\n \"storageKey\": \"acme:onboarding:v1\",\n \"items\": [\n { \"id\": \"profile\", \"label\": \"Complete your profile\", \"description\": \"Add a photo and bio\", \"href\": \"/settings/profile\" },\n { \"id\": \"team\", \"label\": \"Invite your team\", \"description\": \"Add at least one teammate\", \"href\": \"/settings/team\" },\n { \"id\": \"connect\", \"label\": \"Connect a data source\", \"description\": \"Hook up the first integration\", \"href\": \"/integrations\" }\n ]\n }\n]\n",
|
|
137
|
+
"name": "basic-checklist"
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"keywords": [
|
|
141
|
+
"onboarding",
|
|
142
|
+
"checklist",
|
|
143
|
+
"getting-started",
|
|
144
|
+
"setup",
|
|
145
|
+
"steps",
|
|
146
|
+
"progress",
|
|
147
|
+
"getting started"
|
|
148
|
+
],
|
|
149
|
+
"name": "UIOnboardingChecklist",
|
|
150
|
+
"related": [
|
|
151
|
+
"Check",
|
|
152
|
+
"List",
|
|
153
|
+
"ListItem",
|
|
154
|
+
"Progress",
|
|
155
|
+
"Button",
|
|
156
|
+
"StepProgress"
|
|
157
|
+
],
|
|
158
|
+
"slots": {
|
|
159
|
+
"description": {
|
|
160
|
+
"description": "Optional subtitle / supporting prose rendered beneath the header. Renders at body-subtle typography. Use for richer markup than the plain [description] attribute string."
|
|
161
|
+
},
|
|
162
|
+
"complete": {
|
|
163
|
+
"description": "Content shown when all items are done and dismiss-on-complete is false."
|
|
164
|
+
},
|
|
165
|
+
"footer": {
|
|
166
|
+
"description": "Optional footer content (e.g. \"Skip for now\" link / button)."
|
|
167
|
+
},
|
|
168
|
+
"header": {
|
|
169
|
+
"description": "Custom title region above the progress bar. Overrides the default [title] attribute label."
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"states": [
|
|
173
|
+
{
|
|
174
|
+
"description": "Some items incomplete; widget visible and expanded.",
|
|
175
|
+
"name": "idle"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"description": "Item list hidden; header + progress visible.",
|
|
179
|
+
"attribute": "collapsed",
|
|
180
|
+
"name": "collapsed"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"description": "All items done. Behavior depends on dismiss-on-complete.",
|
|
184
|
+
"attribute": "data-complete",
|
|
185
|
+
"name": "complete"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"description": "Widget removed from layout after collapse or auto-dismiss.",
|
|
189
|
+
"attribute": "hidden",
|
|
190
|
+
"name": "dismissed"
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"status": "stable",
|
|
194
|
+
"synonyms": {
|
|
195
|
+
"checklist": [
|
|
196
|
+
"todo",
|
|
197
|
+
"task-list",
|
|
198
|
+
"steps"
|
|
199
|
+
],
|
|
200
|
+
"getting-started": [
|
|
201
|
+
"onboarding",
|
|
202
|
+
"setup",
|
|
203
|
+
"welcome"
|
|
204
|
+
],
|
|
205
|
+
"onboarding": [
|
|
206
|
+
"getting-started",
|
|
207
|
+
"setup",
|
|
208
|
+
"welcome",
|
|
209
|
+
"kickoff"
|
|
210
|
+
],
|
|
211
|
+
"setup": [
|
|
212
|
+
"onboarding",
|
|
213
|
+
"getting-started",
|
|
214
|
+
"configuration"
|
|
215
|
+
]
|
|
216
|
+
},
|
|
217
|
+
"tag": "onboarding-checklist-ui",
|
|
218
|
+
"tokens": {
|
|
219
|
+
"--onboarding-checklist-bg": {
|
|
220
|
+
"description": "Card background. Defaults to elevated canvas tier.",
|
|
221
|
+
"default": "var(--a-canvas-1)"
|
|
222
|
+
},
|
|
223
|
+
"--onboarding-checklist-border": {
|
|
224
|
+
"description": "Outer border.",
|
|
225
|
+
"default": "1px solid var(--a-border-subtle)"
|
|
226
|
+
},
|
|
227
|
+
"--onboarding-checklist-fg": {
|
|
228
|
+
"description": "Primary foreground color.",
|
|
229
|
+
"default": "var(--a-fg)"
|
|
230
|
+
},
|
|
231
|
+
"--onboarding-checklist-fg-muted": {
|
|
232
|
+
"description": "Secondary foreground color for descriptions + meta.",
|
|
233
|
+
"default": "var(--a-fg-muted)"
|
|
234
|
+
},
|
|
235
|
+
"--onboarding-checklist-gap": {
|
|
236
|
+
"description": "Gap between header / progress / items / footer.",
|
|
237
|
+
"default": "var(--a-space-3)"
|
|
238
|
+
},
|
|
239
|
+
"--onboarding-checklist-progress-fill": {
|
|
240
|
+
"description": "Progress-bar fill color (forwarded to inner <progress-ui> via --progress-fill).",
|
|
241
|
+
"default": "var(--md-sys-color-primary)"
|
|
242
|
+
},
|
|
243
|
+
"--onboarding-checklist-px": {
|
|
244
|
+
"description": "Inline (left/right) padding.",
|
|
245
|
+
"default": "var(--a-space-4)"
|
|
246
|
+
},
|
|
247
|
+
"--onboarding-checklist-py": {
|
|
248
|
+
"description": "Block (top/bottom) padding.",
|
|
249
|
+
"default": "var(--a-space-4)"
|
|
250
|
+
},
|
|
251
|
+
"--onboarding-checklist-radius": {
|
|
252
|
+
"description": "Outer card radius.",
|
|
253
|
+
"default": "var(--a-radius-lg)"
|
|
254
|
+
},
|
|
255
|
+
"--onboarding-checklist-shadow": {
|
|
256
|
+
"description": "Card elevation.",
|
|
257
|
+
"default": "var(--a-shadow-sm)"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"traits": [],
|
|
261
|
+
"version": 1
|
|
262
|
+
}
|
|
263
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
onboarding-checklist-ui — Module CSS
|
|
3
|
+
|
|
4
|
+
Two-block @scope:
|
|
5
|
+
Block 1 — TOKENS (:where(:scope))
|
|
6
|
+
Block 2 — BASE (:scope + descendant rules)
|
|
7
|
+
|
|
8
|
+
Tokens consumed (substrate):
|
|
9
|
+
--a-canvas-1, --a-fg, --a-fg-muted, --a-primary,
|
|
10
|
+
--a-radius-lg, --a-shadow-sm, --a-border-subtle,
|
|
11
|
+
--a-space-1, --a-space-2, --a-space-3, --a-space-4,
|
|
12
|
+
--a-bg-muted, --a-focus-ring, --a-ui-sm, --a-weight-medium
|
|
13
|
+
═══════════════════════════════════════════════════════════════ */
|
|
14
|
+
|
|
15
|
+
@scope (onboarding-checklist-ui) {
|
|
16
|
+
|
|
17
|
+
/* ── Block 1: TOKENS ────────────────────────────────────────── */
|
|
18
|
+
|
|
19
|
+
:where(:scope) {
|
|
20
|
+
--onboarding-checklist-bg: var(--a-canvas-1);
|
|
21
|
+
--onboarding-checklist-fg: var(--md-sys-color-neutral-on-surface);
|
|
22
|
+
--onboarding-checklist-fg-muted: var(--a-fg-muted);
|
|
23
|
+
--onboarding-checklist-radius: var(--a-radius-lg);
|
|
24
|
+
--onboarding-checklist-px: var(--a-space-4);
|
|
25
|
+
--onboarding-checklist-py: var(--a-space-4);
|
|
26
|
+
--onboarding-checklist-gap: var(--a-space-3);
|
|
27
|
+
--onboarding-checklist-progress-fill: var(--md-sys-color-primary);
|
|
28
|
+
--onboarding-checklist-shadow: var(--a-shadow-sm);
|
|
29
|
+
--onboarding-checklist-border: 1px solid var(--md-sys-color-neutral-outline-variant);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* ── Block 2: BASE ──────────────────────────────────────────── */
|
|
33
|
+
|
|
34
|
+
:scope {
|
|
35
|
+
box-sizing: border-box;
|
|
36
|
+
display: block;
|
|
37
|
+
padding: var(--onboarding-checklist-py) var(--onboarding-checklist-px);
|
|
38
|
+
background: var(--onboarding-checklist-bg);
|
|
39
|
+
color: var(--onboarding-checklist-fg);
|
|
40
|
+
border-radius: var(--onboarding-checklist-radius);
|
|
41
|
+
border: var(--onboarding-checklist-border);
|
|
42
|
+
box-shadow: var(--onboarding-checklist-shadow);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:scope[hidden] {
|
|
46
|
+
display: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Header ── title + collapse toggle */
|
|
50
|
+
:scope > [data-part="header"] {
|
|
51
|
+
display: flex;
|
|
52
|
+
justify-content: space-between;
|
|
53
|
+
align-items: center;
|
|
54
|
+
gap: var(--a-space-2);
|
|
55
|
+
margin-block-end: var(--onboarding-checklist-gap);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:scope > [data-part="header"] > [data-part="title"] {
|
|
59
|
+
flex: 1;
|
|
60
|
+
min-width: 0;
|
|
61
|
+
font-weight: var(--a-weight-medium);
|
|
62
|
+
color: var(--onboarding-checklist-fg);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
:scope > [data-part="header"] > [data-part="collapse-toggle"] {
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
display: inline-flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
70
|
+
padding: var(--a-space-1);
|
|
71
|
+
margin: 0;
|
|
72
|
+
background: transparent;
|
|
73
|
+
border: 1px solid transparent;
|
|
74
|
+
border-radius: var(--a-radius-md);
|
|
75
|
+
color: var(--onboarding-checklist-fg-muted);
|
|
76
|
+
cursor: pointer;
|
|
77
|
+
font: inherit;
|
|
78
|
+
/* font-family floor — see segment.css rationale (inline default). */
|
|
79
|
+
font-family: var(--onboarding-checklist-font-family, var(--a-font-family-ui));
|
|
80
|
+
appearance: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:scope > [data-part="header"] > [data-part="collapse-toggle"]:hover {
|
|
84
|
+
background: var(--a-bg-muted);
|
|
85
|
+
color: var(--onboarding-checklist-fg);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:scope > [data-part="header"] > [data-part="collapse-toggle"]:focus-visible {
|
|
89
|
+
outline: none;
|
|
90
|
+
box-shadow: var(--a-focus-ring);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Progress bar — forward token to inner <progress-ui> */
|
|
94
|
+
:scope > [data-part="progress"] {
|
|
95
|
+
--progress-fill: var(--onboarding-checklist-progress-fill);
|
|
96
|
+
display: block;
|
|
97
|
+
margin-block-end: var(--onboarding-checklist-gap);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Live region — visually hidden but read by SR */
|
|
101
|
+
:scope > [data-part="meter"] {
|
|
102
|
+
position: absolute;
|
|
103
|
+
width: 1px;
|
|
104
|
+
height: 1px;
|
|
105
|
+
margin: -1px;
|
|
106
|
+
padding: 0;
|
|
107
|
+
overflow: hidden;
|
|
108
|
+
clip: rect(0 0 0 0);
|
|
109
|
+
white-space: nowrap;
|
|
110
|
+
border: 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Item list */
|
|
114
|
+
:scope > [data-part="items"] {
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-direction: column;
|
|
117
|
+
gap: var(--a-space-2);
|
|
118
|
+
margin: 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* Complete-slot — shown when all done + dismiss-on-complete=false. Sits
|
|
122
|
+
BELOW the item list (template order), so it needs LEADING spacing to
|
|
123
|
+
separate it from the items above — matching the footer convention.
|
|
124
|
+
Descendant (not child) combinator: the conditional render branch
|
|
125
|
+
(`${allDone ? html`…` : null}`) is wrapped by the template engine in a
|
|
126
|
+
<span style="display:contents">, so `:scope > [data-part]` never matches.
|
|
127
|
+
The static header/progress/items/footer above stay `:scope >`. */
|
|
128
|
+
:scope [data-part="complete"] {
|
|
129
|
+
margin-block-start: var(--onboarding-checklist-gap);
|
|
130
|
+
color: var(--onboarding-checklist-fg-muted);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Footer slot */
|
|
134
|
+
:scope > [data-part="footer"] {
|
|
135
|
+
margin-block-start: var(--onboarding-checklist-gap);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
:scope > [data-part="footer"]:empty {
|
|
139
|
+
display: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Collapsed state — hide body, keep header + progress. The complete block
|
|
143
|
+
is wrapped in a display:contents span (conditional render), so its rule
|
|
144
|
+
uses the descendant combinator while the static items/footer keep `>`. */
|
|
145
|
+
:scope[collapsed] > [data-part="items"],
|
|
146
|
+
:scope[collapsed] > [data-part="footer"],
|
|
147
|
+
:scope[collapsed] [data-part="complete"] {
|
|
148
|
+
display: none;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* Done items — dim the description slightly so progression reads. */
|
|
152
|
+
:scope [data-item-id][data-done="true"] [slot="description"] {
|
|
153
|
+
color: var(--onboarding-checklist-fg-muted);
|
|
154
|
+
text-decoration: line-through;
|
|
155
|
+
text-decoration-color: var(--md-sys-color-neutral-outline-variant);
|
|
156
|
+
}
|
|
157
|
+
}
|