@adia-ai/web-modules 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 +28 -0
- package/chat/chat-composer/chat-composer.a2ui.json +1 -1
- package/chat/chat-composer/chat-composer.d.ts +0 -4
- package/chat/chat-composer/chat-composer.yaml +4 -4
- package/chat/chat-empty/chat-empty.a2ui.json +1 -1
- package/chat/chat-empty/chat-empty.yaml +6 -2
- package/chat/chat-header/chat-header.a2ui.json +1 -1
- package/chat/chat-header/chat-header.yaml +7 -3
- package/chat/chat-shell/chat-shell.a2ui.json +16 -7
- package/chat/chat-shell/chat-shell.d.ts +15 -6
- package/chat/chat-shell/chat-shell.yaml +56 -16
- package/chat/chat-sidebar/chat-sidebar.yaml +4 -0
- package/chat/chat-status/chat-status.yaml +4 -0
- package/chat/chat-thread/chat-thread.a2ui.json +1 -1
- package/chat/chat-thread/chat-thread.d.ts +1 -7
- package/chat/chat-thread/chat-thread.yaml +4 -9
- package/editor/editor-canvas/editor-canvas.a2ui.json +1 -1
- package/editor/editor-canvas/editor-canvas.d.ts +0 -4
- package/editor/editor-canvas/editor-canvas.yaml +0 -4
- package/editor/editor-canvas-empty/editor-canvas-empty.yaml +4 -0
- package/editor/editor-shell/editor-shell.a2ui.json +33 -22
- package/editor/editor-shell/editor-shell.d.ts +22 -5
- package/editor/editor-shell/editor-shell.yaml +84 -37
- package/editor/editor-sidebar/editor-sidebar.yaml +4 -0
- package/editor/editor-statusbar/editor-statusbar.yaml +4 -0
- package/editor/editor-toolbar/editor-toolbar.a2ui.json +1 -1
- package/editor/editor-toolbar/editor-toolbar.d.ts +3 -2
- package/editor/editor-toolbar/editor-toolbar.yaml +7 -2
- package/package.json +1 -1
- package/runtime/a2ui-root/a2ui-root.a2ui.json +7 -1
- package/runtime/a2ui-root/a2ui-root.yaml +10 -1
- package/runtime/gen-root/gen-root.a2ui.json +7 -1
- package/runtime/gen-root/gen-root.yaml +7 -0
- package/shell/admin-command/admin-command.a2ui.json +1 -1
- package/shell/admin-command/admin-command.d.ts +2 -2
- package/shell/admin-command/admin-command.yaml +6 -2
- package/shell/admin-content/admin-content.a2ui.json +1 -1
- package/shell/admin-content/admin-content.yaml +6 -2
- package/shell/admin-entity-item/admin-entity-item.yaml +4 -0
- package/shell/admin-page/admin-page.yaml +4 -0
- package/shell/admin-page-body/admin-page-body.yaml +4 -0
- package/shell/admin-page-header/admin-page-header.yaml +4 -0
- package/shell/admin-scroll/admin-scroll.yaml +4 -0
- package/shell/admin-shell/admin-shell.a2ui.json +5 -5
- package/shell/admin-shell/admin-shell.d.ts +14 -4
- package/shell/admin-shell/admin-shell.js +0 -32
- package/shell/admin-shell/admin-shell.yaml +45 -15
- package/shell/admin-shell/css/admin-shell.bespoke.css +2 -2
- package/shell/admin-shell/css/admin-shell.entity-item.css +8 -2
- package/shell/admin-shell/css/admin-shell.templates.css +22 -5
- package/shell/admin-sidebar/admin-sidebar.a2ui.json +1 -1
- package/shell/admin-sidebar/admin-sidebar.d.ts +2 -3
- package/shell/admin-sidebar/admin-sidebar.yaml +6 -3
- package/shell/admin-statusbar/admin-statusbar.a2ui.json +1 -1
- package/shell/admin-statusbar/admin-statusbar.yaml +9 -8
- package/shell/admin-topbar/admin-topbar.a2ui.json +1 -1
- package/shell/admin-topbar/admin-topbar.yaml +9 -10
- package/simple/simple-content/simple-content.yaml +4 -0
- package/simple/simple-hero/simple-hero.yaml +4 -0
- package/simple/simple-shell/simple-shell.yaml +4 -0
|
@@ -5,10 +5,20 @@ component: AppShell
|
|
|
5
5
|
category: layout
|
|
6
6
|
version: 1
|
|
7
7
|
description: |
|
|
8
|
-
Behavior-only application shell.
|
|
9
|
-
|
|
10
|
-
sidebar
|
|
11
|
-
|
|
8
|
+
Behavior-only application shell. Canonical authoring shape uses
|
|
9
|
+
cluster-namespaced bespoke children — <admin-topbar> at the top,
|
|
10
|
+
<admin-sidebar slot="leading|trailing"> rails, <admin-content> for
|
|
11
|
+
the main content region, <admin-command> for the Cmd+K palette, and
|
|
12
|
+
optional <admin-statusbar> at the bottom. The shell wires sidebar
|
|
13
|
+
toggle forwarding, command-palette triggers, and the ResizeObserver
|
|
14
|
+
that drives responsive sidebar collapse; each bespoke child owns
|
|
15
|
+
its own resize / collapse / open state-as-attribute semantics per
|
|
16
|
+
ADR-0023.
|
|
17
|
+
|
|
18
|
+
Legacy data-attribute shapes (<aside data-sidebar>, <dialog
|
|
19
|
+
data-command>, [data-resize], <aside-ui slot=>, <span data-spacer>,
|
|
20
|
+
<div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no
|
|
21
|
+
longer recognized. Consumers must use the bespoke vocabulary.
|
|
12
22
|
|
|
13
23
|
props:
|
|
14
24
|
mode:
|
|
@@ -46,12 +56,17 @@ events:
|
|
|
46
56
|
slots:
|
|
47
57
|
default:
|
|
48
58
|
description: >-
|
|
49
|
-
|
|
50
|
-
|
|
59
|
+
Bespoke children compose here in document order — <admin-topbar>,
|
|
60
|
+
<admin-sidebar slot="leading">, <admin-content> (containing
|
|
61
|
+
<admin-page> / <admin-page-header> / <admin-page-body>),
|
|
62
|
+
<admin-sidebar slot="trailing">, <admin-command>, optional
|
|
63
|
+
<admin-statusbar>. The shell's grid layout reads child tag
|
|
64
|
+
selectors to place them.
|
|
51
65
|
icon:
|
|
52
66
|
description: >-
|
|
53
|
-
Leading glyph inside any chrome bar
|
|
54
|
-
|
|
67
|
+
Leading glyph inside any chrome bar (<admin-topbar>,
|
|
68
|
+
<admin-statusbar>, <admin-sidebar> header/footer). Muted color,
|
|
69
|
+
flex-align.
|
|
55
70
|
heading:
|
|
56
71
|
description: >-
|
|
57
72
|
Primary label inside any chrome bar. Medium-weight + strong fg.
|
|
@@ -62,15 +77,12 @@ slots:
|
|
|
62
77
|
description: >-
|
|
63
78
|
Trailing control cluster inside any chrome bar. The first
|
|
64
79
|
[slot="action"] child pushes itself (and siblings) to the end;
|
|
65
|
-
subsequent siblings flow with gap.
|
|
66
|
-
<span data-spacer> / <div data-actions> hooks for one release —
|
|
67
|
-
new code should prefer slots.
|
|
80
|
+
subsequent siblings flow with gap.
|
|
68
81
|
action-leading:
|
|
69
82
|
description: >-
|
|
70
83
|
Leading (inline-start) control cluster inside any chrome bar.
|
|
71
84
|
Pairs with [slot="action"] for dual-cluster chrome (e.g. back
|
|
72
85
|
button + breadcrumb on the left, primary actions on the right).
|
|
73
|
-
Replaces the legacy <span data-spacer> hack.
|
|
74
86
|
|
|
75
87
|
states:
|
|
76
88
|
- name: idle
|
|
@@ -87,9 +99,27 @@ traits: []
|
|
|
87
99
|
a2ui:
|
|
88
100
|
rules:
|
|
89
101
|
- >-
|
|
90
|
-
admin-shell
|
|
91
|
-
|
|
92
|
-
|
|
102
|
+
admin-shell takes bespoke admin-* children only. The canonical
|
|
103
|
+
composition is <admin-topbar> + <admin-sidebar slot="leading">
|
|
104
|
+
+ <admin-content> + <admin-sidebar slot="trailing"> +
|
|
105
|
+
<admin-command> + optional <admin-statusbar>. The shell's CSS
|
|
106
|
+
grid reads child tag selectors to place them.
|
|
107
|
+
- >-
|
|
108
|
+
Don't nest col-ui / row-ui or generic layout primitives directly
|
|
109
|
+
inside admin-shell — app-shell.css handles grid layout based on
|
|
110
|
+
bespoke child tags. Generic layout goes inside <admin-content>
|
|
111
|
+
or inside <admin-page-body>.
|
|
112
|
+
- >-
|
|
113
|
+
Click forwarding patterns — [data-sidebar-toggle="<name>"] on a
|
|
114
|
+
button forwards to <admin-sidebar[slot="<name>"]>.toggle();
|
|
115
|
+
[data-command-trigger] on a button forwards to
|
|
116
|
+
<admin-command>.show(). The shell doesn't need to know about
|
|
117
|
+
the buttons; the bespoke children own the behavior.
|
|
118
|
+
- >-
|
|
119
|
+
Legacy data-attribute shapes were retired in v0.4.0 per ADR-0024.
|
|
120
|
+
Do not author <aside data-sidebar>, <dialog data-command>,
|
|
121
|
+
[data-resize], <aside-ui slot=>, <span data-spacer>, or
|
|
122
|
+
<div data-actions> inside admin-shell.
|
|
93
123
|
|
|
94
124
|
keywords: [app-shell, shell, layout, admin, dashboard, sidebar, nav]
|
|
95
125
|
synonyms:
|
|
@@ -34,7 +34,7 @@ admin-sidebar > admin-topbar {
|
|
|
34
34
|
display: flex;
|
|
35
35
|
align-items: center;
|
|
36
36
|
gap: var(--page-header-gap);
|
|
37
|
-
padding: 0 var(--
|
|
37
|
+
padding: 0 var(--a-space-3);
|
|
38
38
|
height: var(--page-header-height);
|
|
39
39
|
font-size: var(--page-header-font);
|
|
40
40
|
border-bottom: var(--page-border);
|
|
@@ -48,7 +48,7 @@ admin-sidebar > admin-statusbar {
|
|
|
48
48
|
display: flex;
|
|
49
49
|
align-items: center;
|
|
50
50
|
gap: var(--page-header-gap);
|
|
51
|
-
padding: 0 var(--
|
|
51
|
+
padding: 0 var(--a-space-3);
|
|
52
52
|
height: var(--page-header-height);
|
|
53
53
|
font-size: var(--page-header-font);
|
|
54
54
|
color: var(--page-header-fg-muted);
|
|
@@ -22,8 +22,13 @@
|
|
|
22
22
|
═══════════════════════════════════════════════════════════════ */
|
|
23
23
|
|
|
24
24
|
admin-entity-item {
|
|
25
|
-
/* ── tunable tokens ──
|
|
26
|
-
|
|
25
|
+
/* ── tunable tokens ──
|
|
26
|
+
Gap + horizontal padding match <select-ui>'s trigger row and
|
|
27
|
+
<nav-item-ui>'s row (shared convention: --a-space-1 between
|
|
28
|
+
slots, --a-ui-px on each inline edge). Consumers can opt out
|
|
29
|
+
by setting --entity-item-px: 0 on a per-use basis. */
|
|
30
|
+
--entity-item-gap: var(--a-space-1);
|
|
31
|
+
--entity-item-px: var(--a-ui-px);
|
|
27
32
|
--entity-item-icon-size: 1rem;
|
|
28
33
|
--entity-item-icon-color: var(--a-fg-muted);
|
|
29
34
|
--entity-item-avatar-size: 1.5rem;
|
|
@@ -31,6 +36,7 @@ admin-entity-item {
|
|
|
31
36
|
display: inline-flex;
|
|
32
37
|
align-items: center;
|
|
33
38
|
gap: var(--entity-item-gap);
|
|
39
|
+
padding: 0 var(--entity-item-px);
|
|
34
40
|
min-width: 0;
|
|
35
41
|
overflow: hidden;
|
|
36
42
|
}
|
|
@@ -83,8 +83,14 @@ admin-page-header > :is(header, header-ui)[data-compact] {
|
|
|
83
83
|
padding-block: var(--page-header-px);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
/* Title row: h1 left, actions right
|
|
87
|
-
|
|
86
|
+
/* Title row: h1 left, actions right.
|
|
87
|
+
`:first-of-type` (not `:first-child`) so the row still matches when a
|
|
88
|
+
non-<div> element is prepended ahead of it — e.g. the
|
|
89
|
+
`<span data-chunk-marker>` the `?chunks` dev overlay (site/dev-chunks.js)
|
|
90
|
+
injects as the first child of every `[data-chunk]` element. With
|
|
91
|
+
`:first-child` the prepended span won the match and the title + actions
|
|
92
|
+
stacked instead of sitting on one row. */
|
|
93
|
+
admin-page-header > :is(header, header-ui) > div:first-of-type {
|
|
88
94
|
display: flex;
|
|
89
95
|
align-items: center;
|
|
90
96
|
justify-content: space-between;
|
|
@@ -176,13 +182,24 @@ admin-page-body > iframe {
|
|
|
176
182
|
}
|
|
177
183
|
}
|
|
178
184
|
|
|
179
|
-
/* Tighten the content gutter
|
|
185
|
+
/* Tighten the content gutter at medium width (tablet / narrow desktop). */
|
|
186
|
+
@container page-content (max-width: 768px) {
|
|
187
|
+
admin-page-header > :is(header, header-ui),
|
|
188
|
+
admin-page-body > :is(section, section-ui) {
|
|
189
|
+
padding-inline: var(--a-space-8);
|
|
190
|
+
}
|
|
191
|
+
admin-page-body > :is(section, section-ui) {
|
|
192
|
+
padding-block: var(--a-space-8);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* Tighten further when the article is genuinely narrow (phone). */
|
|
180
197
|
@container page-content (max-width: 480px) {
|
|
181
198
|
admin-page-header > :is(header, header-ui),
|
|
182
199
|
admin-page-body > :is(section, section-ui) {
|
|
183
|
-
padding-inline: var(--a-space-
|
|
200
|
+
padding-inline: var(--a-space-6);
|
|
184
201
|
}
|
|
185
202
|
admin-page-body > :is(section, section-ui) {
|
|
186
|
-
padding-block: var(--a-space-
|
|
203
|
+
padding-block: var(--a-space-6);
|
|
187
204
|
}
|
|
188
205
|
}
|
|
@@ -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/AdminSidebar.json",
|
|
4
4
|
"title": "AdminSidebar",
|
|
5
|
-
"description": "Module-tier shell sidebar — owns resize, snap-to-collapsed, persistence,\nand the [collapsed] reflected attribute. Sits inside <admin-shell> as\nslot=\"leading\" or slot=\"trailing\". Authors compose chrome bars + content\ninside via slot vocabulary.\n\nThis is the bespoke web-component replacement for the legacy\n<aside data-sidebar> shape
|
|
5
|
+
"description": "Module-tier shell sidebar — owns resize, snap-to-collapsed, persistence,\nand the [collapsed] reflected attribute. Sits inside <admin-shell> as\nslot=\"leading\" or slot=\"trailing\". Authors compose chrome bars + content\ninside via slot vocabulary.\n\nThis is the bespoke web-component replacement for the legacy\n<aside data-sidebar> shape per ADR-0023. The legacy shape was\nretired in v0.4.0 per ADR-0024 and is no longer recognized.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -5,9 +5,8 @@ slot="leading" or slot="trailing". Authors compose chrome bars + content
|
|
|
5
5
|
inside via slot vocabulary.
|
|
6
6
|
|
|
7
7
|
This is the bespoke web-component replacement for the legacy
|
|
8
|
-
<aside data-sidebar> shape
|
|
9
|
-
|
|
10
|
-
<admin-sidebar>.
|
|
8
|
+
<aside data-sidebar> shape per ADR-0023. The legacy shape was
|
|
9
|
+
retired in v0.4.0 per ADR-0024 and is no longer recognized.
|
|
11
10
|
|
|
12
11
|
*
|
|
13
12
|
* @see https://ui-kit.exe.xyz/site/components/admin-sidebar
|
|
@@ -12,9 +12,8 @@ description: |
|
|
|
12
12
|
inside via slot vocabulary.
|
|
13
13
|
|
|
14
14
|
This is the bespoke web-component replacement for the legacy
|
|
15
|
-
<aside data-sidebar> shape
|
|
16
|
-
|
|
17
|
-
<admin-sidebar>.
|
|
15
|
+
<aside data-sidebar> shape per ADR-0023. The legacy shape was
|
|
16
|
+
retired in v0.4.0 per ADR-0024 and is no longer recognized.
|
|
18
17
|
|
|
19
18
|
props:
|
|
20
19
|
collapsed:
|
|
@@ -115,6 +114,10 @@ a2ui:
|
|
|
115
114
|
For chrome bars inside the sidebar, prefer <admin-topbar
|
|
116
115
|
slot="header"> and <admin-statusbar slot="footer"> over raw
|
|
117
116
|
<header-ui> / <footer-ui> when authoring shell-tier markup.
|
|
117
|
+
- rule: '[resizable] attribute enables drag-resize via internal <pane-ui resizable>; persists collapsed/width to localStorage under adia-sidebar-* keys.'
|
|
118
|
+
reason: 'Resize + persistence behavior.'
|
|
119
|
+
- rule: 'For non-resizable static rails (fixed-width nav), omit [resizable]; the same primitive serves both modes.'
|
|
120
|
+
reason: 'Single primitive, two modes.'
|
|
118
121
|
|
|
119
122
|
keywords:
|
|
120
123
|
- admin-sidebar
|
|
@@ -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/AdminStatusbar.json",
|
|
4
4
|
"title": "AdminStatusbar",
|
|
5
|
-
"description": "Module-tier shell bottom chrome bar. CSS-only — no behavior, no JS.\nSame shape as <admin-topbar> (icon + heading + description + action\nclusters via slot vocabulary), conventionally used for read-only\nstatus — connection state, sync indicator, footer metadata.\n\nReplaces legacy <footer-ui> usage at shell-tier.
|
|
5
|
+
"description": "Module-tier shell bottom chrome bar. CSS-only — no behavior, no JS.\nSame shape as <admin-topbar> (icon + heading + description + action\nclusters via slot vocabulary), conventionally used for read-only\nstatus — connection state, sync indicator, footer metadata.\n\nReplaces legacy <footer-ui> usage at shell-tier per ADR-0023. The\nlegacy shape was retired in v0.4.0 per ADR-0024 and is no longer\nrecognized; new code uses <admin-statusbar> for shell-tier chrome\n(use <footer-ui> for primitive containers like Card / Drawer /\nModal).\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -11,8 +11,11 @@ description: |
|
|
|
11
11
|
clusters via slot vocabulary), conventionally used for read-only
|
|
12
12
|
status — connection state, sync indicator, footer metadata.
|
|
13
13
|
|
|
14
|
-
Replaces legacy <footer-ui> usage at shell-tier
|
|
15
|
-
ADR-
|
|
14
|
+
Replaces legacy <footer-ui> usage at shell-tier per ADR-0023. The
|
|
15
|
+
legacy shape was retired in v0.4.0 per ADR-0024 and is no longer
|
|
16
|
+
recognized; new code uses <admin-statusbar> for shell-tier chrome
|
|
17
|
+
(use <footer-ui> for primitive containers like Card / Drawer /
|
|
18
|
+
Modal).
|
|
16
19
|
|
|
17
20
|
props: {}
|
|
18
21
|
|
|
@@ -50,17 +53,15 @@ a2ui:
|
|
|
50
53
|
admin-statusbar replaces <footer-ui> at shell-tier. Same slot
|
|
51
54
|
vocabulary as <admin-topbar>; visual treatment differs (the
|
|
52
55
|
shell css applies a top-border instead of bottom).
|
|
53
|
-
- >-
|
|
54
|
-
When placed inside <admin-sidebar> or <admin-content>, admin-statusbar
|
|
55
|
-
MUST carry slot="footer". Without it the statusbar lands in the
|
|
56
|
-
default body slot instead of the chrome footer band. Canonical:
|
|
57
|
-
<admin-statusbar slot="footer">…</admin-statusbar>. admin-shell logs
|
|
58
|
-
a one-shot console.warn when the slot is missing.
|
|
59
56
|
- >-
|
|
60
57
|
For a user-identity row (avatar + name + role badge), slot a single
|
|
61
58
|
<admin-entity-item slot="heading"> rather than separate slot="icon" +
|
|
62
59
|
slot="heading" children — the wrapper collapses the name + badge
|
|
63
60
|
together inside a collapsible <admin-sidebar>, keeping the avatar.
|
|
61
|
+
- rule: 'All slots optional; common pattern is [slot="heading"] + [slot="action"] only. Empty admin-statusbar renders zero-height (no visual chrome).'
|
|
62
|
+
reason: 'Cardinality — fully optional content.'
|
|
63
|
+
- rule: 'Sits at slot="footer" of <admin-shell>, <admin-content>, or <admin-sidebar>; do not place inside <admin-page slot="footer"> (use raw <footer-ui> there).'
|
|
64
|
+
reason: 'Shell-tier vs page-tier boundary.'
|
|
64
65
|
|
|
65
66
|
keywords:
|
|
66
67
|
- admin-statusbar
|
|
@@ -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/AdminTopbar.json",
|
|
4
4
|
"title": "AdminTopbar",
|
|
5
|
-
"description": "Module-tier shell top chrome bar. CSS-only — no behavior, no JS.\nSits at the top of <admin-content>, <admin-sidebar>, or any chrome\nregion. Provides the canonical icon + heading + description +\naction-clusters layout via slot vocabulary.\n\nReplaces the legacy <header-ui> usage at shell-tier
|
|
5
|
+
"description": "Module-tier shell top chrome bar. CSS-only — no behavior, no JS.\nSits at the top of <admin-content>, <admin-sidebar>, or any chrome\nregion. Provides the canonical icon + heading + description +\naction-clusters layout via slot vocabulary.\n\nReplaces the legacy <header-ui> usage at shell-tier per ADR-0023.\nThe legacy shape was retired in v0.4.0 per ADR-0024 and is no\nlonger recognized; new code uses <admin-topbar> for shell-tier\nchrome bars (use <header-ui> for primitive containers like Card /\nDrawer / Modal).\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -11,10 +11,11 @@ description: |
|
|
|
11
11
|
region. Provides the canonical icon + heading + description +
|
|
12
12
|
action-clusters layout via slot vocabulary.
|
|
13
13
|
|
|
14
|
-
Replaces the legacy <header-ui> usage at shell-tier
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
like Card /
|
|
14
|
+
Replaces the legacy <header-ui> usage at shell-tier per ADR-0023.
|
|
15
|
+
The legacy shape was retired in v0.4.0 per ADR-0024 and is no
|
|
16
|
+
longer recognized; new code uses <admin-topbar> for shell-tier
|
|
17
|
+
chrome bars (use <header-ui> for primitive containers like Card /
|
|
18
|
+
Drawer / Modal).
|
|
18
19
|
|
|
19
20
|
props: {}
|
|
20
21
|
|
|
@@ -56,18 +57,16 @@ a2ui:
|
|
|
56
57
|
admin-topbar replaces <header-ui> at shell-tier — use it for
|
|
57
58
|
chrome bars inside admin-shell, admin-content, admin-sidebar.
|
|
58
59
|
Use <header-ui> for primitive containers (Card / Drawer / Modal).
|
|
59
|
-
- >-
|
|
60
|
-
When placed inside <admin-sidebar> or <admin-content>, admin-topbar
|
|
61
|
-
MUST carry slot="header". Without it the topbar lands in the default
|
|
62
|
-
body slot and renders below the content instead of as the chrome
|
|
63
|
-
header band. Canonical: <admin-topbar slot="header">…</admin-topbar>.
|
|
64
|
-
admin-shell logs a one-shot console.warn when the slot is missing.
|
|
65
60
|
- >-
|
|
66
61
|
For an icon + label (+ optional badge) identity row — workspace or
|
|
67
62
|
product identity — slot a single <admin-entity-item slot="heading">
|
|
68
63
|
rather than separate slot="icon" + slot="heading" children. The
|
|
69
64
|
wrapper keeps the icon and label as one unit so they truncate and
|
|
70
65
|
collapse together inside a collapsible <admin-sidebar>.
|
|
66
|
+
- rule: 'All slots optional; common pattern is [slot="heading"] + [slot="action"] only. Empty admin-topbar renders zero-height (no visual chrome).'
|
|
67
|
+
reason: 'Cardinality — fully optional content.'
|
|
68
|
+
- rule: 'Sits at slot="header" of <admin-shell>, <admin-content>, or <admin-sidebar>; do not place inside <admin-page slot="header"> (use <admin-page-header> there).'
|
|
69
|
+
reason: 'Shell-tier vs page-tier boundary.'
|
|
71
70
|
|
|
72
71
|
keywords:
|
|
73
72
|
- admin-topbar
|
|
@@ -36,6 +36,10 @@ a2ui:
|
|
|
36
36
|
- >-
|
|
37
37
|
simple-content is the article surface inside simple-shell. Use
|
|
38
38
|
for primary page body. Sibling to <simple-hero> (optional).
|
|
39
|
+
- rule: 'CSS-only — do not import its JS module (there isn''t one); does not need an `import` in shell HTML.'
|
|
40
|
+
reason: 'CSS-only primitives don''t need JS-side registration.'
|
|
41
|
+
- rule: 'For multi-page apps with chrome (nav, topbar, command palette) use <admin-shell-ui> with <admin-content> instead.'
|
|
42
|
+
reason: 'Surface decision rule — simple vs admin.'
|
|
39
43
|
|
|
40
44
|
keywords:
|
|
41
45
|
- simple-content
|
|
@@ -39,6 +39,10 @@ a2ui:
|
|
|
39
39
|
simple-hero is the optional top strip inside simple-shell. Use
|
|
40
40
|
for marketing splashes, error-page reassurance text, or single-
|
|
41
41
|
flow page intros. Always followed by <simple-content> for body.
|
|
42
|
+
- rule: 'Three named slots: heading (large title), lede (supporting subtitle), actions (button cluster). All optional but order is fixed.'
|
|
43
|
+
reason: 'Slot contract.'
|
|
44
|
+
- rule: 'CSS-only — sibling to <simple-content> inside <simple-shell>. Do not nest hero inside content or vice versa.'
|
|
45
|
+
reason: 'Composition discipline.'
|
|
42
46
|
|
|
43
47
|
keywords:
|
|
44
48
|
- simple-hero
|
|
@@ -59,6 +59,10 @@ a2ui:
|
|
|
59
59
|
Compose with <simple-hero> (optional top hero strip) and
|
|
60
60
|
<simple-content> (main article body). Both are CSS-only structural
|
|
61
61
|
children — no JS, no state.
|
|
62
|
+
- rule: '[centered] reflected attribute centers content vertically; [full-bleed] drops the max-width constraint on <simple-content> children. Both optional, default unset.'
|
|
63
|
+
reason: 'Layout-mode knobs.'
|
|
64
|
+
- rule: 'For multi-page apps with chrome (nav, topbar, command palette) use <admin-shell> instead; simple-shell has zero chrome.'
|
|
65
|
+
reason: 'Simple vs admin decision rule.'
|
|
62
66
|
|
|
63
67
|
keywords:
|
|
64
68
|
- simple-shell
|