@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.
Files changed (60) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/chat/chat-composer/chat-composer.a2ui.json +1 -1
  3. package/chat/chat-composer/chat-composer.d.ts +0 -4
  4. package/chat/chat-composer/chat-composer.yaml +4 -4
  5. package/chat/chat-empty/chat-empty.a2ui.json +1 -1
  6. package/chat/chat-empty/chat-empty.yaml +6 -2
  7. package/chat/chat-header/chat-header.a2ui.json +1 -1
  8. package/chat/chat-header/chat-header.yaml +7 -3
  9. package/chat/chat-shell/chat-shell.a2ui.json +16 -7
  10. package/chat/chat-shell/chat-shell.d.ts +15 -6
  11. package/chat/chat-shell/chat-shell.yaml +56 -16
  12. package/chat/chat-sidebar/chat-sidebar.yaml +4 -0
  13. package/chat/chat-status/chat-status.yaml +4 -0
  14. package/chat/chat-thread/chat-thread.a2ui.json +1 -1
  15. package/chat/chat-thread/chat-thread.d.ts +1 -7
  16. package/chat/chat-thread/chat-thread.yaml +4 -9
  17. package/editor/editor-canvas/editor-canvas.a2ui.json +1 -1
  18. package/editor/editor-canvas/editor-canvas.d.ts +0 -4
  19. package/editor/editor-canvas/editor-canvas.yaml +0 -4
  20. package/editor/editor-canvas-empty/editor-canvas-empty.yaml +4 -0
  21. package/editor/editor-shell/editor-shell.a2ui.json +33 -22
  22. package/editor/editor-shell/editor-shell.d.ts +22 -5
  23. package/editor/editor-shell/editor-shell.yaml +84 -37
  24. package/editor/editor-sidebar/editor-sidebar.yaml +4 -0
  25. package/editor/editor-statusbar/editor-statusbar.yaml +4 -0
  26. package/editor/editor-toolbar/editor-toolbar.a2ui.json +1 -1
  27. package/editor/editor-toolbar/editor-toolbar.d.ts +3 -2
  28. package/editor/editor-toolbar/editor-toolbar.yaml +7 -2
  29. package/package.json +1 -1
  30. package/runtime/a2ui-root/a2ui-root.a2ui.json +7 -1
  31. package/runtime/a2ui-root/a2ui-root.yaml +10 -1
  32. package/runtime/gen-root/gen-root.a2ui.json +7 -1
  33. package/runtime/gen-root/gen-root.yaml +7 -0
  34. package/shell/admin-command/admin-command.a2ui.json +1 -1
  35. package/shell/admin-command/admin-command.d.ts +2 -2
  36. package/shell/admin-command/admin-command.yaml +6 -2
  37. package/shell/admin-content/admin-content.a2ui.json +1 -1
  38. package/shell/admin-content/admin-content.yaml +6 -2
  39. package/shell/admin-entity-item/admin-entity-item.yaml +4 -0
  40. package/shell/admin-page/admin-page.yaml +4 -0
  41. package/shell/admin-page-body/admin-page-body.yaml +4 -0
  42. package/shell/admin-page-header/admin-page-header.yaml +4 -0
  43. package/shell/admin-scroll/admin-scroll.yaml +4 -0
  44. package/shell/admin-shell/admin-shell.a2ui.json +5 -5
  45. package/shell/admin-shell/admin-shell.d.ts +14 -4
  46. package/shell/admin-shell/admin-shell.js +0 -32
  47. package/shell/admin-shell/admin-shell.yaml +45 -15
  48. package/shell/admin-shell/css/admin-shell.bespoke.css +2 -2
  49. package/shell/admin-shell/css/admin-shell.entity-item.css +8 -2
  50. package/shell/admin-shell/css/admin-shell.templates.css +22 -5
  51. package/shell/admin-sidebar/admin-sidebar.a2ui.json +1 -1
  52. package/shell/admin-sidebar/admin-sidebar.d.ts +2 -3
  53. package/shell/admin-sidebar/admin-sidebar.yaml +6 -3
  54. package/shell/admin-statusbar/admin-statusbar.a2ui.json +1 -1
  55. package/shell/admin-statusbar/admin-statusbar.yaml +9 -8
  56. package/shell/admin-topbar/admin-topbar.a2ui.json +1 -1
  57. package/shell/admin-topbar/admin-topbar.yaml +9 -10
  58. package/simple/simple-content/simple-content.yaml +4 -0
  59. package/simple/simple-hero/simple-hero.yaml +4 -0
  60. 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. Wires sidebar toggles, resize handles,
9
- a Cmd+K command palette, and a ResizeObserver that drives responsive
10
- sidebar collapse. Author supplies the DOM (aside[data-sidebar], main,
11
- dialog[data-command]); admin-shell binds the interactions.
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
- Author-supplied page DOM. Expected structureaside[data-sidebar] for
50
- navigation, main for content, optional dialog[data-command] for Cmd+K.
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 — > main > header / footer and
54
- [data-sidebar] > header / footer. Muted color, flex-align.
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. Coexists with legacy
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 is a behavior wrapper; its children are native HTML landmarks
91
- (aside, main, header). Don't wrap them in col-ui/row-ui — app-shell.css
92
- handles grid layout based on [data-sidebar] attributes.
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(--page-content-inset);
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(--page-content-inset);
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
- --entity-item-gap: var(--a-space-2);
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
- admin-page-header > :is(header, header-ui) > div:first-child {
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 when the article is genuinely narrow. */
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-4);
200
+ padding-inline: var(--a-space-6);
184
201
  }
185
202
  admin-page-body > :is(section, section-ui) {
186
- padding-block: var(--a-space-4);
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. <admin-shell> still recognizes the legacy\nshape via :is() selector for backwards compat. New code should prefer\n<admin-sidebar>.\n",
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. <admin-shell> still recognizes the legacy
9
- shape via :is() selector for backwards compat. New code should prefer
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. <admin-shell> still recognizes the legacy
16
- shape via :is() selector for backwards compat. New code should prefer
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. Both still work per\nADR-0023 backwards-compat.\n",
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. Both still work per
15
- ADR-0023 backwards-compat.
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. Both still work\nper ADR-0023 backwards-compat; new code should prefer <admin-topbar>\nfor shell-tier chrome bars (use <header-ui> for primitive containers\nlike Card / Drawer / Modal).\n",
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. Both still work
15
- per ADR-0023 backwards-compat; new code should prefer <admin-topbar>
16
- for shell-tier chrome bars (use <header-ui> for primitive containers
17
- like Card / Drawer / Modal).
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