@adia-ai/web-components 0.6.20 → 0.6.22
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 +72 -0
- package/components/accordion/accordion-item.a2ui.json +20 -3
- package/components/accordion/accordion-item.yaml +24 -0
- package/components/accordion/accordion.a2ui.json +1 -1
- package/components/accordion/accordion.d.ts +8 -1
- package/components/accordion/accordion.yaml +15 -2
- package/components/action-list/action-item.a2ui.json +19 -3
- package/components/action-list/action-item.yaml +24 -0
- package/components/action-list/action-list.a2ui.json +12 -2
- package/components/action-list/action-list.yaml +13 -3
- package/components/agent-artifact/agent-artifact.a2ui.json +9 -2
- package/components/agent-artifact/agent-artifact.d.ts +1 -1
- package/components/agent-artifact/agent-artifact.yaml +17 -3
- package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +9 -2
- package/components/agent-feedback-bar/agent-feedback-bar.d.ts +8 -1
- package/components/agent-feedback-bar/agent-feedback-bar.yaml +19 -3
- package/components/agent-questions/agent-questions.a2ui.json +8 -2
- package/components/agent-questions/agent-questions.d.ts +8 -1
- package/components/agent-questions/agent-questions.yaml +19 -3
- package/components/agent-reasoning/agent-reasoning.yaml +9 -1
- package/components/agent-suggestions/agent-suggestions.a2ui.json +9 -2
- package/components/agent-suggestions/agent-suggestions.d.ts +7 -1
- package/components/agent-suggestions/agent-suggestions.yaml +18 -3
- package/components/agent-trace/agent-trace.a2ui.json +9 -2
- package/components/agent-trace/agent-trace.d.ts +1 -1
- package/components/agent-trace/agent-trace.yaml +16 -3
- package/components/alert/alert.a2ui.json +1 -1
- package/components/alert/alert.css +8 -0
- package/components/alert/alert.d.ts +9 -1
- package/components/alert/alert.yaml +16 -2
- package/components/aside/aside.a2ui.json +7 -1
- package/components/aside/aside.yaml +33 -2
- package/components/avatar/avatar-group.a2ui.json +20 -3
- package/components/avatar/avatar-group.yaml +24 -0
- package/components/avatar/avatar.a2ui.json +1 -1
- package/components/avatar/avatar.d.ts +7 -1
- package/components/avatar/avatar.yaml +14 -2
- package/components/badge/badge.a2ui.json +1 -1
- package/components/badge/badge.d.ts +7 -1
- package/components/badge/badge.yaml +14 -2
- package/components/block/block.a2ui.json +9 -4
- package/components/block/block.d.ts +9 -3
- package/components/block/block.yaml +25 -5
- package/components/block/class.js +23 -0
- package/components/breadcrumb/breadcrumb.a2ui.json +5 -1
- package/components/breadcrumb/breadcrumb.yaml +33 -2
- package/components/button/button.a2ui.json +22 -2
- package/components/button/button.yaml +21 -3
- package/components/calendar-picker/calendar-picker.a2ui.json +1 -1
- package/components/calendar-picker/calendar-picker.yaml +13 -2
- package/components/canvas/canvas.a2ui.json +6 -2
- package/components/canvas/canvas.yaml +20 -3
- package/components/card/card.css +23 -2
- package/components/card/card.yaml +12 -0
- package/components/chart/chart.css +4 -2
- package/components/chart/chart.yaml +9 -1
- package/components/chart-legend/chart-legend.yaml +7 -1
- package/components/chat-thread/chat-thread.a2ui.json +6 -2
- package/components/chat-thread/chat-thread.d.ts +8 -1
- package/components/chat-thread/chat-thread.yaml +21 -3
- package/components/check/check.a2ui.json +13 -3
- package/components/check/check.yaml +18 -3
- package/components/code/code.a2ui.json +1 -1
- package/components/code/code.yaml +13 -2
- package/components/col/class.js +39 -0
- package/components/col/col.a2ui.json +12 -5
- package/components/col/col.d.ts +12 -4
- package/components/col/col.yaml +27 -7
- package/components/color-input/color-input.yaml +27 -1
- package/components/color-picker/color-picker.a2ui.json +8 -2
- package/components/color-picker/color-picker.yaml +15 -3
- package/components/command/command.a2ui.json +7 -2
- package/components/command/command.d.ts +9 -1
- package/components/command/command.yaml +39 -3
- package/components/demo-toggle/demo-toggle.yaml +7 -1
- package/components/description-list/description-list.a2ui.json +5 -1
- package/components/description-list/description-list.yaml +11 -2
- package/components/divider/divider.a2ui.json +1 -1
- package/components/divider/divider.d.ts +8 -1
- package/components/divider/divider.yaml +15 -2
- package/components/drawer/drawer.yaml +32 -1
- package/components/embed/embed.a2ui.json +1 -1
- package/components/embed/embed.d.ts +8 -1
- package/components/embed/embed.yaml +17 -2
- package/components/empty-state/empty-state.a2ui.json +19 -2
- package/components/empty-state/empty-state.css +14 -0
- package/components/empty-state/empty-state.d.ts +3 -1
- package/components/empty-state/empty-state.yaml +50 -3
- package/components/feed/feed-item.a2ui.json +21 -3
- package/components/feed/feed-item.yaml +25 -0
- package/components/feed/feed.a2ui.json +23 -3
- package/components/feed/feed.css +9 -4
- package/components/feed/feed.yaml +26 -0
- package/components/fields/fields.yaml +7 -1
- package/components/footer/footer.a2ui.json +7 -1
- package/components/footer/footer.yaml +27 -2
- package/components/grid/class.js +57 -0
- package/components/grid/grid.a2ui.json +3 -3
- package/components/grid/grid.d.ts +3 -3
- package/components/grid/grid.yaml +22 -8
- package/components/header/header.a2ui.json +8 -1
- package/components/header/header.yaml +30 -2
- package/components/heatmap/heatmap.yaml +7 -1
- package/components/icon/icon.a2ui.json +9 -2
- package/components/icon/icon.d.ts +1 -1
- package/components/icon/icon.yaml +32 -3
- package/components/image/image.yaml +7 -1
- package/components/input/input.css +8 -1
- package/components/input/input.yaml +29 -1
- package/components/inspector/inspector.a2ui.json +7 -2
- package/components/inspector/inspector.d.ts +9 -1
- package/components/inspector/inspector.yaml +23 -3
- package/components/kbd/kbd.a2ui.json +1 -1
- package/components/kbd/kbd.d.ts +1 -1
- package/components/kbd/kbd.yaml +11 -2
- package/components/list/list-item.a2ui.json +21 -3
- package/components/list/list-item.yaml +25 -0
- package/components/list/list.a2ui.json +7 -2
- package/components/list/list.d.ts +9 -1
- package/components/list/list.yaml +21 -3
- package/components/menu/menu-divider.a2ui.json +17 -3
- package/components/menu/menu-divider.yaml +35 -0
- package/components/menu/menu-item.a2ui.json +19 -3
- package/components/menu/menu-item.yaml +42 -0
- package/components/menu/menu.a2ui.json +7 -1
- package/components/menu/menu.yaml +33 -2
- package/components/modal/modal.a2ui.json +7 -2
- package/components/modal/modal.d.ts +10 -1
- package/components/modal/modal.yaml +48 -3
- package/components/nav/nav.a2ui.json +16 -2
- package/components/nav/nav.yaml +40 -3
- package/components/nav-group/nav-group.a2ui.json +12 -2
- package/components/nav-group/nav-group.yaml +37 -3
- package/components/nav-item/nav-item.a2ui.json +13 -2
- package/components/nav-item/nav-item.yaml +40 -3
- package/components/noodles/noodles.a2ui.json +12 -2
- package/components/noodles/noodles.yaml +14 -3
- package/components/option-card/option-card.yaml +27 -1
- package/components/otp-input/otp-input.yaml +24 -1
- package/components/page/page.a2ui.json +7 -1
- package/components/page/page.yaml +9 -2
- package/components/pagination/pagination.a2ui.json +1 -1
- package/components/pagination/pagination.d.ts +1 -1
- package/components/pagination/pagination.yaml +13 -2
- package/components/pane/pane.a2ui.json +1 -1
- package/components/pane/pane.d.ts +7 -1
- package/components/pane/pane.yaml +33 -2
- package/components/pipeline-status/pipeline-status.a2ui.json +6 -2
- package/components/pipeline-status/pipeline-status.d.ts +1 -1
- package/components/pipeline-status/pipeline-status.yaml +18 -3
- package/components/popover/popover.yaml +30 -1
- package/components/progress/progress.a2ui.json +1 -1
- package/components/progress/progress.d.ts +1 -1
- package/components/progress/progress.yaml +13 -2
- package/components/progress-row/progress-row.a2ui.json +12 -2
- package/components/progress-row/progress-row.yaml +13 -3
- package/components/radio/radio.a2ui.json +1 -1
- package/components/radio/radio.yaml +9 -1
- package/components/range/range.yaml +7 -1
- package/components/rating/rating.a2ui.json +4 -1
- package/components/rating/rating.yaml +10 -2
- package/components/richtext/richtext.a2ui.json +6 -2
- package/components/richtext/richtext.d.ts +9 -1
- package/components/richtext/richtext.yaml +20 -3
- package/components/row/class.js +34 -0
- package/components/row/row.a2ui.json +11 -5
- package/components/row/row.d.ts +11 -4
- package/components/row/row.yaml +25 -7
- package/components/search/search.a2ui.json +5 -1
- package/components/search/search.yaml +11 -2
- package/components/section/section.a2ui.json +7 -1
- package/components/section/section.yaml +36 -2
- package/components/segment/segment.a2ui.json +8 -2
- package/components/segment/segment.d.ts +7 -1
- package/components/segment/segment.yaml +16 -3
- package/components/segmented/segmented.a2ui.json +6 -1
- package/components/segmented/segmented.css +5 -0
- package/components/segmented/segmented.yaml +12 -2
- package/components/select/select.a2ui.json +1 -1
- package/components/select/select.yaml +34 -2
- package/components/skeleton/skeleton.a2ui.json +7 -2
- package/components/skeleton/skeleton.d.ts +1 -1
- package/components/skeleton/skeleton.yaml +17 -3
- package/components/slider/slider.yaml +7 -1
- package/components/stack/stack.a2ui.json +14 -3
- package/components/stack/stack.d.ts +9 -1
- package/components/stack/stack.yaml +22 -4
- package/components/stat/stat.a2ui.json +6 -2
- package/components/stat/stat.css +5 -2
- package/components/stat/stat.d.ts +1 -1
- package/components/stat/stat.yaml +16 -3
- package/components/step-progress/step-progress.yaml +7 -1
- package/components/stepper/stepper-item.a2ui.json +20 -3
- package/components/stepper/stepper-item.yaml +24 -0
- package/components/stepper/stepper.a2ui.json +1 -1
- package/components/stepper/stepper.d.ts +1 -1
- package/components/stepper/stepper.yaml +13 -2
- package/components/stream/stream.a2ui.json +12 -2
- package/components/stream/stream.yaml +15 -3
- package/components/swatch/swatch.yaml +7 -1
- package/components/swiper/swiper.yaml +7 -1
- package/components/switch/switch.a2ui.json +6 -2
- package/components/switch/switch.yaml +16 -2
- package/components/table/cell-types.js +23 -10
- package/components/table/class.js +12 -2
- package/components/table/table.a2ui.json +6 -1
- package/components/table/table.css +68 -1
- package/components/table/table.d.ts +3 -1
- package/components/table/table.test.js +64 -0
- package/components/table/table.yaml +39 -2
- package/components/table-toolbar/table-toolbar.yaml +27 -1
- package/components/tabs/tab.a2ui.json +17 -3
- package/components/tabs/tab.yaml +39 -0
- package/components/tabs/tabs.a2ui.json +1 -1
- package/components/tabs/tabs.d.ts +1 -1
- package/components/tabs/tabs.yaml +36 -2
- package/components/tag/tag.a2ui.json +6 -2
- package/components/tag/tag.d.ts +9 -1
- package/components/tag/tag.yaml +38 -3
- package/components/text/class.js +13 -0
- package/components/text/text.a2ui.json +9 -2
- package/components/text/text.d.ts +1 -1
- package/components/text/text.yaml +12 -5
- package/components/textarea/textarea.a2ui.json +15 -3
- package/components/textarea/textarea.yaml +41 -4
- package/components/timeline/timeline-item.a2ui.json +20 -3
- package/components/timeline/timeline-item.yaml +24 -0
- package/components/timeline/timeline.a2ui.json +8 -1
- package/components/timeline/timeline.yaml +9 -2
- package/components/toast/toast.a2ui.json +6 -2
- package/components/toast/toast.yaml +19 -3
- package/components/toggle-group/toggle-group.a2ui.json +13 -3
- package/components/toggle-group/toggle-group.d.ts +1 -1
- package/components/toggle-group/toggle-group.yaml +19 -4
- package/components/toggle-group/toggle-option.a2ui.json +18 -3
- package/components/toggle-group/toggle-option.yaml +23 -0
- package/components/toggle-scheme/toggle-scheme.yaml +4 -0
- package/components/toolbar/toolbar-group.a2ui.json +18 -3
- package/components/toolbar/toolbar-group.yaml +23 -0
- package/components/toolbar/toolbar.yaml +7 -1
- package/components/tooltip/tooltip.yaml +24 -1
- package/components/tree/tree-item.a2ui.json +19 -3
- package/components/tree/tree-item.yaml +42 -0
- package/components/tree/tree.a2ui.json +6 -1
- package/components/tree/tree.yaml +31 -2
- package/components/upload/upload.yaml +7 -1
- package/core/index.js +1 -0
- package/core/responsive.d.ts +29 -0
- package/core/responsive.js +120 -0
- package/core/responsive.test.js +121 -0
- package/package.json +1 -1
- package/styles/tokens.css +6 -6
package/components/col/col.yaml
CHANGED
|
@@ -6,16 +6,27 @@ tag: col-ui
|
|
|
6
6
|
component: Col
|
|
7
7
|
category: layout
|
|
8
8
|
version: 1
|
|
9
|
-
description:
|
|
9
|
+
description: |
|
|
10
|
+
Flex column layout primitive — vertical stack of children with
|
|
11
|
+
[gap] / [align] / [justify] / [grow]. The most common layout
|
|
12
|
+
primitive in the repo. Use <col-ui> for vertical stacks, <row-ui>
|
|
13
|
+
for horizontal rows, <stack-ui> for overlay (children stack on top
|
|
14
|
+
of each other in a grid), <grid-ui> for 2D grids. Composes inside
|
|
15
|
+
<section-ui> for in-card layout; do NOT use as a child of
|
|
16
|
+
<header-ui> / <footer-ui> (the chrome scope already lays out
|
|
17
|
+
slots).
|
|
10
18
|
props:
|
|
11
19
|
align:
|
|
12
|
-
description:
|
|
20
|
+
description: >-
|
|
21
|
+
Cross-axis alignment (start/center/end/stretch). Accepts `@bp` notation:
|
|
22
|
+
align="stretch center@sm" applies stretch below sm, center from sm up.
|
|
13
23
|
type: string
|
|
14
24
|
default: stretch
|
|
15
25
|
gap:
|
|
16
26
|
description: >-
|
|
17
|
-
Gap between children.
|
|
18
|
-
|
|
27
|
+
Gap between children. Named scale (xs/sm/md/lg/xl) or numeric spacing
|
|
28
|
+
rung ("1"…"16", mapped to --a-space-N). Accepts `@bp` notation:
|
|
29
|
+
gap="2 4@md" = 2 below md, 4 from md upward.
|
|
19
30
|
type: string
|
|
20
31
|
default: md
|
|
21
32
|
grow:
|
|
@@ -24,7 +35,9 @@ props:
|
|
|
24
35
|
default: false
|
|
25
36
|
reflect: true
|
|
26
37
|
justify:
|
|
27
|
-
description:
|
|
38
|
+
description: >-
|
|
39
|
+
Main-axis justify (start/center/end/space-between/space-around).
|
|
40
|
+
Accepts `@bp` notation: justify="start space-between@md".
|
|
28
41
|
type: string
|
|
29
42
|
default: start
|
|
30
43
|
events: {}
|
|
@@ -37,7 +50,13 @@ states:
|
|
|
37
50
|
traits: []
|
|
38
51
|
tokens: {}
|
|
39
52
|
a2ui:
|
|
40
|
-
rules:
|
|
53
|
+
rules:
|
|
54
|
+
- rule: 'Vertical-stack flex container. Children flow top-to-bottom with token-driven gap.'
|
|
55
|
+
reason: 'Canonical vertical layout.'
|
|
56
|
+
- rule: 'Pair with <row-ui> for horizontal layouts; both share the same gap-token contract.'
|
|
57
|
+
reason: 'Layout symmetry.'
|
|
58
|
+
- rule: 'Set align/justify attributes for cross-axis / main-axis alignment; default is start/start.'
|
|
59
|
+
reason: 'Standard flex knobs.'
|
|
41
60
|
anti_patterns: []
|
|
42
61
|
examples:
|
|
43
62
|
- name: chat-interface
|
|
@@ -340,7 +359,8 @@ examples:
|
|
|
340
359
|
keywords:
|
|
341
360
|
- column
|
|
342
361
|
- col
|
|
343
|
-
synonyms:
|
|
362
|
+
synonyms:
|
|
363
|
+
column: [col, vstack, vertical-stack, vbox]
|
|
344
364
|
related:
|
|
345
365
|
- avatar
|
|
346
366
|
- input
|
|
@@ -142,7 +142,33 @@ tokens:
|
|
|
142
142
|
--color-input-swatch-size:
|
|
143
143
|
description: Diameter (em) of the inline swatch circle inside the trigger button. Default 1em.
|
|
144
144
|
a2ui:
|
|
145
|
-
rules:
|
|
145
|
+
rules:
|
|
146
|
+
- >-
|
|
147
|
+
Use <color-input-ui> for any form-row color field — it
|
|
148
|
+
canonicalizes the popover + button + color-picker recipe and is
|
|
149
|
+
the only form-bearing color primitive. Do not hand-roll the
|
|
150
|
+
composition; reach for color-input-ui directly.
|
|
151
|
+
- >-
|
|
152
|
+
Set [format="oklch"] when the persisted value feeds CSS tokens
|
|
153
|
+
or perceptual math; [format="hex"] for legacy / design-tool
|
|
154
|
+
interop. Event detail (`change` / `input`) carries BOTH `hex`
|
|
155
|
+
and `oklch` views regardless of [format], plus parsed `{l, c, h}`
|
|
156
|
+
channel scalars.
|
|
157
|
+
- >-
|
|
158
|
+
For brand-palette constraints, set [maxChroma] / [minL] / [maxL]
|
|
159
|
+
/ [hueDriftMax] (with [baseHue]) on the host — they forward to
|
|
160
|
+
the inner <color-picker-ui> and clamp generation. Useful for
|
|
161
|
+
Tokens-Studio-style guarded color generation.
|
|
162
|
+
- >-
|
|
163
|
+
Use <color-picker-ui> DIRECTLY (no color-input-ui wrapper) only
|
|
164
|
+
for full-surface editors where the picker IS the page (e.g.
|
|
165
|
+
Tokens Studio main canvas). For inline form-row use, always
|
|
166
|
+
reach for <color-input-ui>.
|
|
167
|
+
- >-
|
|
168
|
+
Per ADR-0027 (cross-primitive composition imports), consumer
|
|
169
|
+
pages MUST explicitly import <button-ui>, <popover-ui>, and
|
|
170
|
+
<color-picker-ui> before <color-input-ui>. The primitive composes
|
|
171
|
+
them but does NOT auto-register them.
|
|
146
172
|
anti_patterns: []
|
|
147
173
|
examples:
|
|
148
174
|
- name: color-input-basic
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/ColorPicker.json",
|
|
4
4
|
"title": "ColorPicker",
|
|
5
|
-
"description": "OKLCH-native color picker with 2D area and H/C/L sliders. Form-associated.",
|
|
5
|
+
"description": "OKLCH-native color picker with 2D area and H/C/L sliders. Form-associated input emitting OKLCH color strings; canonical color authoring surface in the AdiaUI token system. Use for color input in design tools or theming UIs; for simple color swatches use <swatch-ui> or <color-input-ui> instead.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -128,7 +128,13 @@
|
|
|
128
128
|
"name": "disabled"
|
|
129
129
|
}
|
|
130
130
|
],
|
|
131
|
-
"synonyms": {
|
|
131
|
+
"synonyms": {
|
|
132
|
+
"color-picker": [
|
|
133
|
+
"color-canvas",
|
|
134
|
+
"color-surface",
|
|
135
|
+
"swatch-picker"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
132
138
|
"tag": "color-picker-ui",
|
|
133
139
|
"tokens": {},
|
|
134
140
|
"traits": [],
|
|
@@ -6,7 +6,12 @@ tag: color-picker-ui
|
|
|
6
6
|
component: ColorPicker
|
|
7
7
|
category: input
|
|
8
8
|
version: 1
|
|
9
|
-
description:
|
|
9
|
+
description: >-
|
|
10
|
+
OKLCH-native color picker with 2D area and H/C/L sliders.
|
|
11
|
+
Form-associated input emitting OKLCH color strings; canonical color
|
|
12
|
+
authoring surface in the AdiaUI token system. Use for color input in
|
|
13
|
+
design tools or theming UIs; for simple color swatches use <swatch-ui>
|
|
14
|
+
or <color-input-ui> instead.
|
|
10
15
|
# Per ADR-0027 — primitives that programmatically create other primitives
|
|
11
16
|
# do NOT auto-import them. Consumer (or demo shell) must explicitly import.
|
|
12
17
|
composes:
|
|
@@ -100,7 +105,13 @@ requiredIcons:
|
|
|
100
105
|
- check
|
|
101
106
|
- warning
|
|
102
107
|
a2ui:
|
|
103
|
-
rules:
|
|
108
|
+
rules:
|
|
109
|
+
- rule: 'OKLCH-native color picker with 2D color area + H/C/L sliders. Form-associated; emits OKLCH color strings.'
|
|
110
|
+
reason: 'Canonical color-authoring surface.'
|
|
111
|
+
- rule: 'For simple color swatches (read-only display) use <swatch-ui>; for hex/rgb text input use <color-input-ui>.'
|
|
112
|
+
reason: 'Surface boundary.'
|
|
113
|
+
- rule: 'Output format defaults to oklch(); set format= to override (hex, rgb, hsl).'
|
|
114
|
+
reason: 'Format knob.'
|
|
104
115
|
anti_patterns: []
|
|
105
116
|
examples:
|
|
106
117
|
- name: color-picker-demo
|
|
@@ -156,7 +167,8 @@ keywords:
|
|
|
156
167
|
- color-picker
|
|
157
168
|
- color
|
|
158
169
|
- picker
|
|
159
|
-
synonyms:
|
|
170
|
+
synonyms:
|
|
171
|
+
color-picker: [color-canvas, color-surface, swatch-picker]
|
|
160
172
|
related:
|
|
161
173
|
- grid
|
|
162
174
|
- button
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/Command.json",
|
|
4
4
|
"title": "Command",
|
|
5
|
-
"description": "Searchable command palette
|
|
5
|
+
"description": "Searchable command palette primitive — combobox-style search input\nplus a scrollable list of <option value> items grouped by\n<optgroup label>. Content-only; does NOT own the dialog or the\nCmd+K shortcut. For canonical Cmd+K palettes wrap in <admin-command>\nat the shell tier, which provides the native <dialog> + focus\nmanagement + cross-platform Cmd+K listener. Distinct from <menu-ui>\n(small popover action menu, not searchable) and <modal-ui> (generic\ncentered dialog).\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -88,7 +88,12 @@
|
|
|
88
88
|
"keybinding"
|
|
89
89
|
],
|
|
90
90
|
"name": "UICommand",
|
|
91
|
-
"related": [
|
|
91
|
+
"related": [
|
|
92
|
+
"AdminCommand",
|
|
93
|
+
"Menu",
|
|
94
|
+
"Modal",
|
|
95
|
+
"Search"
|
|
96
|
+
],
|
|
92
97
|
"slots": {
|
|
93
98
|
"empty": {
|
|
94
99
|
"description": "Empty state shown when no items match"
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `<command-ui>` — Searchable command palette
|
|
2
|
+
* `<command-ui>` — Searchable command palette primitive — combobox-style search input
|
|
3
|
+
plus a scrollable list of <option value> items grouped by
|
|
4
|
+
<optgroup label>. Content-only; does NOT own the dialog or the
|
|
5
|
+
Cmd+K shortcut. For canonical Cmd+K palettes wrap in <admin-command>
|
|
6
|
+
at the shell tier, which provides the native <dialog> + focus
|
|
7
|
+
management + cross-platform Cmd+K listener. Distinct from <menu-ui>
|
|
8
|
+
(small popover action menu, not searchable) and <modal-ui> (generic
|
|
9
|
+
centered dialog).
|
|
10
|
+
|
|
3
11
|
*
|
|
4
12
|
* @see https://ui-kit.exe.xyz/site/components/command
|
|
5
13
|
*
|
|
@@ -4,7 +4,15 @@ tag: command-ui
|
|
|
4
4
|
component: Command
|
|
5
5
|
category: container
|
|
6
6
|
version: 1
|
|
7
|
-
description:
|
|
7
|
+
description: |
|
|
8
|
+
Searchable command palette primitive — combobox-style search input
|
|
9
|
+
plus a scrollable list of <option value> items grouped by
|
|
10
|
+
<optgroup label>. Content-only; does NOT own the dialog or the
|
|
11
|
+
Cmd+K shortcut. For canonical Cmd+K palettes wrap in <admin-command>
|
|
12
|
+
at the shell tier, which provides the native <dialog> + focus
|
|
13
|
+
management + cross-platform Cmd+K listener. Distinct from <menu-ui>
|
|
14
|
+
(small popover action menu, not searchable) and <modal-ui> (generic
|
|
15
|
+
centered dialog).
|
|
8
16
|
props:
|
|
9
17
|
open:
|
|
10
18
|
description: Whether the command palette is visible
|
|
@@ -52,7 +60,31 @@ tokens: {}
|
|
|
52
60
|
requiredIcons:
|
|
53
61
|
- magnifying-glass
|
|
54
62
|
a2ui:
|
|
55
|
-
rules:
|
|
63
|
+
rules:
|
|
64
|
+
- >-
|
|
65
|
+
<command-ui> is the searchable PALETTE primitive (input + option
|
|
66
|
+
list). For Cmd+K palettes, wrap it in <admin-command> at the
|
|
67
|
+
shell tier — admin-command owns the native <dialog>, focus
|
|
68
|
+
management, and the Cmd+K / Ctrl+K shortcut listener.
|
|
69
|
+
command-ui is content-only and does NOT own the dialog or
|
|
70
|
+
shortcut. Do NOT hand-roll a <dialog> + Cmd+K key listener.
|
|
71
|
+
- >-
|
|
72
|
+
Author items as native <option value data-icon data-shortcut>
|
|
73
|
+
elements inside <optgroup label="…"> for grouped sections. The
|
|
74
|
+
`select` event's detail.category mirrors the parent optgroup's
|
|
75
|
+
label. Detail = { value, label, category }.
|
|
76
|
+
- >-
|
|
77
|
+
Decision rule vs adjacent surfaces. Use <menu-ui> for small
|
|
78
|
+
NON-searchable popover menus (≤10 actions, triggered by a
|
|
79
|
+
button). Use <modal-ui> for generic centered dialogs. Reach
|
|
80
|
+
for <command-ui> only when you need a searchable,
|
|
81
|
+
keyboard-navigable list of commands or destinations.
|
|
82
|
+
- >-
|
|
83
|
+
command-ui MAY render inline (no dialog) for embedded search
|
|
84
|
+
panels, but the canonical AdiaUI admin pattern is exactly one
|
|
85
|
+
<command-ui placeholder="…"> as the sole child of
|
|
86
|
+
<admin-command> inside <admin-shell>. See site/index.html and
|
|
87
|
+
playgrounds/admin-shell/ for production references.
|
|
56
88
|
anti_patterns: []
|
|
57
89
|
examples:
|
|
58
90
|
- name: basic-command
|
|
@@ -181,4 +213,8 @@ synonyms:
|
|
|
181
213
|
- palette
|
|
182
214
|
tags:
|
|
183
215
|
- CommandPalette
|
|
184
|
-
related:
|
|
216
|
+
related:
|
|
217
|
+
- AdminCommand
|
|
218
|
+
- Menu
|
|
219
|
+
- Modal
|
|
220
|
+
- Search
|
|
@@ -81,7 +81,13 @@ tokens:
|
|
|
81
81
|
--demo-toggle-stage-padding:
|
|
82
82
|
description: Inner padding around each slot
|
|
83
83
|
a2ui:
|
|
84
|
-
rules:
|
|
84
|
+
rules:
|
|
85
|
+
- rule: 'Demo-page-only — toggles between live and code views in component documentation surfaces.'
|
|
86
|
+
reason: 'Doc-tooling primitive; not for product surfaces.'
|
|
87
|
+
- rule: 'Do not use in apps/ — restrict to packages/web-components/components/*/<name>.html demo pages and docs surfaces.'
|
|
88
|
+
reason: 'Surface scope.'
|
|
89
|
+
- rule: 'Behavior: shows/hides the [data-code] block when toggled.'
|
|
90
|
+
reason: 'Built-in cascade.'
|
|
85
91
|
anti_patterns: []
|
|
86
92
|
examples:
|
|
87
93
|
- name: with-without-trait
|
|
@@ -46,7 +46,13 @@ states:
|
|
|
46
46
|
traits: []
|
|
47
47
|
tokens: {}
|
|
48
48
|
a2ui:
|
|
49
|
-
rules:
|
|
49
|
+
rules:
|
|
50
|
+
- rule: 'Use for key:value pairs in dense detail views (user profile fields, metadata panels, audit logs).'
|
|
51
|
+
reason: 'Semantic <dl> with token-driven spacing; better than ad-hoc <row-ui> layouts.'
|
|
52
|
+
- rule: 'Do not use for editable forms — use <fields-ui> instead.'
|
|
53
|
+
reason: 'Description list is read-only display; fields handle input + validation.'
|
|
54
|
+
- rule: 'Pairs render as label + value on the same row by default; use vertical variant for narrow panes.'
|
|
55
|
+
reason: 'Responsive layout knob.'
|
|
50
56
|
anti_patterns: []
|
|
51
57
|
examples: []
|
|
52
58
|
keywords:
|
|
@@ -65,4 +71,7 @@ synonyms:
|
|
|
65
71
|
- spec list
|
|
66
72
|
- metadata list
|
|
67
73
|
- property list
|
|
68
|
-
related:
|
|
74
|
+
related:
|
|
75
|
+
- List
|
|
76
|
+
- Field
|
|
77
|
+
- Section
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/Divider.json",
|
|
4
4
|
"title": "Divider",
|
|
5
|
-
"description": "Horizontal or vertical divider with optional label.",
|
|
5
|
+
"description": "Horizontal or vertical divider with optional label — a semantic\nrule between content groups. Set [vertical] for column dividers\n(typically inside <row-ui>); set [label] for a labeled-rule pattern\nwhere the divider carries a short caption (e.g. \"OR\" between auth\nmethods, \"Today\" between message groups). Distinct from\n<hr data-nav-divider> (which is a CSS hook used by <nav-ui> for nav\nsection separation, not a primitive).\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `<divider-ui>` — Horizontal or vertical divider with optional label
|
|
2
|
+
* `<divider-ui>` — Horizontal or vertical divider with optional label — a semantic
|
|
3
|
+
rule between content groups. Set [vertical] for column dividers
|
|
4
|
+
(typically inside <row-ui>); set [label] for a labeled-rule pattern
|
|
5
|
+
where the divider carries a short caption (e.g. "OR" between auth
|
|
6
|
+
methods, "Today" between message groups). Distinct from
|
|
7
|
+
<hr data-nav-divider> (which is a CSS hook used by <nav-ui> for nav
|
|
8
|
+
section separation, not a primitive).
|
|
9
|
+
|
|
3
10
|
*
|
|
4
11
|
* @see https://ui-kit.exe.xyz/site/components/divider
|
|
5
12
|
*
|
|
@@ -6,7 +6,14 @@ tag: divider-ui
|
|
|
6
6
|
component: Divider
|
|
7
7
|
category: display
|
|
8
8
|
version: 1
|
|
9
|
-
description:
|
|
9
|
+
description: |
|
|
10
|
+
Horizontal or vertical divider with optional label — a semantic
|
|
11
|
+
rule between content groups. Set [vertical] for column dividers
|
|
12
|
+
(typically inside <row-ui>); set [label] for a labeled-rule pattern
|
|
13
|
+
where the divider carries a short caption (e.g. "OR" between auth
|
|
14
|
+
methods, "Today" between message groups). Distinct from
|
|
15
|
+
<hr data-nav-divider> (which is a CSS hook used by <nav-ui> for nav
|
|
16
|
+
section separation, not a primitive).
|
|
10
17
|
props:
|
|
11
18
|
label:
|
|
12
19
|
description: Center label text
|
|
@@ -24,7 +31,13 @@ states:
|
|
|
24
31
|
traits: []
|
|
25
32
|
tokens: {}
|
|
26
33
|
a2ui:
|
|
27
|
-
rules:
|
|
34
|
+
rules:
|
|
35
|
+
- rule: 'Use to separate visually distinct sections within a container; horizontal default, vertical via orientation=''vertical''.'
|
|
36
|
+
reason: 'Single-purpose primitive — semantic rule + token-driven margin.'
|
|
37
|
+
- rule: 'Inside menus / popovers use <menu-divider-ui> instead; it has menu-specific token spacing.'
|
|
38
|
+
reason: 'Menu-divider is menu-namespaced; divider-ui is generic.'
|
|
39
|
+
- rule: 'Do not stack multiple consecutive dividers — use a single divider or restructure the section.'
|
|
40
|
+
reason: 'Visual rhythm.'
|
|
28
41
|
anti_patterns: []
|
|
29
42
|
examples:
|
|
30
43
|
- name: settings-page
|
|
@@ -131,7 +131,38 @@ states:
|
|
|
131
131
|
traits: []
|
|
132
132
|
tokens: {}
|
|
133
133
|
a2ui:
|
|
134
|
-
rules:
|
|
134
|
+
rules:
|
|
135
|
+
- >-
|
|
136
|
+
Direct children of <drawer-ui> MUST be <header>, <section> (1..n),
|
|
137
|
+
<footer>, or an element with slot="header|body|footer". Wrap stray
|
|
138
|
+
<col-ui> / <row-ui> / <div> / <text-ui> in a <section>. Enforced by
|
|
139
|
+
scripts/audit/audit-drawer-structure.mjs. Bypassing the body slot
|
|
140
|
+
loses the section inset and teaches the gen-UI corpus the wrong
|
|
141
|
+
pattern.
|
|
142
|
+
- >-
|
|
143
|
+
Reflect open state via the [open] boolean attribute on the host
|
|
144
|
+
(open=true / open=false). Do NOT toggle visibility with CSS,
|
|
145
|
+
[hidden], or a [data-open] proxy — drawer-ui owns the native
|
|
146
|
+
<dialog> lifecycle, focus trap, and ::backdrop. Listen for the
|
|
147
|
+
`close` event (detail.reason ∈ escape | backdrop | close-button |
|
|
148
|
+
programmatic) to react to dismiss.
|
|
149
|
+
- >-
|
|
150
|
+
Use drawer-ui (not modal-ui) for edge-anchored detail / edit panels
|
|
151
|
+
and mobile bottom-sheet patterns. Pick side="right" for inspector
|
|
152
|
+
flows opened FROM a row/list item, side="bottom" for sheets,
|
|
153
|
+
side="left" for navigation drawers on narrow viewports. Centered
|
|
154
|
+
confirmations belong in modal-ui.
|
|
155
|
+
- >-
|
|
156
|
+
Compose the drawer header with [slot="icon|heading|description|
|
|
157
|
+
action"] direct-child elements to activate the card-ui-aligned
|
|
158
|
+
3-column grid (icon | heading+description | action+close). The
|
|
159
|
+
close button is auto-stamped; do not author your own X button
|
|
160
|
+
unless using [permanent] (which suppresses the close button).
|
|
161
|
+
- >-
|
|
162
|
+
Never set drawer.innerHTML wholesale — it wipes the stamped
|
|
163
|
+
<dialog> part and the author skeleton. Mutate a stable inner
|
|
164
|
+
element inside a persistent <section> instead. Same rule as
|
|
165
|
+
<modal-ui>.
|
|
135
166
|
anti_patterns:
|
|
136
167
|
- description: >-
|
|
137
168
|
Replacing a drawer's children wholesale — `drawer.innerHTML = '…'` —
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/Embed.json",
|
|
4
4
|
"title": "Embed",
|
|
5
|
-
"description": "Responsive sandboxed iframe wrapper.",
|
|
5
|
+
"description": "Responsive sandboxed <iframe> wrapper — renders external content at\na constrained [aspect] ratio with optional [width] / [height] override.\nThe iframe is created in light DOM with safe sandbox attributes;\nauthors do NOT slot an <iframe> directly. Use for YouTube / Vimeo /\nFigma embeds in articles, marketing pages, or chat responses; not\nfor arbitrary cross-origin app integrations (use the platform's own\nSDK / portal instead).\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `<embed-ui>` — Responsive sandboxed iframe wrapper
|
|
2
|
+
* `<embed-ui>` — Responsive sandboxed <iframe> wrapper — renders external content at
|
|
3
|
+
a constrained [aspect] ratio with optional [width] / [height] override.
|
|
4
|
+
The iframe is created in light DOM with safe sandbox attributes;
|
|
5
|
+
authors do NOT slot an <iframe> directly. Use for YouTube / Vimeo /
|
|
6
|
+
Figma embeds in articles, marketing pages, or chat responses; not
|
|
7
|
+
for arbitrary cross-origin app integrations (use the platform's own
|
|
8
|
+
SDK / portal instead).
|
|
9
|
+
|
|
3
10
|
*
|
|
4
11
|
* @see https://ui-kit.exe.xyz/site/components/embed
|
|
5
12
|
*
|
|
@@ -6,7 +6,14 @@ tag: embed-ui
|
|
|
6
6
|
component: Embed
|
|
7
7
|
category: agent
|
|
8
8
|
version: 1
|
|
9
|
-
description:
|
|
9
|
+
description: |
|
|
10
|
+
Responsive sandboxed <iframe> wrapper — renders external content at
|
|
11
|
+
a constrained [aspect] ratio with optional [width] / [height] override.
|
|
12
|
+
The iframe is created in light DOM with safe sandbox attributes;
|
|
13
|
+
authors do NOT slot an <iframe> directly. Use for YouTube / Vimeo /
|
|
14
|
+
Figma embeds in articles, marketing pages, or chat responses; not
|
|
15
|
+
for arbitrary cross-origin app integrations (use the platform's own
|
|
16
|
+
SDK / portal instead).
|
|
10
17
|
props:
|
|
11
18
|
aspect:
|
|
12
19
|
description: CSS aspect-ratio (e.g. 16/9)
|
|
@@ -34,7 +41,15 @@ states:
|
|
|
34
41
|
traits: []
|
|
35
42
|
tokens: {}
|
|
36
43
|
a2ui:
|
|
37
|
-
rules:
|
|
44
|
+
rules:
|
|
45
|
+
- rule: 'Responsive sandboxed <iframe> wrapper at constrained aspect ratio. Safe sandbox attributes are applied by default.'
|
|
46
|
+
reason: 'Iframe primitive.'
|
|
47
|
+
- rule: 'For raster/vector images use <image-ui>; for icons use <icon-ui>; embed-ui is for live external content only.'
|
|
48
|
+
reason: 'Sibling decision rule.'
|
|
49
|
+
- rule: 'aspect attribute locks ratio (e.g. 16/9, 4/3) to prevent layout shift; width/height override when needed.'
|
|
50
|
+
reason: 'Dimension knobs.'
|
|
51
|
+
- rule: 'Do not embed first-party AdiaUI app routes — use direct component composition instead.'
|
|
52
|
+
reason: 'Cross-origin discipline.'
|
|
38
53
|
anti_patterns: []
|
|
39
54
|
examples:
|
|
40
55
|
- name: embed-content
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/EmptyState.json",
|
|
4
4
|
"title": "EmptyState",
|
|
5
|
-
"description": "Placeholder for empty views with icon, heading, description, and action slot.",
|
|
5
|
+
"description": "Placeholder for empty views with icon, heading, description, and action slot. Renders centered inside lists, tables, panes, or cards when no data is present. Use as a zero-state inside containers; for app-loading shells use <skeleton-ui> instead.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -35,6 +35,16 @@
|
|
|
35
35
|
"description": "§223 (v0.5.9). Single-line muted layout — drops centered-column chrome\n(no vertical padding, no row-stack, no icon-size bump). Useful for\ninline empty-table-row / inline empty-list / placeholder cells where\nthe full-canvas placeholder is too prominent.",
|
|
36
36
|
"type": "boolean",
|
|
37
37
|
"default": false
|
|
38
|
+
},
|
|
39
|
+
"variant": {
|
|
40
|
+
"description": "Semantic color variant. Use `danger` or `warning` for full-section error states where the data cannot be shown (API failure, permission error) — the centered layout mirrors the empty state but uses danger/ warning tones. Leave unset (default) for the canonical zero-data case.",
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": [
|
|
43
|
+
"default",
|
|
44
|
+
"danger",
|
|
45
|
+
"warning"
|
|
46
|
+
],
|
|
47
|
+
"default": "default"
|
|
38
48
|
}
|
|
39
49
|
},
|
|
40
50
|
"required": [
|
|
@@ -85,7 +95,14 @@
|
|
|
85
95
|
"name": "idle"
|
|
86
96
|
}
|
|
87
97
|
],
|
|
88
|
-
"synonyms": {
|
|
98
|
+
"synonyms": {
|
|
99
|
+
"empty-state": [
|
|
100
|
+
"zero-state",
|
|
101
|
+
"no-data",
|
|
102
|
+
"placeholder",
|
|
103
|
+
"empty"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
89
106
|
"tag": "empty-state-ui",
|
|
90
107
|
"tokens": {
|
|
91
108
|
"--empty-state-action-mt": {
|
|
@@ -56,6 +56,20 @@
|
|
|
56
56
|
margin-top: var(--empty-state-action-mt);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
/* ── Semantic color variants ──
|
|
60
|
+
Color the icon + text only; no background/border tint. */
|
|
61
|
+
:scope[variant="danger"] {
|
|
62
|
+
--empty-state-icon-fg: var(--a-danger-strong);
|
|
63
|
+
--empty-state-heading-fg: var(--a-danger-text);
|
|
64
|
+
--empty-state-desc-fg: var(--a-danger-text);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:scope[variant="warning"] {
|
|
68
|
+
--empty-state-icon-fg: var(--a-warning-strong);
|
|
69
|
+
--empty-state-heading-fg: var(--a-warning-text);
|
|
70
|
+
--empty-state-desc-fg: var(--a-warning-text);
|
|
71
|
+
}
|
|
72
|
+
|
|
59
73
|
/* ── §223 (v0.5.9): [minimal] — single-line muted layout ──
|
|
60
74
|
Drops centered-column chrome (no canvas-style padding, no flex-column
|
|
61
75
|
stack). Renders as `[icon] heading [description]` inline in muted-fg.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `<empty-state-ui>` — Placeholder for empty views with icon, heading, description, and action slot.
|
|
2
|
+
* `<empty-state-ui>` — Placeholder for empty views with icon, heading, description, and action slot. Renders centered inside lists, tables, panes, or cards when no data is present. Use as a zero-state inside containers; for app-loading shells use <skeleton-ui> instead.
|
|
3
3
|
*
|
|
4
4
|
* @see https://ui-kit.exe.xyz/site/components/empty-state
|
|
5
5
|
*
|
|
@@ -24,4 +24,6 @@ export class UIEmptyState extends UIElement {
|
|
|
24
24
|
inline empty-table-row / inline empty-list / placeholder cells where
|
|
25
25
|
the full-canvas placeholder is too prominent. */
|
|
26
26
|
minimal: boolean;
|
|
27
|
+
/** Semantic color variant. Use `danger` or `warning` for full-section error states where the data cannot be shown (API failure, permission error) — the centered layout mirrors the empty state but uses danger/ warning tones. Leave unset (default) for the canonical zero-data case. */
|
|
28
|
+
variant: 'default' | 'danger' | 'warning';
|
|
27
29
|
}
|
|
@@ -6,7 +6,11 @@ tag: empty-state-ui
|
|
|
6
6
|
component: EmptyState
|
|
7
7
|
category: display
|
|
8
8
|
version: 1
|
|
9
|
-
description:
|
|
9
|
+
description: >-
|
|
10
|
+
Placeholder for empty views with icon, heading, description, and action
|
|
11
|
+
slot. Renders centered inside lists, tables, panes, or cards when no
|
|
12
|
+
data is present. Use as a zero-state inside containers; for app-loading
|
|
13
|
+
shells use <skeleton-ui> instead.
|
|
10
14
|
# Per ADR-0027 — primitives that programmatically create other primitives
|
|
11
15
|
# do NOT auto-import them. Consumer (or demo shell) must explicitly import.
|
|
12
16
|
composes:
|
|
@@ -33,6 +37,19 @@ props:
|
|
|
33
37
|
type: boolean
|
|
34
38
|
default: false
|
|
35
39
|
reflect: true
|
|
40
|
+
variant:
|
|
41
|
+
description: >-
|
|
42
|
+
Semantic color variant. Use `danger` or `warning` for full-section
|
|
43
|
+
error states where the data cannot be shown (API failure, permission
|
|
44
|
+
error) — the centered layout mirrors the empty state but uses danger/
|
|
45
|
+
warning tones. Leave unset (default) for the canonical zero-data case.
|
|
46
|
+
type: string
|
|
47
|
+
default: default
|
|
48
|
+
enum:
|
|
49
|
+
- default
|
|
50
|
+
- danger
|
|
51
|
+
- warning
|
|
52
|
+
reflect: true
|
|
36
53
|
events: {}
|
|
37
54
|
slots:
|
|
38
55
|
action:
|
|
@@ -65,7 +82,36 @@ tokens:
|
|
|
65
82
|
--empty-state-py:
|
|
66
83
|
description: Vertical padding
|
|
67
84
|
a2ui:
|
|
68
|
-
rules:
|
|
85
|
+
rules:
|
|
86
|
+
- >-
|
|
87
|
+
Use <empty-state-ui> for zero-data states: empty lists, no-results
|
|
88
|
+
search, fresh accounts. Not for loading (use <skeleton-ui>). For
|
|
89
|
+
inline notices within populated content use <alert-ui>. For
|
|
90
|
+
full-section error states where the data cannot be shown at all
|
|
91
|
+
(API failure, permission error), use <empty-state-ui variant="danger">
|
|
92
|
+
— the centered layout is more appropriate than an inline banner when
|
|
93
|
+
the entire content area is replaced.
|
|
94
|
+
- >-
|
|
95
|
+
Canonical placement: slotted into cluster-specific wrappers —
|
|
96
|
+
<chat-empty> inside <chat-thread>, <editor-canvas-empty> inside
|
|
97
|
+
<editor-canvas>, OR inside <card-ui><section> for in-card empty
|
|
98
|
+
states. Compose with an <icon-ui> for the leading glyph (pick a
|
|
99
|
+
Phosphor name that mirrors the missing entity — folder, inbox,
|
|
100
|
+
magnifying-glass).
|
|
101
|
+
- >-
|
|
102
|
+
Put AT MOST ONE CTA in slot="action". It should be the single
|
|
103
|
+
next step (Create, Retry, Clear filters). Prefer
|
|
104
|
+
[variant="primary"] for create-flows; [variant="outline"] for
|
|
105
|
+
retry / secondary actions.
|
|
106
|
+
- >-
|
|
107
|
+
Use [minimal] for inline empty rows inside <table-ui> /
|
|
108
|
+
<list-ui> where full-canvas chrome is too prominent. The
|
|
109
|
+
`minimal` flag (§223 v0.5.9) drops chrome for a compact
|
|
110
|
+
placeholder cell.
|
|
111
|
+
- >-
|
|
112
|
+
Per ADR-0027, empty-state-ui composes <icon-ui> but does NOT
|
|
113
|
+
auto-register it. Consumer pages must explicitly import
|
|
114
|
+
<icon-ui> before <empty-state-ui> renders correctly.
|
|
69
115
|
anti_patterns: []
|
|
70
116
|
examples:
|
|
71
117
|
- name: empty-state
|
|
@@ -313,7 +359,8 @@ keywords:
|
|
|
313
359
|
- empty-state
|
|
314
360
|
- empty
|
|
315
361
|
- state
|
|
316
|
-
synonyms:
|
|
362
|
+
synonyms:
|
|
363
|
+
empty-state: [zero-state, no-data, placeholder, empty]
|
|
317
364
|
related:
|
|
318
365
|
- button
|
|
319
366
|
- drawer
|