@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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog — @adia-ai/web-modules
|
|
2
2
|
|
|
3
|
+
## [0.6.22] — 2026-05-22
|
|
4
|
+
|
|
5
|
+
### Changed — `admin-topbar` and `admin-statusbar` use fixed `--a-space-3` padding instead of content inset
|
|
6
|
+
|
|
7
|
+
- **Topbar and statusbar inline padding changed from `0 var(--page-content-inset)` to `0 var(--a-space-3)` (12px).** The bars are navigation chrome, not page content — using the 40px content inset was excessively wide and inconsistent with other shell-tier chrome. The sidebar override (`admin-sidebar > :is(admin-topbar, admin-statusbar)`) still applies `--page-sidebar-px` for the sidebar context. Files: `css/admin-shell.bespoke.css`.
|
|
8
|
+
|
|
9
|
+
### Changed — content inset breakpoints added for `admin-page-header` and `admin-page-body`
|
|
10
|
+
|
|
11
|
+
- **Two new `@container page-content` breakpoints tighten the page gutter on narrow viewports.** At `≤ 768px` inline padding becomes `--a-space-8` (32px); at `≤ 480px` it becomes `--a-space-6` (24px), replacing the previous single breakpoint that used `--a-space-4` (16px). Both `padding-inline` and `padding-block` are covered for `admin-page-body > section`. File: `css/admin-shell.templates.css`.
|
|
12
|
+
|
|
13
|
+
### Documentation — yaml SoT completeness sweep across `chat/`, `editor/`, `runtime/`, `simple/` clusters
|
|
14
|
+
|
|
15
|
+
- **§404–§409 + Arc A–E yaml SoT campaign** touched composite-element yamls under `packages/web-modules/chat/`, `packages/web-modules/editor/`, `packages/web-modules/runtime/`, and `packages/web-modules/simple/`. Arc A populated 31 `a2ui.rules` for shell-composition-relevant primitives; Arc B expanded 27 short descriptions to 3-sentence canonical prose; Arcs C+D completed 87 yamls and lifted zettel coverage 5% → 49%; Arc E backfilled keywords/synonyms/related on 67 yamls; §408 groomed thin-rule primitives + fixed a catalog-renderer bug; §409 added regression gates + a fork-4 module-tier groom. Side-effects: `chat-composer`, `chat-empty`, `chat-header`, `chat-shell`, `chat-sidebar`, `chat-status`, `chat-thread`, `editor-canvas-empty`, `editor-canvas`, `editor-shell`, `editor-sidebar`, and the `runtime/` + `simple/` cluster regenerated `.a2ui.json` + `.d.ts` sidecars from the updated yaml.
|
|
16
|
+
|
|
17
|
+
## [0.6.21] — 2026-05-21
|
|
18
|
+
|
|
19
|
+
### Changed — `<admin-entity-item>` row insets aligned to shared select / nav-item-ui row convention
|
|
20
|
+
|
|
21
|
+
- **`--entity-item-gap`: `--a-space-2` → `--a-space-1`** (matches `--select-trigger-gap` + `--nav-item-row-gap`) and **NEW `--entity-item-px: --a-ui-px` token** with `padding: 0 var(--entity-item-px)` on the host rule (matches `--select-px` + `--nav-item-row-px`). Identity rows now read as the same shared row vocabulary used inside `<select-ui>` triggers and `<nav-item-ui>` rows — visibly tighter gap between icon / label / badge, plus consistent inline padding. Both tunable: a consumer who finds the inset double-pads inside a particular parent context can set `--entity-item-px: 0` on a per-use basis. Files: `css/admin-shell.entity-item.css`.
|
|
22
|
+
|
|
23
|
+
### Fixed — `admin-shell` no longer emits a spurious slot-contract `console.warn`
|
|
24
|
+
|
|
25
|
+
- **The one-shot `console.warn` for `<admin-topbar>` / `<admin-statusbar>` missing `slot="header"` / `slot="footer"` (shipped in 0.6.20, FEEDBACK-37) is reverted — it was a false positive.** `<admin-content>` and `<admin-sidebar>` are CSS-only light-DOM elements with no shadow root, so a `slot=` attribute is inert (no projection), and no CSS selector targets `[slot="header"]` / `[slot="footer"]` for them — the topbar/statusbar are positioned purely by tag + DOM order (`admin-content > admin-topbar { … }`). The bars render identically with or without the slot; the warn fired on correct markup with a message that was factually wrong ("renders in the default body slot"). FEEDBACK-37's premise — that the slot is load-bearing — did not hold. Removed: `admin-shell.js` `#checkSlotContracts()` + the `MUST carry slot` `a2ui.rules` in `admin-topbar.yaml` / `admin-statusbar.yaml`.
|
|
26
|
+
|
|
27
|
+
### Fixed — page-header title row no longer stacks under the `?chunks` dev overlay
|
|
28
|
+
|
|
29
|
+
- **The `<admin-page-header>` title row (`h1` left, actions right) used a `:first-child` selector that broke when the `?chunks=1` dev overlay was active.** `site/dev-chunks.js` prepends a `<span data-chunk-marker>` into every `[data-chunk]` element; on a page-header `<header data-chunk="…">` that span displaced the title `<div>` from `:first-child`, so the flex-row rule (`display: flex; justify-content: space-between`) stopped matching — the title and the action buttons stacked vertically instead of sharing a row. The selector is now `div:first-of-type`, which a prepended non-`<div>` sibling cannot displace. Production (overlay off) was unaffected; this fixes the chunks-on dev view. Files: `css/admin-shell.templates.css`.
|
|
30
|
+
|
|
3
31
|
## [0.6.20] — 2026-05-21
|
|
4
32
|
|
|
5
33
|
### Added — `<admin-entity-item>` shell identity-row primitive (FEEDBACK-38)
|
|
@@ -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/ChatComposer.json",
|
|
4
4
|
"title": "ChatComposer",
|
|
5
|
-
"description": "Module-tier chat composer wrapper — replaces legacy <chat-input-ui\ndata-chat-input> direct child of <chat-shell> per ADR-0023.\nForwards submit events as 'composer-submit', propagates [disabled]\nto the inner input, provides slot vocabulary for future composer\nsurfaces (file attach, autocomplete, model picker).\n\nSits inside <chat-shell> as the input region (typically inside or\nalongside the footer). Authors place an inner <chat-input-ui>\n(or input-ui / textarea-ui) as the primary input.\n
|
|
5
|
+
"description": "Module-tier chat composer wrapper — replaces legacy <chat-input-ui\ndata-chat-input> direct child of <chat-shell> per ADR-0023.\nForwards submit events as 'composer-submit', propagates [disabled]\nto the inner input, provides slot vocabulary for future composer\nsurfaces (file attach, autocomplete, model picker).\n\nSits inside <chat-shell> as the input region (typically inside or\nalongside the footer). Authors place an inner <chat-input-ui>\n(or input-ui / textarea-ui) as the primary input.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -9,10 +9,6 @@ Sits inside <chat-shell> as the input region (typically inside or
|
|
|
9
9
|
alongside the footer). Authors place an inner <chat-input-ui>
|
|
10
10
|
(or input-ui / textarea-ui) as the primary input.
|
|
11
11
|
|
|
12
|
-
Backwards compat — <chat-shell> still recognizes the legacy
|
|
13
|
-
<chat-input-ui data-chat-input> shape via :is() selector. New
|
|
14
|
-
code should prefer <chat-composer>.
|
|
15
|
-
|
|
16
12
|
*
|
|
17
13
|
* @see https://ui-kit.exe.xyz/site/components/chat-composer
|
|
18
14
|
*
|
|
@@ -16,10 +16,6 @@ description: |
|
|
|
16
16
|
alongside the footer). Authors place an inner <chat-input-ui>
|
|
17
17
|
(or input-ui / textarea-ui) as the primary input.
|
|
18
18
|
|
|
19
|
-
Backwards compat — <chat-shell> still recognizes the legacy
|
|
20
|
-
<chat-input-ui data-chat-input> shape via :is() selector. New
|
|
21
|
-
code should prefer <chat-composer>.
|
|
22
|
-
|
|
23
19
|
props:
|
|
24
20
|
disabled:
|
|
25
21
|
description: |
|
|
@@ -72,6 +68,10 @@ a2ui:
|
|
|
72
68
|
The host listens for 'composer-submit' on the composer (not on
|
|
73
69
|
the inner input). The event detail mirrors the inner submit
|
|
74
70
|
event so existing handlers Just Work.
|
|
71
|
+
- rule: 'Default slot holds a single <chat-input-ui> child; trailing/attach/leading slots host action buttons (send, attach, model picker).'
|
|
72
|
+
reason: 'Slot contract — single input + action clusters.'
|
|
73
|
+
- rule: 'For non-chat input surfaces (forms, prompts, search) use <chat-input-ui> directly without the composer wrapper.'
|
|
74
|
+
reason: 'Chat-cluster vs standalone usage.'
|
|
75
75
|
|
|
76
76
|
keywords:
|
|
77
77
|
- chat-composer
|
|
@@ -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/ChatEmpty.json",
|
|
4
4
|
"title": "ChatEmpty",
|
|
5
|
-
"description": "Module-tier chat empty state. CSS-only — no behavior, no JS. Sits\nas the first child of <chat-thread> as the empty state placeholder.\nVisibility is driven by <chat-thread>'s [empty] reflected attribute\nvia CSS (no JS toggling needed) — when messages arrive, the parent\nthread loses [empty] and CSS hides this stub.\n\nReplaces the legacy <empty-state-ui data-chat-empty> child of the\nmessages container per ADR-0023.
|
|
5
|
+
"description": "Module-tier chat empty state. CSS-only — no behavior, no JS. Sits\nas the first child of <chat-thread> as the empty state placeholder.\nVisibility is driven by <chat-thread>'s [empty] reflected attribute\nvia CSS (no JS toggling needed) — when messages arrive, the parent\nthread loses [empty] and CSS hides this stub.\n\nReplaces the legacy <empty-state-ui data-chat-empty> child of the\nmessages container per ADR-0023. The legacy shape was retired in\nv0.4.0 per ADR-0024 and is no longer recognized.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -13,8 +13,8 @@ description: |
|
|
|
13
13
|
thread loses [empty] and CSS hides this stub.
|
|
14
14
|
|
|
15
15
|
Replaces the legacy <empty-state-ui data-chat-empty> child of the
|
|
16
|
-
messages container per ADR-0023.
|
|
17
|
-
|
|
16
|
+
messages container per ADR-0023. The legacy shape was retired in
|
|
17
|
+
v0.4.0 per ADR-0024 and is no longer recognized.
|
|
18
18
|
|
|
19
19
|
props: {}
|
|
20
20
|
|
|
@@ -42,6 +42,10 @@ a2ui:
|
|
|
42
42
|
<empty-state-ui data-chat-empty>. Place as the first child of
|
|
43
43
|
<chat-thread>; visibility is automatic via the [empty]
|
|
44
44
|
reflected attribute.
|
|
45
|
+
- rule: 'CSS-only — no JS module needed in shell HTML imports.'
|
|
46
|
+
reason: 'CSS-only primitive.'
|
|
47
|
+
- rule: 'For non-chat empty states (lists, tables, canvas) use <empty-state-ui> primitive instead; chat-empty is chat-cluster-namespaced.'
|
|
48
|
+
reason: 'Cluster vs primitive distinction.'
|
|
45
49
|
|
|
46
50
|
keywords:
|
|
47
51
|
- chat-empty
|
|
@@ -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/ChatHeader.json",
|
|
4
4
|
"title": "ChatHeader",
|
|
5
|
-
"description": "Module-tier chat header chrome bar. CSS-only — no behavior, no JS.\nSits at the top of <chat-shell> or inside a <chat-sidebar>. Holds\nthe chat name, status indicator, and action clusters via slot\nvocabulary.\n\nReplaces the legacy <header> with [data-chat-name] / [data-chat-status]\ndata-attribute children.
|
|
5
|
+
"description": "Module-tier chat header chrome bar. CSS-only — no behavior, no JS.\nSits at the top of <chat-shell> or inside a <chat-sidebar>. Holds\nthe chat name, status indicator, and action clusters via slot\nvocabulary.\n\nReplaces the legacy <header> with [data-chat-name] / [data-chat-status]\ndata-attribute children per ADR-0023. The legacy shape was retired\nin v0.4.0 per ADR-0024 and is no longer recognized; new code uses\n<chat-header> with <chat-status> as a slotted child.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -12,9 +12,9 @@ description: |
|
|
|
12
12
|
vocabulary.
|
|
13
13
|
|
|
14
14
|
Replaces the legacy <header> with [data-chat-name] / [data-chat-status]
|
|
15
|
-
data-attribute children
|
|
16
|
-
|
|
17
|
-
a slotted child.
|
|
15
|
+
data-attribute children per ADR-0023. The legacy shape was retired
|
|
16
|
+
in v0.4.0 per ADR-0024 and is no longer recognized; new code uses
|
|
17
|
+
<chat-header> with <chat-status> as a slotted child.
|
|
18
18
|
|
|
19
19
|
props: {}
|
|
20
20
|
|
|
@@ -51,6 +51,10 @@ a2ui:
|
|
|
51
51
|
chat-header replaces the legacy <header> chrome bar inside
|
|
52
52
|
<chat-shell>. Use named slots for canonical clusters; ad-hoc
|
|
53
53
|
content goes in the default slot.
|
|
54
|
+
- rule: 'Slots: [slot="name"] for chat title, [slot="status"] for streaming/connection indicator (<chat-status>), [slot="action"] for action buttons.'
|
|
55
|
+
reason: 'Slot contract.'
|
|
56
|
+
- rule: 'For admin-shell-style chrome bars inside chat-shell, use <admin-topbar> instead — chat-header is for in-chat metadata only.'
|
|
57
|
+
reason: 'Chat-metadata vs shell-chrome distinction.'
|
|
54
58
|
|
|
55
59
|
keywords:
|
|
56
60
|
- chat-header
|
|
@@ -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/ChatShell.json",
|
|
4
4
|
"title": "ChatShell",
|
|
5
|
-
"description": "Behavior-only chat orchestrator (LLM-streaming module).
|
|
5
|
+
"description": "Behavior-only chat orchestrator (LLM-streaming module). Canonical\nauthoring shape uses cluster-namespaced bespoke children —\n<chat-thread> as the message scroll surface (containing <chat-empty>\nas the empty-state slot), <chat-composer> wrapping the input\nprimitive, and optional <chat-header> / <chat-sidebar> / <chat-status>\nchrome. The shell wires LLM streaming, markdown rendering, code-block\nupgrades, and the proxy-url integration path; each bespoke child owns\nits own [streaming] / [empty] / [disabled] state-as-attribute\nsemantics per ADR-0023.\n\nLegacy data-attribute shapes (<section data-chat-messages>,\n<chat-input-ui data-chat-input>, <empty-state-ui data-chat-empty>,\n<header data-chat-name>) were RETIRED in v0.4.0 per ADR-0024 and\nare no longer recognized. Consumers must use the bespoke vocabulary.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"default": ""
|
|
33
33
|
},
|
|
34
34
|
"streaming": {
|
|
35
|
-
"description": "Active streaming indicator; toggled while a response is being received.",
|
|
35
|
+
"description": "Active streaming indicator; toggled while a response is being received. Propagated to <chat-thread>[streaming] and <chat-composer>[disabled].",
|
|
36
36
|
"type": "boolean",
|
|
37
37
|
"default": false
|
|
38
38
|
},
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
96
|
"submit": {
|
|
97
|
-
"description": "Fired on user message submit (before LLM call begins).",
|
|
97
|
+
"description": "Fired on user message submit (before LLM call begins). Forwarded from <chat-composer>'s composer-submit event.",
|
|
98
98
|
"detail": {
|
|
99
99
|
"model": "string",
|
|
100
100
|
"text": "string"
|
|
@@ -114,16 +114,23 @@
|
|
|
114
114
|
"llm",
|
|
115
115
|
"streaming",
|
|
116
116
|
"conversation",
|
|
117
|
-
"agent"
|
|
117
|
+
"agent",
|
|
118
|
+
"assistant"
|
|
118
119
|
],
|
|
119
120
|
"name": "ChatShell",
|
|
120
121
|
"related": [
|
|
122
|
+
"ChatThread",
|
|
123
|
+
"ChatComposer",
|
|
124
|
+
"ChatEmpty",
|
|
125
|
+
"ChatHeader",
|
|
126
|
+
"ChatSidebar",
|
|
127
|
+
"ChatStatus",
|
|
121
128
|
"ChatInput",
|
|
122
129
|
"Code"
|
|
123
130
|
],
|
|
124
131
|
"slots": {
|
|
125
132
|
"default": {
|
|
126
|
-
"description": "
|
|
133
|
+
"description": "Bespoke children compose here in document order — typically <chat-thread> (with optional <chat-empty> inside) for the message surface, then <chat-composer> wrapping a <chat-input-ui submit-on-enter> for the input. Optional <chat-header>, <chat-sidebar slot=\"leading|trailing\">, <chat-status>."
|
|
127
134
|
}
|
|
128
135
|
},
|
|
129
136
|
"states": [
|
|
@@ -132,7 +139,7 @@
|
|
|
132
139
|
"name": "idle"
|
|
133
140
|
},
|
|
134
141
|
{
|
|
135
|
-
"description": "An LLM request is in-flight; [
|
|
142
|
+
"description": "An LLM request is in-flight; child <chat-thread>[streaming] + <chat-composer>[disabled] propagate from this attribute.",
|
|
136
143
|
"attribute": "streaming",
|
|
137
144
|
"name": "streaming"
|
|
138
145
|
}
|
|
@@ -141,7 +148,9 @@
|
|
|
141
148
|
"chat": [
|
|
142
149
|
"conversation",
|
|
143
150
|
"messages",
|
|
144
|
-
"thread"
|
|
151
|
+
"thread",
|
|
152
|
+
"assistant",
|
|
153
|
+
"agent"
|
|
145
154
|
]
|
|
146
155
|
},
|
|
147
156
|
"tag": "chat-shell",
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `<chat-shell-ui>` — Behavior-only chat orchestrator (LLM-streaming module).
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
* `<chat-shell-ui>` — Behavior-only chat orchestrator (LLM-streaming module). Canonical
|
|
3
|
+
authoring shape uses cluster-namespaced bespoke children —
|
|
4
|
+
<chat-thread> as the message scroll surface (containing <chat-empty>
|
|
5
|
+
as the empty-state slot), <chat-composer> wrapping the input
|
|
6
|
+
primitive, and optional <chat-header> / <chat-sidebar> / <chat-status>
|
|
7
|
+
chrome. The shell wires LLM streaming, markdown rendering, code-block
|
|
8
|
+
upgrades, and the proxy-url integration path; each bespoke child owns
|
|
9
|
+
its own [streaming] / [empty] / [disabled] state-as-attribute
|
|
10
|
+
semantics per ADR-0023.
|
|
11
|
+
|
|
12
|
+
Legacy data-attribute shapes (<section data-chat-messages>,
|
|
13
|
+
<chat-input-ui data-chat-input>, <empty-state-ui data-chat-empty>,
|
|
14
|
+
<header data-chat-name>) were RETIRED in v0.4.0 per ADR-0024 and
|
|
15
|
+
are no longer recognized. Consumers must use the bespoke vocabulary.
|
|
7
16
|
|
|
8
17
|
*
|
|
9
18
|
* @see https://ui-kit.exe.xyz/site/components/chat-shell
|
|
@@ -63,7 +72,7 @@ export class ChatShell extends UIElement {
|
|
|
63
72
|
provider: string;
|
|
64
73
|
/** API proxy endpoint for LLM calls; enables self-contained chat without external wiring. */
|
|
65
74
|
proxyUrl: string;
|
|
66
|
-
/** Active streaming indicator; toggled while a response is being received. */
|
|
75
|
+
/** Active streaming indicator; toggled while a response is being received. Propagated to <chat-thread>[streaming] and <chat-composer>[disabled]. */
|
|
67
76
|
streaming: boolean;
|
|
68
77
|
/** System prompt prepended to conversations. */
|
|
69
78
|
system: string;
|
|
@@ -5,22 +5,32 @@ component: ChatShell
|
|
|
5
5
|
category: container
|
|
6
6
|
version: 1
|
|
7
7
|
description: |
|
|
8
|
-
Behavior-only chat orchestrator (LLM-streaming module).
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
Behavior-only chat orchestrator (LLM-streaming module). Canonical
|
|
9
|
+
authoring shape uses cluster-namespaced bespoke children —
|
|
10
|
+
<chat-thread> as the message scroll surface (containing <chat-empty>
|
|
11
|
+
as the empty-state slot), <chat-composer> wrapping the input
|
|
12
|
+
primitive, and optional <chat-header> / <chat-sidebar> / <chat-status>
|
|
13
|
+
chrome. The shell wires LLM streaming, markdown rendering, code-block
|
|
14
|
+
upgrades, and the proxy-url integration path; each bespoke child owns
|
|
15
|
+
its own [streaming] / [empty] / [disabled] state-as-attribute
|
|
16
|
+
semantics per ADR-0023.
|
|
17
|
+
|
|
18
|
+
Legacy data-attribute shapes (<section data-chat-messages>,
|
|
19
|
+
<chat-input-ui data-chat-input>, <empty-state-ui data-chat-empty>,
|
|
20
|
+
<header data-chat-name>) were RETIRED in v0.4.0 per ADR-0024 and
|
|
21
|
+
are no longer recognized. Consumers must use the bespoke vocabulary.
|
|
13
22
|
|
|
14
23
|
# Per ADR-0027 — primitives that programmatically create other primitives
|
|
15
24
|
# do NOT auto-import them. Consumer (or demo shell) must explicitly import.
|
|
16
25
|
composes:
|
|
17
26
|
- code-ui
|
|
27
|
+
|
|
18
28
|
props:
|
|
19
29
|
streaming:
|
|
20
30
|
type: boolean
|
|
21
31
|
default: false
|
|
22
32
|
reflect: true
|
|
23
|
-
description: Active streaming indicator; toggled while a response is being received.
|
|
33
|
+
description: Active streaming indicator; toggled while a response is being received. Propagated to <chat-thread>[streaming] and <chat-composer>[disabled].
|
|
24
34
|
|
|
25
35
|
provider:
|
|
26
36
|
type: string
|
|
@@ -55,7 +65,7 @@ props:
|
|
|
55
65
|
|
|
56
66
|
events:
|
|
57
67
|
submit:
|
|
58
|
-
description: Fired on user message submit (before LLM call begins).
|
|
68
|
+
description: Fired on user message submit (before LLM call begins). Forwarded from <chat-composer>'s composer-submit event.
|
|
59
69
|
detail:
|
|
60
70
|
text: string
|
|
61
71
|
model: string
|
|
@@ -99,25 +109,55 @@ events:
|
|
|
99
109
|
slots:
|
|
100
110
|
default:
|
|
101
111
|
description: >-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
112
|
+
Bespoke children compose here in document order — typically
|
|
113
|
+
<chat-thread> (with optional <chat-empty> inside) for the message
|
|
114
|
+
surface, then <chat-composer> wrapping a <chat-input-ui
|
|
115
|
+
submit-on-enter> for the input. Optional <chat-header>,
|
|
116
|
+
<chat-sidebar slot="leading|trailing">, <chat-status>.
|
|
105
117
|
|
|
106
118
|
states:
|
|
107
119
|
- name: idle
|
|
108
120
|
description: No active request.
|
|
109
121
|
- name: streaming
|
|
110
122
|
attribute: streaming
|
|
111
|
-
description: An LLM request is in-flight; [
|
|
123
|
+
description: An LLM request is in-flight; child <chat-thread>[streaming] + <chat-composer>[disabled] propagate from this attribute.
|
|
112
124
|
|
|
113
125
|
traits: []
|
|
114
126
|
|
|
115
127
|
a2ui:
|
|
116
128
|
rules:
|
|
117
|
-
-
|
|
118
|
-
|
|
129
|
+
- >-
|
|
130
|
+
chat-shell takes bespoke chat-* children only. The canonical
|
|
131
|
+
composition is <chat-thread> (with optional first-child
|
|
132
|
+
<chat-empty>) followed by <chat-composer> wrapping a
|
|
133
|
+
<chat-input-ui submit-on-enter>. Add <chat-header> /
|
|
134
|
+
<chat-sidebar> / <chat-status> as needed.
|
|
135
|
+
- >-
|
|
136
|
+
Don't nest col-ui / row-ui or generic layout primitives directly
|
|
137
|
+
inside chat-shell — the shell's CSS reads child tag selectors to
|
|
138
|
+
lay them out. Generic layout goes inside the bespoke children.
|
|
139
|
+
- >-
|
|
140
|
+
The shell listens for 'composer-submit' on <chat-composer> (not
|
|
141
|
+
on the inner input). Streaming state is reflected on this host
|
|
142
|
+
and propagates to <chat-thread>[streaming] + <chat-composer>[disabled]
|
|
143
|
+
automatically — don't toggle child attributes manually.
|
|
144
|
+
- >-
|
|
145
|
+
Legacy data-attribute shapes were retired in v0.4.0 per ADR-0024.
|
|
146
|
+
Do not author <section data-chat-messages>, <chat-input-ui
|
|
147
|
+
data-chat-input>, <empty-state-ui data-chat-empty>, or <header
|
|
148
|
+
data-chat-name> inside chat-shell.
|
|
149
|
+
|
|
150
|
+
keywords: [chat-shell, chat, llm, streaming, conversation, agent, assistant]
|
|
119
151
|
|
|
120
|
-
keywords: [chat-shell, chat, llm, streaming, conversation, agent]
|
|
121
152
|
synonyms:
|
|
122
|
-
chat: [conversation, messages, thread]
|
|
123
|
-
|
|
153
|
+
chat: [conversation, messages, thread, assistant, agent]
|
|
154
|
+
|
|
155
|
+
related:
|
|
156
|
+
- ChatThread
|
|
157
|
+
- ChatComposer
|
|
158
|
+
- ChatEmpty
|
|
159
|
+
- ChatHeader
|
|
160
|
+
- ChatSidebar
|
|
161
|
+
- ChatStatus
|
|
162
|
+
- ChatInput
|
|
163
|
+
- Code
|
|
@@ -117,6 +117,10 @@ a2ui:
|
|
|
117
117
|
For chrome bars inside the sidebar, prefer <admin-topbar
|
|
118
118
|
slot="header"> and <admin-statusbar slot="footer"> over raw
|
|
119
119
|
<header-ui> / <footer-ui> when authoring shell-tier markup.
|
|
120
|
+
- rule: 'Use cluster-distinct localStorage key (adia-chat-sidebar-*) to avoid collisions with admin (adia-sidebar-*) and editor (adia-editor-sidebar-*) sidebars.'
|
|
121
|
+
reason: 'Per-cluster persistence isolation.'
|
|
122
|
+
- rule: 'For chat-list / conversation-switcher content, host <nav-ui> + <nav-item-ui> children in the default slot.'
|
|
123
|
+
reason: 'Common composition pattern.'
|
|
120
124
|
|
|
121
125
|
keywords:
|
|
122
126
|
- chat-sidebar
|
|
@@ -36,6 +36,10 @@ a2ui:
|
|
|
36
36
|
chat-status replaces legacy <span data-chat-status> for the
|
|
37
37
|
streaming/connection indicator. Place inside <chat-header
|
|
38
38
|
slot="status">.
|
|
39
|
+
- rule: 'CSS-only — content is innerHTML (typically a short status word like ''connected'' or ''streaming'' or an icon).'
|
|
40
|
+
reason: 'Decorative primitive.'
|
|
41
|
+
- rule: 'Use [data-state="streaming|connected|disconnected|..."] for token-driven coloring; the CSS reads the state attribute for tinting.'
|
|
42
|
+
reason: 'State-driven styling knob.'
|
|
39
43
|
|
|
40
44
|
keywords:
|
|
41
45
|
- chat-status
|
|
@@ -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/ChatThread.json",
|
|
4
4
|
"title": "ChatThread",
|
|
5
|
-
"description": "Module-tier chat message thread container — replaces legacy\n<section data-chat-messages> per ADR-0023. Owns scroll-to-bottom\non new message (with user-scroll-up suspension), [streaming] and\n[empty] reflected attributes, and a stable target for the host's\nmessage rendering pipeline.\n\nSits inside <chat-shell> as the central scroll surface. Authors
|
|
5
|
+
"description": "Module-tier chat message thread container — replaces legacy\n<section data-chat-messages> per ADR-0023. Owns scroll-to-bottom\non new message (with user-scroll-up suspension), [streaming] and\n[empty] reflected attributes, and a stable target for the host's\nmessage rendering pipeline.\n\nSits inside <chat-shell> as the central scroll surface. Authors compose <chat-empty> as an optional first child for the empty state; message children are appended dynamically by the host.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -5,13 +5,7 @@ on new message (with user-scroll-up suspension), [streaming] and
|
|
|
5
5
|
[empty] reflected attributes, and a stable target for the host's
|
|
6
6
|
message rendering pipeline.
|
|
7
7
|
|
|
8
|
-
Sits inside <chat-shell> as the central scroll surface. Authors
|
|
9
|
-
compose <chat-empty> as an optional first child for the empty
|
|
10
|
-
state; message children are appended dynamically by the host.
|
|
11
|
-
|
|
12
|
-
Backwards compat — <chat-shell> still recognizes the legacy
|
|
13
|
-
<section data-chat-messages> shape via :is() selector. New code
|
|
14
|
-
should prefer <chat-thread>.
|
|
8
|
+
Sits inside <chat-shell> as the central scroll surface. Authors compose <chat-empty> as an optional first child for the empty state; message children are appended dynamically by the host.
|
|
15
9
|
|
|
16
10
|
*
|
|
17
11
|
* @see https://ui-kit.exe.xyz/site/components/chat-thread
|
|
@@ -16,18 +16,9 @@ description: 'Module-tier chat message thread container — replaces legacy
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
Sits inside <chat-shell> as the central scroll surface. Authors
|
|
19
|
-
|
|
20
19
|
compose <chat-empty> as an optional first child for the empty
|
|
21
|
-
|
|
22
20
|
state; message children are appended dynamically by the host.
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
Backwards compat — <chat-shell> still recognizes the legacy
|
|
26
|
-
|
|
27
|
-
<section data-chat-messages> shape via :is() selector. New code
|
|
28
|
-
|
|
29
|
-
should prefer <chat-thread>.
|
|
30
|
-
|
|
31
22
|
'
|
|
32
23
|
props:
|
|
33
24
|
streaming:
|
|
@@ -71,6 +62,10 @@ a2ui:
|
|
|
71
62
|
scroll surface; the host appends dynamic message divs as children.
|
|
72
63
|
- Place <chat-empty> as an optional first child for the empty state; the [empty] reflected attribute drives its visibility
|
|
73
64
|
via CSS (no JS toggling).
|
|
65
|
+
- rule: 'Different from primitive <chat-thread-ui>: chat-thread (no -ui suffix) is the module-tier shell-aware version with scroll-on-new-message + load-more + empty-state coordination.'
|
|
66
|
+
reason: 'Primitive vs cluster-child sibling distinction.'
|
|
67
|
+
- rule: 'Hosts message blocks (typically agent/user message rows) as default-slot children; <chat-empty> goes as first child for the empty state.'
|
|
68
|
+
reason: 'Composition contract.'
|
|
74
69
|
keywords:
|
|
75
70
|
- chat-thread
|
|
76
71
|
- message-list
|
|
@@ -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/EditorCanvas.json",
|
|
4
4
|
"title": "EditorCanvas",
|
|
5
|
-
"description": "Module-tier editor canvas surface — replaces legacy <div data-canvas>\ninside <editor-shell> per ADR-0023. Owns scroll/zoom container\nsemantics, [empty] and [focused] reflected attributes, and a stable\ntarget for the host's content rendering pipeline.\n\nSits as the central content region inside <editor-shell>, between\nthe optional <editor-sidebar slot=\"leading\"> and <editor-sidebar\nslot=\"trailing\">. Authors compose <editor-canvas-empty> as an\noptional first child for the empty state; canvas content children\n(artboards, document body, etc.) are appended either statically or\ndynamically by the host.\n
|
|
5
|
+
"description": "Module-tier editor canvas surface — replaces legacy <div data-canvas>\ninside <editor-shell> per ADR-0023. Owns scroll/zoom container\nsemantics, [empty] and [focused] reflected attributes, and a stable\ntarget for the host's content rendering pipeline.\n\nSits as the central content region inside <editor-shell>, between\nthe optional <editor-sidebar slot=\"leading\"> and <editor-sidebar\nslot=\"trailing\">. Authors compose <editor-canvas-empty> as an\noptional first child for the empty state; canvas content children\n(artboards, document body, etc.) are appended either statically or\ndynamically by the host.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -11,10 +11,6 @@ optional first child for the empty state; canvas content children
|
|
|
11
11
|
(artboards, document body, etc.) are appended either statically or
|
|
12
12
|
dynamically by the host.
|
|
13
13
|
|
|
14
|
-
Backwards compat — <editor-shell> still recognizes the legacy
|
|
15
|
-
<div data-canvas> shape via :is() selector. New code should prefer
|
|
16
|
-
<editor-canvas>.
|
|
17
|
-
|
|
18
14
|
*
|
|
19
15
|
* @see https://ui-kit.exe.xyz/site/components/editor-canvas
|
|
20
16
|
*
|
|
@@ -18,10 +18,6 @@ description: |
|
|
|
18
18
|
(artboards, document body, etc.) are appended either statically or
|
|
19
19
|
dynamically by the host.
|
|
20
20
|
|
|
21
|
-
Backwards compat — <editor-shell> still recognizes the legacy
|
|
22
|
-
<div data-canvas> shape via :is() selector. New code should prefer
|
|
23
|
-
<editor-canvas>.
|
|
24
|
-
|
|
25
21
|
props:
|
|
26
22
|
empty:
|
|
27
23
|
description: |
|
|
@@ -39,6 +39,10 @@ a2ui:
|
|
|
39
39
|
editor-canvas-empty is the bespoke empty-state slot for
|
|
40
40
|
<editor-canvas>. Place as the first child of <editor-canvas>;
|
|
41
41
|
visibility is automatic via the [empty] reflected attribute.
|
|
42
|
+
- rule: 'CSS-only — no JS module needed in shell HTML imports.'
|
|
43
|
+
reason: 'CSS-only primitive.'
|
|
44
|
+
- rule: 'For non-editor canvas empty states (raw <canvas-ui>) use <empty-state-ui> instead; editor-canvas-empty is editor-cluster-namespaced.'
|
|
45
|
+
reason: 'Cluster vs primitive distinction.'
|
|
42
46
|
|
|
43
47
|
keywords:
|
|
44
48
|
- editor-canvas-empty
|
|
@@ -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/EditorShell.json",
|
|
4
4
|
"title": "EditorShell",
|
|
5
|
-
"description": "Behavior-only editor shell
|
|
5
|
+
"description": "Behavior-only editor shell for design-tool / code-editor / canvas\nlayouts. Canonical authoring shape uses cluster-namespaced bespoke\nchildren — <editor-toolbar> at the top, <editor-sidebar\nslot=\"leading|trailing\"> rails wrapping <pane-ui resizable>,\n<editor-canvas> as the central work surface (optionally containing\n<editor-canvas-toolbar> + <editor-canvas-empty>), and\n<editor-statusbar> at the bottom. The shell coordinates the family,\npropagates [focus-mode] to children's [full-screen] / [focused],\nand lets each child own its own state-as-attribute semantics per\nADR-0023.\n\nLegacy data-attribute shapes (<header>, <div data-editor-body>,\n<pane-ui data-left|data-right>, <div data-canvas>, <footer>,\n<span data-spacer>) were RETIRED in v0.4.0 per ADR-0024 and are no\nlonger recognized. Consumers must use the bespoke vocabulary.\n",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
"properties": {
|
|
16
16
|
"component": {
|
|
17
17
|
"const": "EditorShell"
|
|
18
|
+
},
|
|
19
|
+
"focusMode": {
|
|
20
|
+
"description": "Reflected — when set, the shell enters distraction-free mode and\npropagates a matching [full-screen] / [focused] state to its\nbespoke children (editor-toolbar gains [full-screen], editor-canvas\ngains [focused]). Typically toggled by a [data-toolbar-action]\nbutton inside <editor-toolbar>.\n",
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"default": false
|
|
18
23
|
}
|
|
19
24
|
},
|
|
20
25
|
"required": [
|
|
@@ -31,41 +36,47 @@
|
|
|
31
36
|
"editor-shell",
|
|
32
37
|
"editor",
|
|
33
38
|
"design-tool",
|
|
34
|
-
"
|
|
39
|
+
"code-editor",
|
|
40
|
+
"canvas-shell",
|
|
41
|
+
"workspace-shell",
|
|
42
|
+
"editing-surface"
|
|
35
43
|
],
|
|
36
44
|
"name": "EditorShell",
|
|
37
45
|
"related": [
|
|
46
|
+
"EditorToolbar",
|
|
47
|
+
"EditorCanvas",
|
|
48
|
+
"EditorCanvasToolbar",
|
|
49
|
+
"EditorCanvasEmpty",
|
|
50
|
+
"EditorSidebar",
|
|
51
|
+
"EditorStatusbar",
|
|
38
52
|
"Pane",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
53
|
+
"AdminShell",
|
|
54
|
+
"ChatShell"
|
|
41
55
|
],
|
|
42
56
|
"slots": {
|
|
43
|
-
"description": {
|
|
44
|
-
"description": "Secondary metadata inside <header> or <footer> — document name, artboard size, zoom level, etc. Muted color, --a-ui-sm size."
|
|
45
|
-
},
|
|
46
57
|
"default": {
|
|
47
|
-
"description": "
|
|
48
|
-
},
|
|
49
|
-
"action": {
|
|
50
|
-
"description": "Trailing control cluster inside <header> or <footer>. The first [slot=\"action\"] child pushes itself (and siblings) to the end of the bar; subsequent [slot=\"action\"] siblings flow with gap."
|
|
51
|
-
},
|
|
52
|
-
"action-leading": {
|
|
53
|
-
"description": "Leading (inline-start) control cluster inside <header> or <footer>. Pairs with [slot=\"action\"] to produce a dual-cluster bar with space-between alignment (e.g. Back ↔ Cancel/Next, Discard ↔ Publish). Replaces the legacy <span data-spacer> hack."
|
|
54
|
-
},
|
|
55
|
-
"heading": {
|
|
56
|
-
"description": "Primary label inside <header> or <footer>. Rendered with --editor-title-weight + the strong foreground token."
|
|
57
|
-
},
|
|
58
|
-
"icon": {
|
|
59
|
-
"description": "Leading glyph inside <header> or <footer> — status dot, app icon, zoom badge, etc. Muted color, size-aware."
|
|
58
|
+
"description": "Bespoke children compose here in document order — <editor-toolbar>, <editor-sidebar slot=\"leading\">, <editor-canvas>, <editor-sidebar slot=\"trailing\">, <editor-statusbar>. The shell's grid layout reads child tag selectors to place them; no slot= attribute is needed on the children themselves except for the leading / trailing sidebar discriminator."
|
|
60
59
|
}
|
|
61
60
|
},
|
|
62
61
|
"states": [
|
|
63
62
|
{
|
|
64
|
-
"description": "Default.",
|
|
63
|
+
"description": "Default editing mode.",
|
|
65
64
|
"name": "idle"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"description": "Distraction-free mode active; chrome children dim or hide per their own [full-screen] / [focused] rules.",
|
|
68
|
+
"attribute": "focus-mode",
|
|
69
|
+
"name": "focus-mode"
|
|
66
70
|
}
|
|
67
71
|
],
|
|
68
|
-
"synonyms": {
|
|
72
|
+
"synonyms": {
|
|
73
|
+
"editor-shell": [
|
|
74
|
+
"design-tool-shell",
|
|
75
|
+
"code-editor-shell",
|
|
76
|
+
"workspace-shell",
|
|
77
|
+
"canvas-shell"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
69
80
|
"tag": "editor-shell",
|
|
70
81
|
"tokens": {},
|
|
71
82
|
"traits": [],
|