@adia-ai/web-components 0.8.21 → 0.8.23
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 +56 -0
- package/MIGRATION.md +9 -0
- package/components/agent-trace/agent-trace.js +4 -1
- package/components/alert/alert.a2ui.json +1 -1
- package/components/alert/alert.css +44 -5
- package/components/alert/alert.yaml +8 -4
- package/components/canvas/canvas.js +4 -1
- package/components/chat-thread/chat-input.js +4 -1
- package/components/code/code.css +29 -26
- package/components/combobox/combobox.a2ui.json +1 -1
- package/components/combobox/combobox.class.js +14 -4
- package/components/combobox/combobox.css +52 -4
- package/components/combobox/combobox.yaml +5 -1
- package/components/description-list/description-list.css +9 -0
- package/components/drawer/drawer.css +16 -0
- package/components/field/field.css +4 -1
- package/components/list/list.css +12 -1
- package/components/nav-group/nav-group.class.js +45 -2
- package/components/nav-group/nav-group.css +11 -2
- 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 +39 -9
- package/components/select/select.yaml +13 -0
- package/components/stat/stat.js +4 -1
- package/components/stepper/stepper.css +25 -20
- 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/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 +20 -5
- 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 +4 -1
- package/patterns/chart-in-card/chart-in-card.examples.html +28 -7
- package/patterns/comments-and-collaboration/comments-and-collaboration.examples.html +20 -5
- 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 +15 -6
- 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 +24 -6
- package/patterns/notifications-bell-and-digest/notifications-bell-and-digest.examples.html +12 -3
- 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 +16 -4
- 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
|
@@ -24,7 +24,10 @@
|
|
|
24
24
|
<p data-note>Each role gets an <code>option-card-ui</code> with name, one-line description, and (optionally) a "recommended" badge. Default selection lands on the lowest-privilege role — promote-by-decision, not by accident.</p>
|
|
25
25
|
<div data-artifact-container>
|
|
26
26
|
<div data-artifact-item data-artifact-label="rich role picker">
|
|
27
|
-
<field-ui data-chunk="permissions-role-picker-radio"
|
|
27
|
+
<field-ui data-chunk="permissions-role-picker-radio" data-chunk-kind="block"
|
|
28
|
+
data-chunk-domain="settings"
|
|
29
|
+
data-chunk-description="Role picker as option cards — Viewer / Member / Admin / Owner radio cards, each with a heading and a capability description, Admin tagged 'Recommended for leads'."
|
|
30
|
+
data-chunk-keywords="role picker option cards radio viewer member admin owner permissions capabilities choose select recommended" label="Role" hint="Members can be promoted to admin later by any owner.">
|
|
28
31
|
<col-ui gap="2">
|
|
29
32
|
<option-card-ui name="role" value="viewer" heading="Viewer" description="Can read everything; cannot edit, comment, or share."></option-card-ui>
|
|
30
33
|
<option-card-ui name="role" value="member" heading="Member" description="Can edit content they own and comment on anything." checked></option-card-ui>
|
|
@@ -43,7 +46,10 @@
|
|
|
43
46
|
<p data-note>Used inside a members table. The select replaces the static role tag on row-hover, or stays inline when the table is in edit mode. Falls back to a non-interactive <code>tag-ui</code> when the current user can't change roles.</p>
|
|
44
47
|
<div data-artifact-container>
|
|
45
48
|
<div data-artifact-item data-artifact-label="role select inline">
|
|
46
|
-
<row-ui data-chunk="permissions-role-picker-select"
|
|
49
|
+
<row-ui data-chunk="permissions-role-picker-select" data-chunk-kind="block"
|
|
50
|
+
data-chunk-domain="settings"
|
|
51
|
+
data-chunk-description="Member row with role select — avatar, name and email, and a compact role dropdown (Viewer / Member / Admin) trailing; the per-member row of a members list."
|
|
52
|
+
data-chunk-keywords="member row role select dropdown avatar email permissions change assign compact inline list" gap="3" align="center" padding="2" style="max-width: 480px;">
|
|
47
53
|
<avatar-ui size="sm" text="Kim Granlund"></avatar-ui>
|
|
48
54
|
<col-ui gap="0" grow>
|
|
49
55
|
<text-ui strong>Kim Granlund</text-ui>
|
|
@@ -25,7 +25,10 @@
|
|
|
25
25
|
<p data-note>Four scopes as <code>option-card-ui</code> in a stacked radio group: Private, Link, Organization, Public. Each shows the audience and the action the user takes after picking.</p>
|
|
26
26
|
<div data-artifact-container>
|
|
27
27
|
<div data-artifact-item data-artifact-label="visibility scope picker">
|
|
28
|
-
<field-ui data-chunk="permissions-sharing-scopes"
|
|
28
|
+
<field-ui data-chunk="permissions-sharing-scopes" data-chunk-kind="block"
|
|
29
|
+
data-chunk-domain="settings"
|
|
30
|
+
data-chunk-description="Sharing-scope picker — option cards for Private, Anyone with the link, Anyone in your workspace, and Public on the web (warning-tagged Indexable), each with an icon and consequence description."
|
|
31
|
+
data-chunk-keywords="sharing scope access private link workspace public option cards visibility permissions who-can-access indexable" label="Who can access this dashboard?">
|
|
29
32
|
<col-ui gap="2">
|
|
30
33
|
<option-card-ui name="scope" value="private" heading="Private" description="Only people you've added explicitly." icon="lock" checked></option-card-ui>
|
|
31
34
|
<option-card-ui name="scope" value="link" heading="Anyone with the link" description="No sign-in required. Link can be revoked anytime." icon="link"></option-card-ui>
|
|
@@ -44,7 +47,10 @@
|
|
|
44
47
|
<p data-note>Surfaces when the user picks Link or Public scope. Generated URL with copy button; <code>select-ui</code> for expiry; revoke button as a danger-tone secondary action.</p>
|
|
45
48
|
<div data-artifact-container>
|
|
46
49
|
<div data-artifact-item data-artifact-label="share link with expiry">
|
|
47
|
-
<card-ui data-chunk="permissions-share-link"
|
|
50
|
+
<card-ui data-chunk="permissions-share-link" data-chunk-kind="block"
|
|
51
|
+
data-chunk-domain="settings"
|
|
52
|
+
data-chunk-description="Share-link card — readonly share URL with Copy button, current scope tag, and link options (permission level select, expiry); revoke action included."
|
|
53
|
+
data-chunk-keywords="share link copy url scope anyone expiry revoke permission level readonly collaborate" style="max-width: 560px;">
|
|
48
54
|
<header>
|
|
49
55
|
<span slot="heading" variant="section">Share link</span>
|
|
50
56
|
<tag-ui slot="action" variant="accent" size="sm">Anyone with the link</tag-ui>
|
|
@@ -94,7 +100,10 @@
|
|
|
94
100
|
<p data-note>Surfaces in the Private and Org scopes. Autocomplete <code>search-ui</code> for people; per-row <code>select-ui</code> for the access role; existing-shares list below the input.</p>
|
|
95
101
|
<div data-artifact-container>
|
|
96
102
|
<div data-artifact-item data-artifact-label="add people share">
|
|
97
|
-
<card-ui data-chunk="permissions-share-people"
|
|
103
|
+
<card-ui data-chunk="permissions-share-people" data-chunk-kind="block"
|
|
104
|
+
data-chunk-domain="settings"
|
|
105
|
+
data-chunk-description="Share-with-people card — add-by-name-or-email search with a permission select beside it, over rows of people who already have access with per-person role dropdowns."
|
|
106
|
+
data-chunk-keywords="share people invite email search permission role viewer editor access list collaborate manage" style="max-width: 560px;">
|
|
98
107
|
<header>
|
|
99
108
|
<span slot="heading" variant="section">Share with people</span>
|
|
100
109
|
</header>
|
package/patterns/profile-public-and-verification/profile-public-and-verification.examples.html
CHANGED
|
@@ -27,7 +27,10 @@
|
|
|
27
27
|
<p data-note>Shareable user/team page. Header: large avatar, display name, optional verified badge, role/title, location, joined date. Body: bio, social links, stats grid (`stat-ui` × N), recent public work. The verified badge means identity-verified (16e), not "important user".</p>
|
|
28
28
|
<div data-artifact-container>
|
|
29
29
|
<div data-artifact-item data-artifact-label="public profile">
|
|
30
|
-
<card-ui data-chunk="profile-public"
|
|
30
|
+
<card-ui data-chunk="profile-public" data-chunk-kind="block"
|
|
31
|
+
data-chunk-domain="display"
|
|
32
|
+
data-chunk-description="Public profile card — large avatar, name with Verified seal tag, handle and bio, follower/following stats, skill tags, and Follow / Message actions."
|
|
33
|
+
data-chunk-keywords="profile public avatar verified bio handle stats followers skills tags follow message social card identity" style="max-width: 720px;">
|
|
31
34
|
<section>
|
|
32
35
|
<col-ui gap="4">
|
|
33
36
|
<row-ui gap="4" align="start">
|
|
@@ -86,7 +89,10 @@
|
|
|
86
89
|
<p data-note>The progress indicator across the verification flow. Steps: Personal info → Document upload → Selfie → Review. Uses <code>stepper-ui</code> with completed states. Each step is a separate page (or drawer step), not a single long form.</p>
|
|
87
90
|
<div data-artifact-container>
|
|
88
91
|
<div data-artifact-item data-artifact-label="verification stepper">
|
|
89
|
-
<card-ui data-chunk="verification-stepper"
|
|
92
|
+
<card-ui data-chunk="verification-stepper" data-chunk-kind="block"
|
|
93
|
+
data-chunk-domain="auth"
|
|
94
|
+
data-chunk-description="Identity-verification stepper card — 'Verify your identity' with a horizontal stepper (Personal info / Document / Review) showing progress through the KYC flow."
|
|
95
|
+
data-chunk-keywords="verification identity stepper kyc personal-info document review progress steps payouts compliance" style="max-width: 720px;">
|
|
90
96
|
<header>
|
|
91
97
|
<span slot="heading" variant="section">Verify your identity</span>
|
|
92
98
|
<text-ui slot="description" color="subtle">Required for payouts and agent-driven transactions over $1,000</text-ui>
|
|
@@ -109,7 +115,10 @@
|
|
|
109
115
|
<p data-note>The document-capture step. <code>upload-ui</code> with `accept="image/*,.pdf"`, hint about supported formats, and security copy explaining what happens to the file. Front + back uploads for ID cards.</p>
|
|
110
116
|
<div data-artifact-container>
|
|
111
117
|
<div data-artifact-item data-artifact-label="document upload">
|
|
112
|
-
<card-ui data-chunk="verification-document-upload"
|
|
118
|
+
<card-ui data-chunk="verification-document-upload" data-chunk-kind="block"
|
|
119
|
+
data-chunk-domain="auth"
|
|
120
|
+
data-chunk-description="ID document upload card — document-type select (passport / driver's license / national ID) and front/back upload dropzones with acceptance hints."
|
|
121
|
+
data-chunk-keywords="verification document upload id passport license dropzone front back kyc identity file government" style="max-width: 640px;">
|
|
113
122
|
<header>
|
|
114
123
|
<span slot="heading" variant="section">Upload your government-issued ID</span>
|
|
115
124
|
<text-ui slot="description" color="subtle">Passport, driver's license, or national ID card</text-ui>
|
|
@@ -147,7 +156,10 @@
|
|
|
147
156
|
<p data-note>The post-submission states the user sees while the system reviews. Three flavors: pending review (clock), verified (seal-check primary), rejected (warning). Each is a card-ui with status alert + next-action.</p>
|
|
148
157
|
<div data-artifact-container>
|
|
149
158
|
<div data-artifact-item data-artifact-label="verification pending">
|
|
150
|
-
<card-ui data-chunk="verification-status"
|
|
159
|
+
<card-ui data-chunk="verification-status" data-chunk-kind="block"
|
|
160
|
+
data-chunk-domain="auth"
|
|
161
|
+
data-chunk-description="Verification-submitted status card — info alert stating the review window (within 1 business day) and that email follows on approval or if more info is needed."
|
|
162
|
+
data-chunk-keywords="verification submitted status under-review pending email kyc identity waiting alert info" style="max-width: 480px;">
|
|
151
163
|
<header>
|
|
152
164
|
<span slot="heading" variant="section">Verification submitted</span>
|
|
153
165
|
</header>
|
|
@@ -22,8 +22,11 @@
|
|
|
22
22
|
<p data-note>Identity in the header, key/value properties in the body, primary action in the footer.</p>
|
|
23
23
|
<div data-artifact-container>
|
|
24
24
|
<div data-artifact-item data-artifact-label="simple detail">
|
|
25
|
-
<button-ui
|
|
26
|
-
<drawer-ui
|
|
25
|
+
<button-ui text="View contact" icon="user" variant="outline" onclick="this.nextElementSibling.open=true"></button-ui>
|
|
26
|
+
<drawer-ui data-chunk="record-detail-drawer-simple-detail" data-chunk-kind="block"
|
|
27
|
+
data-chunk-domain="data"
|
|
28
|
+
data-chunk-description="Record detail drawer — contact inspector with avatar, name, company and Active badge in the header, and a description-list body of the record's fields."
|
|
29
|
+
data-chunk-keywords="record detail drawer contact inspector avatar company badge fields description-list side panel view crm" side="right" size="md">
|
|
27
30
|
<header slot="header">
|
|
28
31
|
<row-ui gap="2" align="center" grow>
|
|
29
32
|
<avatar-ui text="Olivia Martin" size="md"></avatar-ui>
|
|
@@ -61,8 +64,11 @@
|
|
|
61
64
|
<p data-note>Tabs sit directly under the header so switching views doesn't require scrolling. Each tab's panel scrolls independently inside the body.</p>
|
|
62
65
|
<div data-artifact-container>
|
|
63
66
|
<div data-artifact-item data-artifact-label="tabbed detail">
|
|
64
|
-
<button-ui
|
|
65
|
-
<drawer-ui
|
|
67
|
+
<button-ui text="Open issue" icon="bug" variant="outline" onclick="this.nextElementSibling.open=true"></button-ui>
|
|
68
|
+
<drawer-ui data-chunk="record-detail-drawer-tabbed-detail" data-chunk-kind="block"
|
|
69
|
+
data-chunk-domain="data"
|
|
70
|
+
data-chunk-description="Tabbed record detail drawer — issue inspector with id badge, title, and status/priority badges in the header, and tabs (Details / Activity / Comments) organizing the body."
|
|
71
|
+
data-chunk-keywords="record detail drawer tabbed issue inspector badges status priority tabs activity comments side panel tracker" side="right" size="lg">
|
|
66
72
|
<header slot="header">
|
|
67
73
|
<col-ui gap="1" grow>
|
|
68
74
|
<row-ui gap="2" align="center">
|
|
@@ -25,13 +25,16 @@
|
|
|
25
25
|
<p data-note>Each week-column uses the same <code>formatPct</code> renderer, which wraps the number in a <code>badge-ui</code> whose variant is keyed to three buckets: ≥60% success, 30–60% warning, <30% muted. Null values render blank so partial cohorts don't force fake zeros.</p>
|
|
26
26
|
<div data-artifact-container>
|
|
27
27
|
<div data-artifact-item data-artifact-label="retention by signup week">
|
|
28
|
-
<card-ui data-chunk="retention-cohort-default-retention"
|
|
28
|
+
<card-ui data-chunk="retention-cohort-default-retention" data-chunk-kind="block"
|
|
29
|
+
data-chunk-domain="dashboard"
|
|
30
|
+
data-chunk-description="Retention cohort table card — 'Retention by signup week' heatmap-style table of % still active in week N per cohort row."
|
|
31
|
+
data-chunk-keywords="retention cohort table heatmap signup week active percentage analytics churn matrix">
|
|
29
32
|
<header>
|
|
30
33
|
<h3>Retention by signup week</h3>
|
|
31
34
|
<text-ui slot="description" color="subtle">% of users still active in week N</text-ui>
|
|
32
35
|
</header>
|
|
33
36
|
<section bleed>
|
|
34
|
-
<table-ui id="pat-retention-default"></table-ui>
|
|
37
|
+
<table-ui frameless id="pat-retention-default"></table-ui>
|
|
35
38
|
</section>
|
|
36
39
|
</card-ui>
|
|
37
40
|
</div>
|
|
@@ -43,13 +46,16 @@
|
|
|
43
46
|
<p data-note>For first-time viewers, pair the table with a tiny legend in the card footer so the buckets are decoded. The legend itself is three <code>badge-ui</code>s — same component the cells use — keeping the visual vocabulary tight.</p>
|
|
44
47
|
<div data-artifact-container>
|
|
45
48
|
<div data-artifact-item data-artifact-label="retention with legend">
|
|
46
|
-
<card-ui data-chunk="retention-cohort-with-legend"
|
|
49
|
+
<card-ui data-chunk="retention-cohort-with-legend" data-chunk-kind="block"
|
|
50
|
+
data-chunk-domain="dashboard"
|
|
51
|
+
data-chunk-description="Retention cohort table with legend footer — the cohort heatmap table plus a divider footer explaining the color scale and reading direction."
|
|
52
|
+
data-chunk-keywords="retention cohort table legend footer color scale heatmap signup week analytics explain">
|
|
47
53
|
<header>
|
|
48
54
|
<h3>Retention by signup week</h3>
|
|
49
55
|
<text-ui slot="description" color="subtle">Percent of the cohort still active N weeks after signup</text-ui>
|
|
50
56
|
</header>
|
|
51
57
|
<section bleed>
|
|
52
|
-
<table-ui id="pat-retention-legend"></table-ui>
|
|
58
|
+
<table-ui frameless id="pat-retention-legend"></table-ui>
|
|
53
59
|
</section>
|
|
54
60
|
<footer divider>
|
|
55
61
|
<small slot="description">Retention buckets:</small>
|
|
@@ -71,7 +77,10 @@
|
|
|
71
77
|
<p data-note>When the cohort table is the only chart in a section, prepend a stat pair for the most important numbers — W4 (early signal) and W12 (sustained retention). Stops users having to scan every row to answer "is this healthy?"</p>
|
|
72
78
|
<div data-artifact-container>
|
|
73
79
|
<div data-artifact-item data-artifact-label="retention with stats">
|
|
74
|
-
<card-ui data-chunk="retention-cohort-stat-pair"
|
|
80
|
+
<card-ui data-chunk="retention-cohort-stat-pair" data-chunk-kind="block"
|
|
81
|
+
data-chunk-domain="dashboard"
|
|
82
|
+
data-chunk-description="Retention stat pair — two side-by-side stat cards (week-1 and week-6 retention with deltas) summarizing the cohort table's headline numbers."
|
|
83
|
+
data-chunk-keywords="retention stats pair week-1 week-6 delta summary cards cohort headline analytics">
|
|
75
84
|
<header>
|
|
76
85
|
<h3>Retention</h3>
|
|
77
86
|
<text-ui slot="description" color="subtle">New signups · rolling 6-week view</text-ui>
|
|
@@ -91,7 +100,7 @@
|
|
|
91
100
|
</grid-ui>
|
|
92
101
|
</section>
|
|
93
102
|
<section bleed>
|
|
94
|
-
<table-ui id="pat-retention-stats"></table-ui>
|
|
103
|
+
<table-ui frameless id="pat-retention-stats"></table-ui>
|
|
95
104
|
</section>
|
|
96
105
|
</card-ui>
|
|
97
106
|
</div>
|
|
@@ -24,7 +24,10 @@
|
|
|
24
24
|
<p data-note>Flat ranked list. Each row carries a title, snippet, meta (author / date / type), and an optional trailing action. <code>list-ui</code> + <code>list-item-ui</code> with <code>tag-ui</code> for the type.</p>
|
|
25
25
|
<div data-artifact-container>
|
|
26
26
|
<div data-artifact-item data-artifact-label="search results list">
|
|
27
|
-
<card-ui data-chunk="search-results-list"
|
|
27
|
+
<card-ui data-chunk="search-results-list" data-chunk-kind="block"
|
|
28
|
+
data-chunk-domain="data"
|
|
29
|
+
data-chunk-description="Search results list card — result-count header ('42 results for …', sorted by relevance with timing) over rows of title plus matched-snippet descriptions."
|
|
30
|
+
data-chunk-keywords="search results list count relevance snippet matches query rows discovery find">
|
|
28
31
|
<header>
|
|
29
32
|
<span slot="heading" variant="section">42 results for "OKLCH tokens"</span>
|
|
30
33
|
<text-ui slot="description" color="subtle">Sorted by relevance · 0.18s</text-ui>
|
|
@@ -63,7 +66,10 @@
|
|
|
63
66
|
<p data-note>Sectioned by type when the catalog is heterogeneous (Documents / People / Projects). Each group shows top 3–5; "See all in {group}" links to a filtered view.</p>
|
|
64
67
|
<div data-artifact-container>
|
|
65
68
|
<div data-artifact-item data-artifact-label="grouped search results">
|
|
66
|
-
<card-ui data-chunk="search-results-grouped"
|
|
69
|
+
<card-ui data-chunk="search-results-grouped" data-chunk-kind="block"
|
|
70
|
+
data-chunk-domain="data"
|
|
71
|
+
data-chunk-description="Grouped search results card — one query across entity groups (People · Documents · Projects), each group with a subtle count header band over its result rows."
|
|
72
|
+
data-chunk-keywords="search results grouped entities people documents projects sections count global omnisearch discovery" style="max-width: 640px;">
|
|
67
73
|
<header>
|
|
68
74
|
<span slot="heading" variant="section">"kim"</span>
|
|
69
75
|
<text-ui slot="description" color="subtle">Across people, documents, and projects</text-ui>
|
|
@@ -135,7 +141,10 @@
|
|
|
135
141
|
<p data-note>Popover that appears when the search input is focused but empty. Recent queries with most-recent-first ordering, a "Clear" action in the footer. Each row reruns the query on click; trailing icon dismisses a single entry.</p>
|
|
136
142
|
<div data-artifact-container>
|
|
137
143
|
<div data-artifact-item data-artifact-label="recent searches menu">
|
|
138
|
-
<card-ui data-chunk="search-recents-menu"
|
|
144
|
+
<card-ui data-chunk="search-recents-menu" data-chunk-kind="block"
|
|
145
|
+
data-chunk-domain="data"
|
|
146
|
+
data-chunk-description="Recent searches menu — 'Recent' list of past queries with clock icons and per-row dismiss buttons, shown before the user types."
|
|
147
|
+
data-chunk-keywords="search recent history queries clock dismiss menu suggestions empty-query discovery" style="max-width: 360px;">
|
|
139
148
|
<header>
|
|
140
149
|
<span slot="heading" variant="section">Recent</span>
|
|
141
150
|
</header>
|
|
@@ -172,7 +181,10 @@
|
|
|
172
181
|
<p data-note>List of curated queries the user has named and pinned. Each row shows the view name, a short description (or active filter chips), last-run time, and edit/share/delete actions. Used for "My open issues", "Q2 customer escalations", etc.</p>
|
|
173
182
|
<div data-artifact-container>
|
|
174
183
|
<div data-artifact-item data-artifact-label="saved views list">
|
|
175
|
-
<card-ui data-chunk="search-saved-views"
|
|
184
|
+
<card-ui data-chunk="search-saved-views" data-chunk-kind="block"
|
|
185
|
+
data-chunk-domain="data"
|
|
186
|
+
data-chunk-description="Saved searches card — named saved views as rows with query summary and result counts, plus a primary Save-current-view header action."
|
|
187
|
+
data-chunk-keywords="saved views searches named bookmark list rows counts save-current filters presets discovery">
|
|
176
188
|
<header>
|
|
177
189
|
<span slot="heading" variant="section">Saved views</span>
|
|
178
190
|
<text-ui slot="description" color="subtle">5 views · last edited 2 days ago</text-ui>
|
|
@@ -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));
|