@adia-ai/web-components 0.8.22 → 0.8.24
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 +59 -0
- package/MIGRATION.md +9 -0
- package/components/agent-questions/agent-questions.yaml +0 -2
- package/components/agent-trace/agent-trace.js +4 -1
- package/components/alert/alert.a2ui.json +1 -1
- package/components/alert/alert.class.js +5 -0
- package/components/alert/alert.css +44 -5
- package/components/alert/alert.yaml +10 -4
- package/components/calendar-grid/calendar-grid.yaml +3 -0
- package/components/canvas/canvas.js +4 -1
- package/components/card/card.css +12 -0
- package/components/chat-thread/chat-input.js +4 -1
- package/components/code/code.css +29 -26
- package/components/combobox/combobox.class.js +1 -1
- package/components/combobox/combobox.yaml +0 -1
- package/components/date-range-picker/date-range-picker.class.js +1 -1
- package/components/date-range-picker/date-range-picker.yaml +0 -1
- package/components/datetime-picker/datetime-picker.class.js +1 -1
- package/components/datetime-picker/datetime-picker.yaml +0 -1
- package/components/description-list/description-list.css +9 -0
- package/components/drawer/drawer.class.js +5 -0
- package/components/drawer/drawer.css +16 -0
- package/components/drawer/drawer.yaml +2 -0
- package/components/feed/feed.class.js +5 -0
- package/components/feed/feed.yaml +2 -0
- package/components/field/field.css +4 -1
- package/components/input/input.class.js +5 -0
- package/components/input/input.yaml +3 -0
- package/components/list/list.css +25 -5
- package/components/modal/modal.class.js +5 -0
- package/components/modal/modal.yaml +2 -0
- package/components/nav-group/nav-group.class.js +50 -2
- package/components/nav-group/nav-group.css +11 -2
- package/components/nav-group/nav-group.yaml +2 -0
- package/components/pagination/pagination.yaml +3 -0
- package/components/progress-row/progress-row.class.js +10 -2
- package/components/richtext/richtext.css +7 -0
- package/components/select/select.a2ui.json +5 -0
- package/components/select/select.class.js +27 -8
- package/components/select/select.yaml +13 -1
- package/components/stat/stat.js +4 -1
- package/components/stepper/stepper.css +25 -20
- package/components/swiper/swiper.class.js +5 -0
- package/components/swiper/swiper.yaml +3 -0
- package/components/table/table.a2ui.json +15 -1
- package/components/table/table.class.js +14 -1
- package/components/table/table.css +68 -3
- package/components/table/table.d.ts +5 -1
- package/components/table/table.yaml +34 -1
- package/components/tabs/tab.js +4 -1
- package/components/tag/tag.css +15 -9
- package/components/toolbar/toolbar.class.js +20 -0
- package/components/toolbar/toolbar.yaml +2 -0
- package/core/provider.js +5 -1
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/scale.min.css +1 -1
- package/dist/scale.sheet.js +1 -1
- package/dist/theme-provider.min.js +2 -2
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +93 -93
- package/dist/web-components.sheet.js +1 -1
- package/package.json +1 -1
- package/patterns/access-requests/access-requests.examples.html +12 -3
- package/patterns/admin-keys-and-export/admin-keys-and-export.examples.html +23 -8
- package/patterns/agent-cost/agent-cost.examples.html +12 -3
- package/patterns/agent-memory/agent-memory.examples.html +12 -3
- package/patterns/agent-prompt-library/agent-prompt-library.examples.html +12 -3
- package/patterns/agent-tool-call/agent-tool-call.examples.html +16 -4
- package/patterns/alert-dialog/alert-dialog.examples.html +12 -3
- package/patterns/app-nav/app-nav.examples.html +36 -9
- package/patterns/approvals/approvals.examples.html +14 -10
- package/patterns/audit-log/audit-log.examples.html +5 -2
- package/patterns/bulk-action-toolbar/bulk-action-toolbar.examples.html +210 -32
- package/patterns/bulk-action-toolbar/bulk-action-toolbar.examples.js +83 -4
- package/patterns/bulk-action-toolbar/bulk-action-toolbar.html +68 -0
- package/patterns/changelog-feed/changelog-feed.examples.html +7 -4
- package/patterns/chart-in-card/chart-in-card.examples.html +28 -7
- package/patterns/comments-and-collaboration/comments-and-collaboration.examples.html +24 -9
- package/patterns/conversion-funnel/conversion-funnel.examples.html +24 -15
- package/patterns/data-tables-inline-edit-and-tree/data-tables-inline-edit-and-tree.examples.html +17 -8
- package/patterns/diff-review/diff-review.examples.html +12 -3
- package/patterns/export-flow/export-flow.examples.html +12 -3
- package/patterns/filter-bar/filter-bar.examples.html +13 -4
- package/patterns/form-drawer/form-drawer.examples.html +15 -6
- package/patterns/form-system/form-system.examples.html +4 -1
- package/patterns/forms-conditional-and-autocomplete/forms-conditional-and-autocomplete.examples.html +12 -3
- package/patterns/inline-dialog/inline-dialog.examples.html +12 -3
- package/patterns/kanban-board/kanban-board.examples.html +4 -1
- package/patterns/marketing-engagement/marketing-engagement.examples.html +32 -14
- package/patterns/notifications-bell-and-digest/notifications-bell-and-digest.examples.html +13 -4
- package/patterns/permissions-matrix/permissions-matrix.examples.html +9 -3
- package/patterns/permissions-role-picker/permissions-role-picker.examples.html +8 -2
- package/patterns/permissions-sharing/permissions-sharing.examples.html +12 -3
- package/patterns/profile-public-and-verification/profile-public-and-verification.examples.html +18 -6
- package/patterns/record-detail-drawer/record-detail-drawer.examples.html +10 -4
- package/patterns/retention-cohort/retention-cohort.examples.html +15 -6
- package/patterns/search-discovery/search-discovery.examples.html +16 -4
- package/patterns/system-banners/system-banners.examples.html +54 -48
- package/patterns/timezone-selector/timezone-selector.examples.html +8 -2
- package/patterns/timezone-selector/timezone-selector.examples.js +3 -1
- package/patterns/wizard-drawer/wizard-drawer.examples.html +25 -23
- package/patterns/wizard-drawer/wizard-drawer.examples.js +12 -1
- package/styles/foundation/radius.css +2 -2
- package/styles/scale.css +2 -2
- package/styles/type/scale.css +6 -6
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<tag-ui size="sm">alert-ui</tag-ui> <tag-ui size="sm">button-ui</tag-ui> <tag-ui size="sm">text-ui</tag-ui>
|
|
6
6
|
</div>
|
|
7
7
|
</div>
|
|
8
|
-
<p>Persistent strip-shaped surfaces above the app shell. System banners (offline, maintenance, update available), live-update banners ("new since you opened this"), and announcement banners (beta callouts, promos). All three are <code>alert-ui</code> compositions; the variant + dismiss + CTA pattern is what differs.</p>
|
|
8
|
+
<p>Persistent strip-shaped surfaces above the app shell. System banners (offline, maintenance, update available), live-update banners ("new since you opened this"), and announcement banners (beta callouts, promos). All three are <code>alert-ui</code> compositions; the variant + dismiss + CTA pattern is what differs. Content uses alert-ui's sectioned anatomy (gh#507) — semantic <code>header</code> / <code>section</code> / <code>footer</code> children inside <code>slot="content"</code>; the component owns the gaps, so banner spacing balances without per-banner layout improvisation.</p>
|
|
9
9
|
</header>
|
|
10
10
|
|
|
11
11
|
<section data-section data-property="when-to-use">
|
|
@@ -25,11 +25,14 @@
|
|
|
25
25
|
<p data-note><code>variant="warning"</code> with a network-slash icon. Non-dismissible while the connection is down. The banner disappears on its own when the network returns; users don't dismiss it manually.</p>
|
|
26
26
|
<div data-artifact-container>
|
|
27
27
|
<div data-artifact-item data-artifact-label="offline banner">
|
|
28
|
-
<alert-ui data-chunk="banner-system-offline"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
<alert-ui data-chunk="banner-system-offline" data-chunk-kind="block"
|
|
29
|
+
data-chunk-domain="error"
|
|
30
|
+
data-chunk-description="Offline banner — warning alert with wifi-slash icon: 'You're offline', changes sync when the connection returns, some features unavailable."
|
|
31
|
+
data-chunk-keywords="offline banner connection lost sync warning network unavailable degraded system status" variant="warning" icon="wifi-slash">
|
|
32
|
+
<div slot="content">
|
|
33
|
+
<header>You're offline.</header>
|
|
34
|
+
<section>Changes will sync when the connection returns. Some features are unavailable.</section>
|
|
35
|
+
</div>
|
|
33
36
|
</alert-ui>
|
|
34
37
|
</div>
|
|
35
38
|
</div>
|
|
@@ -40,14 +43,15 @@
|
|
|
40
43
|
<p data-note><code>variant="info"</code> with a wrench icon. Posted ahead of a planned outage. Carries the start time and an optional "Learn more" link to a status page. Not dismissible — users need to know.</p>
|
|
41
44
|
<div data-artifact-container>
|
|
42
45
|
<div data-artifact-item data-artifact-label="maintenance banner">
|
|
43
|
-
<alert-ui data-chunk="banner-system-maintenance"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
<alert-ui data-chunk="banner-system-maintenance" data-chunk-kind="block"
|
|
47
|
+
data-chunk-domain="error"
|
|
48
|
+
data-chunk-description="Scheduled-maintenance banner — info alert announcing the maintenance window (read-only during it) with a Status-page link action."
|
|
49
|
+
data-chunk-keywords="maintenance banner scheduled window read-only status page downtime info system announce" variant="info" icon="wrench">
|
|
50
|
+
<div slot="content">
|
|
51
|
+
<header>Scheduled maintenance — Sunday, 2:00–4:00 AM UTC.</header>
|
|
52
|
+
<section>The service will be read-only during this window.</section>
|
|
53
|
+
<footer><button-ui text="Status page" variant="ghost" size="sm" icon-trailing="arrow-up-right"></button-ui></footer>
|
|
54
|
+
</div>
|
|
51
55
|
</alert-ui>
|
|
52
56
|
</div>
|
|
53
57
|
</div>
|
|
@@ -58,14 +62,15 @@
|
|
|
58
62
|
<p data-note><code>variant="info"</code> with an arrow-clockwise icon and a primary "Refresh" CTA. Appears when the client detects a newer build. Dismissible (user is in the middle of something) but reappears on next session start.</p>
|
|
59
63
|
<div data-artifact-container>
|
|
60
64
|
<div data-artifact-item data-artifact-label="update available banner">
|
|
61
|
-
<alert-ui data-chunk="banner-system-update"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
<alert-ui data-chunk="banner-system-update" data-chunk-kind="block"
|
|
66
|
+
data-chunk-domain="error"
|
|
67
|
+
data-chunk-description="New-version banner — closable info alert saying a new version is available with a primary Refresh action to load it."
|
|
68
|
+
data-chunk-keywords="update banner new version refresh available closable deploy reload system notice" variant="info" icon="arrow-clockwise" closable>
|
|
69
|
+
<div slot="content">
|
|
70
|
+
<header>A new version is available.</header>
|
|
71
|
+
<section>Refresh to get the latest features and fixes.</section>
|
|
72
|
+
<footer><button-ui text="Refresh" variant="primary" size="sm"></button-ui></footer>
|
|
73
|
+
</div>
|
|
69
74
|
</alert-ui>
|
|
70
75
|
</div>
|
|
71
76
|
</div>
|
|
@@ -76,16 +81,15 @@
|
|
|
76
81
|
<p data-note><code>variant="info"</code> with a count + a "Show new" CTA. Sits above a list / feed / table to signal that the underlying data has new rows the user hasn't seen yet. Clicking the CTA scrolls the new items in and dismisses the banner. Companion to the <code>data-stream</code> trait.</p>
|
|
77
82
|
<div data-artifact-container>
|
|
78
83
|
<div data-artifact-item data-artifact-label="live update banner">
|
|
79
|
-
<alert-ui data-chunk="banner-live-update"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
</
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
</col-ui>
|
|
84
|
+
<alert-ui data-chunk="banner-live-update" data-chunk-kind="block"
|
|
85
|
+
data-chunk-domain="display"
|
|
86
|
+
data-chunk-description="Live-update banner — '12 new items since you opened this view' info alert with a Show-new action that jumps to the fresh content."
|
|
87
|
+
data-chunk-keywords="live update banner new items feed refresh show-new realtime stale view arrived" variant="info" icon="arrow-up">
|
|
88
|
+
<div slot="content">
|
|
89
|
+
<header>12 new items</header>
|
|
90
|
+
<section><text-ui color="subtle">since you opened this view 4 minutes ago.</text-ui></section>
|
|
91
|
+
<footer><button-ui text="Show new" variant="primary" size="sm" icon-trailing="arrow-up"></button-ui></footer>
|
|
92
|
+
</div>
|
|
89
93
|
</alert-ui>
|
|
90
94
|
</div>
|
|
91
95
|
</div>
|
|
@@ -96,14 +100,15 @@
|
|
|
96
100
|
<p data-note><code>variant="info"</code> or <code>variant="muted"</code> with a sparkle / flask icon. Promotes a new feature to opted-in users; carries a "Try it" CTA + dismiss. Once dismissed, persists per-user — don't show twice.</p>
|
|
97
101
|
<div data-artifact-container>
|
|
98
102
|
<div data-artifact-item data-artifact-label="beta announcement banner">
|
|
99
|
-
<alert-ui data-chunk="banner-announcement-beta"
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
<alert-ui data-chunk="banner-announcement-beta" data-chunk-kind="block"
|
|
104
|
+
data-chunk-domain="marketing"
|
|
105
|
+
data-chunk-description="Feature-announcement banner — closable muted alert introducing a beta feature ('New: Saved views') with a Try-it action."
|
|
106
|
+
data-chunk-keywords="announcement banner feature beta new try-it closable launch in-app promote" variant="muted" icon="sparkle" closable>
|
|
107
|
+
<div slot="content">
|
|
108
|
+
<header>New: Saved views.</header>
|
|
109
|
+
<section>Curate filter sets and reuse them across the workspace. Now in beta.</section>
|
|
110
|
+
<footer><button-ui text="Try it" variant="primary" size="sm"></button-ui></footer>
|
|
111
|
+
</div>
|
|
107
112
|
</alert-ui>
|
|
108
113
|
</div>
|
|
109
114
|
</div>
|
|
@@ -114,14 +119,15 @@
|
|
|
114
119
|
<p data-note><code>variant="info"</code> with a megaphone or calendar icon. Time-boxed (event date, promo end). Dismiss persists for the campaign window. CTA goes to the landing page or signup flow.</p>
|
|
115
120
|
<div data-artifact-container>
|
|
116
121
|
<div data-artifact-item data-artifact-label="promo announcement banner">
|
|
117
|
-
<alert-ui data-chunk="banner-announcement-promo"
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
<alert-ui data-chunk="banner-announcement-promo" data-chunk-kind="block"
|
|
123
|
+
data-chunk-domain="marketing"
|
|
124
|
+
data-chunk-description="Event-promo banner — closable info alert with megaphone icon promoting an event (date, one-line pitch) and a Save-your-seat CTA."
|
|
125
|
+
data-chunk-keywords="promo banner event conference announcement cta save-seat megaphone marketing closable" variant="info" icon="megaphone-simple" closable>
|
|
126
|
+
<div slot="content">
|
|
127
|
+
<header>UIConf 2026 — May 22, virtual.</header>
|
|
128
|
+
<section>Two days of sessions on generative UI, A2UI internals, and the road ahead.</section>
|
|
129
|
+
<footer><button-ui text="Save your seat" variant="primary" size="sm" icon-trailing="arrow-up-right"></button-ui></footer>
|
|
130
|
+
</div>
|
|
125
131
|
</alert-ui>
|
|
126
132
|
</div>
|
|
127
133
|
</div>
|
|
@@ -18,7 +18,10 @@
|
|
|
18
18
|
<p data-note>Type to filter by city, region, or offset. Default value resolved from the browser's locale; the current-tz hint sits under the input. Composes select-ui[searchable] with no new primitive.</p>
|
|
19
19
|
<div data-artifact-container>
|
|
20
20
|
<div data-artifact-item data-artifact-label="timezone picker">
|
|
21
|
-
<card-ui data-chunk="timezone-selector-basic"
|
|
21
|
+
<card-ui data-chunk="timezone-selector-basic" data-chunk-kind="block"
|
|
22
|
+
data-chunk-domain="settings"
|
|
23
|
+
data-chunk-description="Time-zone selector card — searchable select of time zones (search by city or region) used for log timestamps, reports and meeting times."
|
|
24
|
+
data-chunk-keywords="timezone selector searchable select city region utc offset settings locale timestamps display" style="max-width: 480px;">
|
|
22
25
|
<header>
|
|
23
26
|
<span slot="heading" variant="section">Display time zone</span>
|
|
24
27
|
<text-ui slot="description" color="subtle">Used for log timestamps, scheduled reports, and meeting times</text-ui>
|
|
@@ -41,7 +44,10 @@
|
|
|
41
44
|
<p data-note>The chosen zone's current local time updates in the description as the user changes the picker. Useful for "Send at" / "Schedule report" forms where the time-in-target matters more than the offset.</p>
|
|
42
45
|
<div data-artifact-container>
|
|
43
46
|
<div data-artifact-item data-artifact-label="timezone picker with preview">
|
|
44
|
-
<card-ui data-chunk="timezone-selector-preview"
|
|
47
|
+
<card-ui data-chunk="timezone-selector-preview" data-chunk-kind="block"
|
|
48
|
+
data-chunk-domain="settings"
|
|
49
|
+
data-chunk-description="Schedule with time-zone preview — searchable time-zone select plus a time field, and a live preview line showing the equivalent local times for recipients."
|
|
50
|
+
data-chunk-keywords="timezone selector schedule report preview local time equivalent recipients searchable convert" style="max-width: 480px;">
|
|
45
51
|
<header>
|
|
46
52
|
<span slot="heading" variant="section">Schedule report</span>
|
|
47
53
|
</header>
|
|
@@ -36,7 +36,9 @@ function timezoneOptions() {
|
|
|
36
36
|
}
|
|
37
37
|
return zones.map(tz => ({
|
|
38
38
|
value: tz,
|
|
39
|
-
|
|
39
|
+
// Display drops the IANA underscores (gh#538) — "America/Los Angeles"
|
|
40
|
+
// reads human and matches a spaced query; value keeps the exact id.
|
|
41
|
+
label: `${tz.replace(/_/g, ' ')} · ${offsetLabel(tz)}`,
|
|
40
42
|
}));
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -22,19 +22,23 @@
|
|
|
22
22
|
<p data-note>Stepper header, step body, Back/Next footer. The interactive buttons below advance the stepper and switch the body panel.</p>
|
|
23
23
|
<div data-artifact-container>
|
|
24
24
|
<div data-artifact-item data-artifact-label="wizard">
|
|
25
|
-
<button-ui
|
|
26
|
-
<drawer-ui
|
|
25
|
+
<button-ui id="pat-wizard-open" text="Create workspace" icon="plus" variant="primary"></button-ui>
|
|
26
|
+
<drawer-ui data-chunk="wizard-drawer-three-step-wizard" data-chunk-kind="block"
|
|
27
|
+
data-chunk-domain="onboarding"
|
|
28
|
+
data-chunk-description="Three-step wizard drawer — 'Create workspace' with a stepper (Details / Members / Review) in the header, per-step form bodies, and Back / Next footer navigation."
|
|
29
|
+
data-chunk-keywords="wizard drawer steps stepper create workspace details members review multi-step back next flow setup" id="pat-wizard" side="right" size="lg">
|
|
27
30
|
<header slot="header">
|
|
28
|
-
<
|
|
29
|
-
<text-ui strong>Create workspace</text-ui>
|
|
30
|
-
<stepper-ui id="pat-wizard-stepper" step="0">
|
|
31
|
-
<stepper-item-ui text="Details"></stepper-item-ui>
|
|
32
|
-
<stepper-item-ui text="Members"></stepper-item-ui>
|
|
33
|
-
<stepper-item-ui text="Review"></stepper-item-ui>
|
|
34
|
-
</stepper-ui>
|
|
35
|
-
</col-ui>
|
|
31
|
+
<text-ui strong>Create workspace</text-ui>
|
|
36
32
|
</header>
|
|
37
33
|
<section slot="body">
|
|
34
|
+
<!-- Stepper is a CONTENT block above the step panels, not header
|
|
35
|
+
chrome (operator ruling 2026-07-30): header / content(stepper)
|
|
36
|
+
/ content / footer. -->
|
|
37
|
+
<stepper-ui id="pat-wizard-stepper" step="0">
|
|
38
|
+
<stepper-item-ui text="Details"></stepper-item-ui>
|
|
39
|
+
<stepper-item-ui text="Members"></stepper-item-ui>
|
|
40
|
+
<stepper-item-ui text="Review"></stepper-item-ui>
|
|
41
|
+
</stepper-ui>
|
|
38
42
|
<div data-wizard-step="0">
|
|
39
43
|
<col-ui gap="3">
|
|
40
44
|
<h4>Workspace details</h4>
|
|
@@ -71,7 +75,7 @@
|
|
|
71
75
|
<col-ui gap="3">
|
|
72
76
|
<h4>Review and create</h4>
|
|
73
77
|
<alert-ui text="Your workspace will be created and team members will be invited by email." variant="info" icon="info"></alert-ui>
|
|
74
|
-
<description-list-ui>
|
|
78
|
+
<description-list-ui layout="inline">
|
|
75
79
|
<dt>Name</dt><dd>Acme Team</dd>
|
|
76
80
|
<dt>Slug</dt><dd>/acme-team</dd>
|
|
77
81
|
<dt>Members</dt><dd>2 invited</dd>
|
|
@@ -85,7 +89,7 @@
|
|
|
85
89
|
<button-ui id="pat-wizard-back" text="Back" variant="ghost" disabled></button-ui>
|
|
86
90
|
</span>
|
|
87
91
|
<span slot="action">
|
|
88
|
-
<button-ui text="Cancel" variant="ghost"
|
|
92
|
+
<button-ui id="pat-wizard-cancel" text="Cancel" variant="ghost"></button-ui>
|
|
89
93
|
<button-ui id="pat-wizard-next" text="Next" variant="primary"></button-ui>
|
|
90
94
|
</span>
|
|
91
95
|
</footer>
|
|
@@ -98,20 +102,18 @@
|
|
|
98
102
|
<h2 variant="section">Anatomy</h2>
|
|
99
103
|
<code-ui language="html"><drawer-ui side="right" size="lg">
|
|
100
104
|
|
|
101
|
-
<!--
|
|
105
|
+
<!-- header carries the title only -->
|
|
102
106
|
<header slot="header">
|
|
103
|
-
<
|
|
104
|
-
<text-ui weight="semibold">Create workspace</text-ui>
|
|
105
|
-
<stepper-ui step="0">
|
|
106
|
-
<stepper-item-ui text="Details"></stepper-item-ui>
|
|
107
|
-
<stepper-item-ui text="Members"></stepper-item-ui>
|
|
108
|
-
<stepper-item-ui text="Review"></stepper-item-ui>
|
|
109
|
-
</stepper-ui>
|
|
110
|
-
</col-ui>
|
|
107
|
+
<text-ui weight="semibold">Create workspace</text-ui>
|
|
111
108
|
</header>
|
|
112
109
|
|
|
113
|
-
<!--
|
|
110
|
+
<!-- stepper is the FIRST content block, then one panel per step -->
|
|
114
111
|
<section slot="body">
|
|
112
|
+
<stepper-ui step="0">
|
|
113
|
+
<stepper-item-ui text="Details"></stepper-item-ui>
|
|
114
|
+
<stepper-item-ui text="Members"></stepper-item-ui>
|
|
115
|
+
<stepper-item-ui text="Review"></stepper-item-ui>
|
|
116
|
+
</stepper-ui>
|
|
115
117
|
<div data-wizard-step="0"> ...details... </div>
|
|
116
118
|
<div data-wizard-step="1" hidden> ...members... </div>
|
|
117
119
|
<div data-wizard-step="2" hidden> ...review... </div>
|
|
@@ -134,7 +136,7 @@
|
|
|
134
136
|
<section data-section data-property="rules">
|
|
135
137
|
<h2 variant="section">Rules</h2>
|
|
136
138
|
<ul>
|
|
137
|
-
<li>Stepper is
|
|
139
|
+
<li>Stepper is the <strong>first content block</strong> of the body — <code>header / content (stepper) / content / footer</code> (operator ruling 2026-07-30); the header carries the title only. Review steps use <code>description-list-ui layout="inline"</code>, the responsive two-column property|value settings layout.</li>
|
|
138
140
|
<li>Use <code>stepper-ui.step</code> (numeric) as the source of truth. Toggle <code>hidden</code> on <code>[data-wizard-step="N"]</code> to swap panels.</li>
|
|
139
141
|
<li>The primary action label changes on the last step: "Next" → "Create" / "Finish". Back button is disabled on step 0.</li>
|
|
140
142
|
<li>Every step validates independently before advancing. Advance triggers <code>.next()</code> on the stepper AND unhides the next panel.</li>
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
/** Wizard drawer pattern — wire stepper to step-panel swap
|
|
1
|
+
/** Wizard drawer pattern — wire stepper to step-panel swap.
|
|
2
|
+
*
|
|
3
|
+
* ALL interactivity lives here, none inline (gh#506): the site route
|
|
4
|
+
* renders the markup through the A2UI pipeline, which does not execute
|
|
5
|
+
* inline onclick handlers — an onclick-opened drawer demo is dead on
|
|
6
|
+
* /site/patterns/wizard-drawer. The route's `setup` module (this file)
|
|
7
|
+
* DOES run there, so the open/cancel triggers wire here like Back/Next. */
|
|
2
8
|
|
|
3
9
|
export default function setup(router) {
|
|
4
10
|
const stepper = router.querySelector('#pat-wizard-stepper');
|
|
5
11
|
const backBtn = router.querySelector('#pat-wizard-back');
|
|
6
12
|
const nextBtn = router.querySelector('#pat-wizard-next');
|
|
7
13
|
const drawer = router.querySelector('#pat-wizard');
|
|
14
|
+
const openBtn = router.querySelector('#pat-wizard-open');
|
|
15
|
+
const cancelBtn = router.querySelector('#pat-wizard-cancel');
|
|
8
16
|
if (!stepper || !backBtn || !nextBtn || !drawer) return;
|
|
9
17
|
|
|
18
|
+
openBtn?.addEventListener('press', () => { drawer.open = true; });
|
|
19
|
+
cancelBtn?.addEventListener('press', () => { drawer.open = false; });
|
|
20
|
+
|
|
10
21
|
const total = 3;
|
|
11
22
|
let step = 0;
|
|
12
23
|
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
:root {
|
|
14
|
-
--a-radius-min: 0.
|
|
15
|
-
--a-radius-max:
|
|
14
|
+
--a-radius-min: 0.375rem; /* 6px — operator ruling 2026-07-30 */
|
|
15
|
+
--a-radius-max: 0.875rem; /* 14px */
|
|
16
16
|
/* §230-bundle (v0.5.9): xs scale notch added for badge / sub-tile / inline-pill use cases needing smaller radius than `sm`. */
|
|
17
17
|
--a-radius-xs-k: 0.166;
|
|
18
18
|
--a-radius-sm-k: 0.333;
|
package/styles/scale.css
CHANGED
|
@@ -115,8 +115,8 @@
|
|
|
115
115
|
--a-gap-xl: calc(var(--a-space-4) * var(--a-gap-k)); /* 16px @k=1 */
|
|
116
116
|
--a-gap: var(--a-gap-md);
|
|
117
117
|
|
|
118
|
-
--a-radius-min: 0.
|
|
119
|
-
--a-radius-max:
|
|
118
|
+
--a-radius-min: 0.375rem; /* 6px — operator ruling 2026-07-30; byte-copy of foundation/radius.css */
|
|
119
|
+
--a-radius-max: 0.875rem; /* 14px */
|
|
120
120
|
--a-radius-xs: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-xs-k)), var(--a-radius-max));
|
|
121
121
|
--a-radius-sm: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-sm-k)), var(--a-radius-max));
|
|
122
122
|
--a-radius-md: clamp(var(--a-radius-min), calc(var(--a-radius-k) * var(--a-radius-max) * var(--a-radius-md-k)), var(--a-radius-max));
|
package/styles/type/scale.css
CHANGED
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
--a-font-family-code: var(--a-font-family-mono);
|
|
20
20
|
--a-font-family-control: var(--a-font-family-mono);
|
|
21
21
|
--a-font-family: var(--a-font-family-sans);
|
|
22
|
-
/*
|
|
23
|
-
|
|
24
|
-
(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
/* `--a-font` (the pre-ADR-0035 back-compat alias) was REMOVED in 0.8.23
|
|
23
|
+
(gh ruling 2026-07-30; prerequisite in-repo sweep 2026-07-29). A
|
|
24
|
+
surviving `var(--a-font)` reference goes invalid-at-computed-value-time
|
|
25
|
+
→ inherit → UA serif — see MIGRATION GUIDE §0.9.0; the
|
|
26
|
+
audit-font-family-floor gate and forge/factory lint rules flag any
|
|
27
|
+
usage. */
|
|
28
28
|
|
|
29
29
|
/* ── Type scale ──
|
|
30
30
|
Ratio: ~1.25 (major third) with dramatic hero jump.
|