@adia-ai/web-modules 0.0.4

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 (42) hide show
  1. package/CHANGELOG.md +292 -0
  2. package/README.md +119 -0
  3. package/chat/chat-shell/chat-shell.a2ui.json +149 -0
  4. package/chat/chat-shell/chat-shell.css +10 -0
  5. package/chat/chat-shell/chat-shell.js +297 -0
  6. package/chat/chat-shell/chat-shell.yaml +119 -0
  7. package/chat/chat-shell/css/chat-shell.empty.css +12 -0
  8. package/chat/chat-shell/css/chat-shell.layout.css +60 -0
  9. package/chat/chat-shell/css/chat-shell.markdown.css +74 -0
  10. package/chat/chat-shell/css/chat-shell.messages.css +87 -0
  11. package/chat/chat-shell/css/chat-shell.streaming.css +30 -0
  12. package/chat/chat-shell/css/chat-shell.tokens.css +95 -0
  13. package/chat/index.js +1 -0
  14. package/editor/editor-shell/css/editor-shell.layout.css +171 -0
  15. package/editor/editor-shell/css/editor-shell.tokens.css +28 -0
  16. package/editor/editor-shell/editor-shell.a2ui.json +73 -0
  17. package/editor/editor-shell/editor-shell.css +6 -0
  18. package/editor/editor-shell/editor-shell.js +56 -0
  19. package/editor/editor-shell/editor-shell.yaml +59 -0
  20. package/editor/index.js +1 -0
  21. package/index.js +14 -0
  22. package/package.json +48 -0
  23. package/runtime/a2ui-root/a2ui-root.a2ui.json +125 -0
  24. package/runtime/a2ui-root/a2ui-root.js +191 -0
  25. package/runtime/a2ui-root/a2ui-root.yaml +87 -0
  26. package/runtime/gen-root/gen-root.a2ui.json +72 -0
  27. package/runtime/gen-root/gen-root.css +83 -0
  28. package/runtime/gen-root/gen-root.js +136 -0
  29. package/runtime/gen-root/gen-root.yaml +43 -0
  30. package/runtime/index.js +2 -0
  31. package/shell/admin-shell/admin-shell.a2ui.json +129 -0
  32. package/shell/admin-shell/admin-shell.css +14 -0
  33. package/shell/admin-shell/admin-shell.js +261 -0
  34. package/shell/admin-shell/admin-shell.yaml +89 -0
  35. package/shell/admin-shell/css/admin-shell.collapsed.css +86 -0
  36. package/shell/admin-shell/css/admin-shell.helpers.css +42 -0
  37. package/shell/admin-shell/css/admin-shell.main.css +182 -0
  38. package/shell/admin-shell/css/admin-shell.shell.css +48 -0
  39. package/shell/admin-shell/css/admin-shell.sidebar.css +165 -0
  40. package/shell/admin-shell/css/admin-shell.templates.css +215 -0
  41. package/shell/admin-shell/css/admin-shell.tokens.css +119 -0
  42. package/shell/index.js +1 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,292 @@
1
+ # Changelog — @adia-ai/web-modules
2
+
3
+ Follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
4
+ [Semantic Versioning](https://semver.org/).
5
+
6
+ Scope: composite custom elements organized by cluster (shell, chat,
7
+ editor, runtime today; data, agent, admin on the strategic horizon).
8
+ Built from `@adia-ai/web-components` primitives.
9
+
10
+ ## [Unreleased]
11
+
12
+ _No pending changes._
13
+
14
+ ## [0.0.4] — 2026-05-01
15
+
16
+ ⚠️ **BREAKING** — nav family removed (consolidated into
17
+ `@adia-ai/web-components` as primitives per
18
+ [ADR-0015 § Nav consolidation](../../.brain/adrs/0015-three-tier-naming-convention.md)).
19
+
20
+ ### Removed — ⚠️ BREAKING
21
+
22
+ - `shell/app-nav/`, `shell/app-nav-group/`, `shell/app-nav-item/`,
23
+ `shell/section-nav/`, `shell/section-nav-group/`,
24
+ `shell/section-nav-item/` directories (24 files total).
25
+ - Cluster barrel exports `AppNav`, `AppNavGroup`, `AppNavItem`,
26
+ `SectionNav`, `SectionNavGroup`, `SectionNavItem` removed from
27
+ `shell/index.js`. The barrel now only exports `AdminShell`.
28
+
29
+ ### Migration
30
+
31
+ The 6 nav elements collapsed into 3 primitives that ship with
32
+ `@adia-ai/web-components` (peer-dep). `[variant="primary"|"section"]`
33
+ drives visual treatment; behavior is unified.
34
+
35
+ ```diff
36
+ - import '@adia-ai/web-modules/shell/app-nav/app-nav.js';
37
+ - import '@adia-ai/web-modules/shell/section-nav/section-nav.js';
38
+ + // The primitives auto-register on `import '@adia-ai/web-components';`
39
+ ```
40
+
41
+ ```diff
42
+ - <app-nav-ui id="nav">…</app-nav-ui>
43
+ + <nav-ui id="nav">…</nav-ui>
44
+
45
+ - <section-nav-ui heading="On this page">…</section-nav-ui>
46
+ + <nav-ui variant="section" heading="On this page">…</nav-ui>
47
+ ```
48
+
49
+ CSS link rels:
50
+
51
+ ```diff
52
+ - <link rel="stylesheet" href=".../web-modules/shell/app-nav/app-nav.css" />
53
+ - <link rel="stylesheet" href=".../web-modules/shell/section-nav/section-nav.css" />
54
+ - <!-- + the 4 sub-element CSS files -->
55
+ + <!-- nav CSS now bundled in @adia-ai/web-components/css -->
56
+ ```
57
+
58
+ ### Bumped peer-dep
59
+
60
+ - `@adia-ai/web-components` peer-dep raised from `>=0.0.32` to
61
+ `>=0.0.33` (the version that ships the consolidated nav family).
62
+
63
+ ### Notes
64
+
65
+ The follow-on refinements (section-variant cascade, `[variant]` prop
66
+ on `<nav-group-ui>` + `<nav-item-ui>`, leading-indicator suppression
67
+ in section variant) all live in the peer-dep
68
+ `@adia-ai/web-components@0.0.33` — see its CHANGELOG. No additional
69
+ work in this package beyond the deletions above.
70
+
71
+ ## [0.0.3] — 2026-05-01
72
+
73
+ ⚠️ **BREAKING** — class-naming-convention sweep per
74
+ [ADR-0016](../../.brain/adrs/0016-class-naming-convention.md).
75
+ Module classes drop the `Adia` prefix. Tag names + CSS unchanged
76
+ from 0.0.2; this is purely a class-name rename.
77
+
78
+ ### Renamed — ⚠️ BREAKING (drop `Adia` prefix)
79
+
80
+ - `AdiaChatShell` → `ChatShell`
81
+ - `AdiaEditorShell` → `EditorShell`
82
+ - `AdiaAdminShell` → `AdminShell`
83
+ - `AdiaGenRoot` → `GenRoot`
84
+ - `AdiaA2UIRoot` → `A2UIRoot`
85
+ - `AdiaAppNav` → `AppNav`
86
+ - `AdiaAppNavGroup` → `AppNavGroup`
87
+ - `AdiaAppNavItem` → `AppNavItem`
88
+ - `AdiaSectionNav` → `SectionNav`
89
+ - `AdiaSectionNavGroup` → `SectionNavGroup`
90
+ - `AdiaSectionNavItem` → `SectionNavItem`
91
+
92
+ Cluster `index.js` barrel exports updated:
93
+
94
+ ```diff
95
+ # chat
96
+ - export { AdiaChatShell } from './chat-shell/chat-shell.js';
97
+ + export { ChatShell } from './chat-shell/chat-shell.js';
98
+
99
+ # editor
100
+ - export { AdiaEditorShell } from './editor-shell/editor-shell.js';
101
+ + export { EditorShell } from './editor-shell/editor-shell.js';
102
+
103
+ # shell
104
+ - export { AdiaAdminShell } from './admin-shell/admin-shell.js';
105
+ - export { AdiaAppNav } from './app-nav/app-nav.js';
106
+ - (etc.)
107
+ + export { AdminShell } from './admin-shell/admin-shell.js';
108
+ + export { AppNav } from './app-nav/app-nav.js';
109
+ + (etc.)
110
+
111
+ # runtime
112
+ - export { AdiaGenRoot } from './gen-root/gen-root.js';
113
+ - export { AdiaA2UIRoot } from './a2ui-root/a2ui-root.js';
114
+ + export { GenRoot } from './gen-root/gen-root.js';
115
+ + export { A2UIRoot } from './a2ui-root/a2ui-root.js';
116
+ ```
117
+
118
+ ### Migration
119
+
120
+ ```bash
121
+ # Find imports
122
+ git grep -nE "import \{ Adia(ChatShell|EditorShell|AdminShell|GenRoot|A2UIRoot|AppNav|SectionNav)\w*"
123
+
124
+ # Rewrite (review first):
125
+ perl -i -pe '
126
+ s/\bAdiaChatShell\b/ChatShell/g;
127
+ s/\bAdiaEditorShell\b/EditorShell/g;
128
+ s/\bAdiaAdminShell\b/AdminShell/g;
129
+ s/\bAdiaGenRoot\b/GenRoot/g;
130
+ s/\bAdiaA2UIRoot\b/A2UIRoot/g;
131
+ s/\bAdiaAppNavGroup\b/AppNavGroup/g;
132
+ s/\bAdiaAppNavItem\b/AppNavItem/g;
133
+ s/\bAdiaAppNav\b/AppNav/g;
134
+ s/\bAdiaSectionNavGroup\b/SectionNavGroup/g;
135
+ s/\bAdiaSectionNavItem\b/SectionNavItem/g;
136
+ s/\bAdiaSectionNav\b/SectionNav/g;
137
+ ' $(git grep -lE 'Adia(ChatShell|EditorShell|AdminShell|GenRoot|A2UIRoot|AppNav|SectionNav)\w*')
138
+ ```
139
+
140
+ The base class import path also shifts (web-components 0.0.32):
141
+
142
+ ```diff
143
+ - import { AdiaElement } from '@adia-ai/web-components/core/element.js';
144
+ + import { UIElement } from '@adia-ai/web-components/core/element.js';
145
+ ```
146
+
147
+ ### What stays
148
+
149
+ - All custom-element tag names (`<chat-shell>`, `<admin-shell>`,
150
+ `<gen-root>`, etc.) — settled in ADR-0015.
151
+ - All CSS scope selectors.
152
+ - All yaml `tag:` field values.
153
+ - Cluster directory names + structure.
154
+ - Peer-dep on `@adia-ai/web-components` (now `>=0.0.32`).
155
+
156
+ ### Peer-dep bump
157
+
158
+ ```diff
159
+ "peerDependencies": {
160
+ - "@adia-ai/web-components": ">=0.0.28",
161
+ + "@adia-ai/web-components": ">=0.0.32",
162
+ "@adia-ai/a2ui-utils": "^0.0.2"
163
+ }
164
+ ```
165
+
166
+ The base class `UIElement` (renamed from `AdiaElement`) lives in
167
+ `@adia-ai/web-components@0.0.32`. web-modules can't run against
168
+ older web-components versions because `import { AdiaElement }`
169
+ no longer resolves there.
170
+
171
+ ## [0.0.2] — 2026-05-01
172
+
173
+ ⚠️ **BREAKING** — naming-convention sweep per
174
+ [ADR-0015](../../.brain/adrs/0015-three-tier-naming-convention.md).
175
+ Modules use the new `<namespace-thing>` two-word convention; the
176
+ `adia-` brand prefix and the doubled `-ui-ui` form are retired.
177
+ Cluster directories renamed in lockstep with the element renames.
178
+
179
+ ### Renamed — ⚠️ BREAKING
180
+
181
+ - `<adia-chat-ui>` → `<chat-shell>`. Directory:
182
+ `chat/adia-chat/` → `chat/chat-shell/`. Class
183
+ `AdiaChatElement` → `AdiaChatShell`. CSS sub-files
184
+ `adia-chat.{empty,layout,markdown,messages,streaming,tokens}.css`
185
+ → `chat-shell.*.css`. `@keyframes adia-chat-blink` →
186
+ `chat-shell-blink`.
187
+ - `<adia-editor-ui>` → `<editor-shell>`. Directory:
188
+ `editor/adia-editor/` → `editor/editor-shell/`. Class
189
+ `AdiaEditorElement` → `AdiaEditorShell`. CSS sub-files
190
+ `adia-editor.{layout,tokens}.css` → `editor-shell.*.css`.
191
+ - `<app-shell-ui>` → `<admin-shell>`. Directory:
192
+ `shell/app-shell/` → `shell/admin-shell/`. Class
193
+ `AdiaAppShell` → `AdiaAdminShell`. CSS sub-files
194
+ `app-shell.{collapsed,helpers,main,shell,sidebar,templates,
195
+ tokens}.css` → `admin-shell.*.css`.
196
+ - `<gen-ui-ui>` → `<gen-root>`. Directory:
197
+ `runtime/gen-ui/` → `runtime/gen-root/`. Class
198
+ `AdiaGenUI` → `AdiaGenRoot`. The element was registered as
199
+ `<gen-ui-ui>` (double "ui") which read as a typo; the new name
200
+ pairs symmetrically with the existing `<a2ui-root>`.
201
+
202
+ ### Migration
203
+
204
+ Tag-name sweep:
205
+
206
+ ```bash
207
+ # Find all uses
208
+ git grep -nE '<(adia-chat-ui|adia-editor-ui|app-shell-ui|gen-ui-ui)\b'
209
+
210
+ # Mechanical rewrite (Perl in-place, review before applying):
211
+ perl -i -pe 's/\badia-chat-ui\b/chat-shell/g; s/\badia-editor-ui\b/editor-shell/g; s/\bapp-shell-ui\b/admin-shell/g; s/\bgen-ui-ui\b/gen-root/g' $(git grep -lE '\b(adia-chat-ui|adia-editor-ui|app-shell-ui|gen-ui-ui)\b')
212
+ ```
213
+
214
+ Subpath / class import paths:
215
+
216
+ ```diff
217
+ - import { AdiaChatElement } from '@adia-ai/web-modules/chat/adia-chat/adia-chat.js';
218
+ + import { AdiaChatShell } from '@adia-ai/web-modules/chat/chat-shell/chat-shell.js';
219
+
220
+ - import { AdiaEditorElement } from '@adia-ai/web-modules/editor/adia-editor/adia-editor.js';
221
+ + import { AdiaEditorShell } from '@adia-ai/web-modules/editor/editor-shell/editor-shell.js';
222
+
223
+ - import { AdiaAppShell } from '@adia-ai/web-modules/shell/app-shell/app-shell.js';
224
+ + import { AdiaAdminShell } from '@adia-ai/web-modules/shell/admin-shell/admin-shell.js';
225
+
226
+ - import { AdiaGenUI } from '@adia-ai/web-modules/runtime/gen-ui/gen-ui.js';
227
+ + import { AdiaGenRoot } from '@adia-ai/web-modules/runtime/gen-root/gen-root.js';
228
+ ```
229
+
230
+ CSS sub-file paths follow the same shape (`<ns>/<ns>.css` →
231
+ `<new>/<new>.css`).
232
+
233
+ ### What's NOT renamed (yet)
234
+
235
+ The 6-element nav family (`<app-nav-ui>`, `<app-nav-group-ui>`,
236
+ `<app-nav-item-ui>`, `<section-nav-ui>`, `<section-nav-group-ui>`,
237
+ `<section-nav-item-ui>`) is staged for consolidation into 3
238
+ primitives (`<nav-ui>`, `<nav-group-ui>`, `<nav-item-ui>`) per
239
+ ADR-0015. That migration is the next BREAKING release because it
240
+ involves authoring new code (variant-driven primitives that
241
+ absorb both families' behavior), not just renaming.
242
+ `<a2ui-root>` already fits the convention and stays as-is.
243
+
244
+ ### Cluster organization
245
+
246
+ Unchanged from 0.0.1 — four clusters (`shell`, `chat`, `editor`,
247
+ `runtime`) with subpath exports. Directory contents within each
248
+ cluster reshuffle per the rename map; the cluster names themselves
249
+ don't change.
250
+
251
+ ## [0.0.1] — 2026-05-01
252
+
253
+ Initial extraction from `@adia-ai/web-components/patterns/`. Captures
254
+ the three-tier architecture decision in
255
+ [ADR-0012](../../.brain/adrs/0012-three-tier-architecture-modules.md).
256
+
257
+ ### Migrated from `@adia-ai/web-components/patterns/`
258
+
259
+ - **`shell/`** — `<app-shell-ui>`, `<app-nav-ui>`,
260
+ `<app-nav-group-ui>`, `<app-nav-item-ui>`, `<section-nav-ui>`,
261
+ `<section-nav-group-ui>`, `<section-nav-item-ui>`. Same JS/CSS/yaml
262
+ as `web-components-v0.0.28`'s `patterns/shell/*`.
263
+ - **`chat/`** — `<adia-chat-ui>`.
264
+ - **`editor/`** — `<adia-editor-ui>`.
265
+ - **`runtime/`** — `<gen-ui>`, `<a2ui-root>`. The two render roots
266
+ that turn JSON or gen-UI intents into live DOM.
267
+
268
+ ### Public API
269
+
270
+ - Subpath exports per cluster: `@adia-ai/web-modules/shell`,
271
+ `/chat`, `/editor`, `/runtime`. Plus glob subpaths
272
+ (`@adia-ai/web-modules/shell/app-shell` resolves to
273
+ `./shell/app-shell/app-shell.js`).
274
+ - Barrel `import '@adia-ai/web-modules'` registers every element in
275
+ every cluster (sideEffect import).
276
+ - Peer-dependencies on `@adia-ai/web-components` and
277
+ `@adia-ai/a2ui-utils` (the latter only because `<a2ui-root>` and
278
+ `<adia-editor-ui>` depend on the runtime).
279
+
280
+ ### Note for migrating consumers
281
+
282
+ Tag names, CSS class names, CSS variables, and yaml/A2UI contracts
283
+ are unchanged. Only the import path shifts — see README.md for the
284
+ before/after examples.
285
+
286
+ The `@adia-ai/web-components@0.0.28` snapshot (the last release
287
+ before extraction) still ships the patterns directory as
288
+ `web-components/patterns/`. Consumers can stay on 0.0.28 with
289
+ `patterns/` imports and migrate to web-modules at their own pace.
290
+ The next web-components release will drop `patterns/` from its
291
+ `exports` map and `files` list — at that point the migration is
292
+ required.
package/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # @adia-ai/web-modules
2
+
3
+ Composite custom elements built from
4
+ [`@adia-ai/web-components`](../web-components) primitives. Organized
5
+ into clusters by use case; each cluster ships as a subpath export so
6
+ consumers install only what they need.
7
+
8
+ > The patterns directory lived inside `@adia-ai/web-components` as
9
+ > `patterns/` until this package was extracted (see
10
+ > [ADR-0012](../../.brain/adrs/0012-three-tier-architecture-modules.md)).
11
+ > Tags, CSS, and YAML/A2UI contracts are unchanged; only the import
12
+ > path moves.
13
+
14
+ ## Clusters
15
+
16
+ | Cluster | Elements | What's inside |
17
+ |---|---|---|
18
+ | `shell` | `<admin-shell>` (nav primitives live in `web-components`: `<nav-ui>`, `<nav-group-ui>`, `<nav-item-ui>`) | Admin-shell composition: header, sidebars, command palette. |
19
+ | `chat` | `<chat-shell>` | Conversational surface — messages, streaming, markdown, action bar. |
20
+ | `editor` | `<editor-shell>` | A2UI live-editor surface — JSON ↔ rendered preview. |
21
+ | `runtime` | `<gen-root>`, `<a2ui-root>` | Render roots that turn JSON or gen-UI intents into live DOM. |
22
+
23
+ Future clusters on the strategic horizon: `data` (kanban, filters,
24
+ table-toolbar), `agent` (agent-trace, reasoning panels), `admin`
25
+ (RBAC matrix, approvals).
26
+
27
+ ## Quick start
28
+
29
+ ```html
30
+ <!-- CSS for each cluster you import -->
31
+ <link rel="stylesheet" href="node_modules/@adia-ai/web-modules/shell/admin-shell/admin-shell.css" />
32
+
33
+ <!-- Primitives (nav-ui, nav-group-ui, nav-item-ui live here) -->
34
+ <link rel="stylesheet" href="node_modules/@adia-ai/web-components/index.css" />
35
+
36
+ <script type="module">
37
+ import '@adia-ai/web-components'; // primitives + nav family
38
+ import '@adia-ai/web-modules/shell'; // admin-shell
39
+ import '@adia-ai/web-modules/chat'; // adia-chat
40
+ import '@adia-ai/web-modules/runtime'; // gen-ui, a2ui-root
41
+ </script>
42
+
43
+ <admin-shell mode="rounded">
44
+ <aside-ui slot="leading">
45
+ <header-ui>…</header-ui>
46
+ <section-ui><nav-ui>…</nav-ui></section-ui>
47
+ </aside-ui>
48
+ <main>…</main>
49
+ </admin-shell>
50
+ ```
51
+
52
+ ## Three-tier architecture
53
+
54
+ ```
55
+ @adia-ai/web-components — primitives (button, table, card, …)
56
+ @adia-ai/web-modules — composites (this package; clusters via subpath)
57
+ @adia-ai/web-themes — token sets per vendor/brand (future)
58
+ ```
59
+
60
+ Modules and themes both peer-depend `web-components` directly; they
61
+ do not import each other. Composition happens at the consumer's
62
+ site, not inside the library. See
63
+ [ADR-0012](../../.brain/adrs/0012-three-tier-architecture-modules.md)
64
+ for the rationale and the patterns/modules collapse.
65
+
66
+ ## Migration from `@adia-ai/web-components/patterns`
67
+
68
+ Before:
69
+
70
+ ```js
71
+ import '@adia-ai/web-components/patterns/app-shell/app-shell.js';
72
+ import '@adia-ai/web-components/patterns/adia-chat/adia-chat.js';
73
+ ```
74
+
75
+ After:
76
+
77
+ ```js
78
+ import '@adia-ai/web-modules/shell/app-shell/app-shell.js';
79
+ import '@adia-ai/web-modules/chat/adia-chat/adia-chat.js';
80
+ ```
81
+
82
+ Or, more idiomatically, import the cluster:
83
+
84
+ ```js
85
+ import '@adia-ai/web-modules/shell'; // every shell-cluster element
86
+ import '@adia-ai/web-modules/chat'; // adia-chat
87
+ ```
88
+
89
+ CSS paths shift the same way (`/patterns/<x>/<x>.css` →
90
+ `/<cluster>/<x>/<x>.css`).
91
+
92
+ ## Layout
93
+
94
+ ```
95
+ web-modules/
96
+ ├── shell/
97
+ │ └── admin-shell/ <admin-shell-ui> (full component, 251 LOC JS)
98
+ │ Nav primitives (nav-ui, nav-group-ui, nav-item-ui)
99
+ │ live in @adia-ai/web-components.
100
+ ├── chat/
101
+ │ └── adia-chat/
102
+ ├── editor/
103
+ │ └── adia-editor/
104
+ ├── runtime/
105
+ │ ├── gen-ui/ <gen-ui> render root
106
+ │ └── a2ui-root/ <a2ui-root> A2UI render root
107
+ └── index.js barrel re-export of every cluster
108
+ ```
109
+
110
+ Each element directory carries its `.js`, `.css`, `.yaml`, and
111
+ `.a2ui.json` files — same shape as `web-components/components/<x>/`.
112
+ The yaml + a2ui.json contracts feed the gen-UI catalog at
113
+ `packages/a2ui/corpus/catalog-a2ui_0_9.json`; the build script at
114
+ `scripts/build/components.mjs` scans both `web-components/components/`
115
+ and `web-modules/<cluster>/`.
116
+
117
+ ## License
118
+
119
+ MIT
@@ -0,0 +1,149 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://adiaui.dev/a2ui/v0_9/components/ChatShell.json",
4
+ "title": "ChatShell",
5
+ "description": "Behavior-only chat orchestrator (LLM-streaming module). Author supplies the\nDOM structure via [data-chat-messages], [data-chat-input], [data-chat-empty],\n[data-chat-status] elements; chat-shell wires message streaming, markdown\nrendering, code-block upgrades, and an LLM integration path via proxy-url\n(or via external submit).\n",
6
+ "type": "object",
7
+ "allOf": [
8
+ {
9
+ "$ref": "common_types.json#/$defs/ComponentCommon"
10
+ },
11
+ {
12
+ "$ref": "common_types.json#/$defs/CatalogComponentCommon"
13
+ }
14
+ ],
15
+ "properties": {
16
+ "component": {
17
+ "const": "ChatShell"
18
+ },
19
+ "model": {
20
+ "description": "Model identifier.",
21
+ "type": "string",
22
+ "default": ""
23
+ },
24
+ "provider": {
25
+ "description": "LLM provider name (anthropic | openai | google | stub).",
26
+ "type": "string",
27
+ "default": ""
28
+ },
29
+ "proxyUrl": {
30
+ "description": "API proxy endpoint for LLM calls; enables self-contained chat without external wiring.",
31
+ "type": "string",
32
+ "default": ""
33
+ },
34
+ "streaming": {
35
+ "description": "Active streaming indicator; toggled while a response is being received.",
36
+ "type": "boolean",
37
+ "default": false
38
+ },
39
+ "system": {
40
+ "description": "System prompt prepended to conversations.",
41
+ "type": "string",
42
+ "default": ""
43
+ },
44
+ "thinking": {
45
+ "description": "Enable Anthropic extended-thinking mode.",
46
+ "type": "boolean",
47
+ "default": false
48
+ }
49
+ },
50
+ "required": [
51
+ "component"
52
+ ],
53
+ "unevaluatedProperties": false,
54
+ "x-adiaui": {
55
+ "anti_patterns": [],
56
+ "category": "container",
57
+ "events": {
58
+ "abort": {
59
+ "description": "Fired when the user aborts an in-flight request."
60
+ },
61
+ "chunk": {
62
+ "description": "Fired for each streaming chunk.",
63
+ "detail": {
64
+ "snapshot": "string",
65
+ "text": "string"
66
+ }
67
+ },
68
+ "clear": {
69
+ "description": "Fired when the conversation is cleared."
70
+ },
71
+ "done": {
72
+ "description": "Fired when a response completes.",
73
+ "detail": {
74
+ "stopReason": "string",
75
+ "text": "string",
76
+ "usage": "object"
77
+ }
78
+ },
79
+ "error": {
80
+ "description": "Fired on any LLM / network error.",
81
+ "detail": {
82
+ "error": "Error"
83
+ }
84
+ },
85
+ "message": {
86
+ "description": "Fired after each message (user or assistant) is appended.",
87
+ "detail": {
88
+ "content": "string",
89
+ "id": "string",
90
+ "role": "string"
91
+ }
92
+ },
93
+ "submit": {
94
+ "description": "Fired on user message submit (before LLM call begins).",
95
+ "detail": {
96
+ "model": "string",
97
+ "text": "string"
98
+ }
99
+ },
100
+ "thinking": {
101
+ "description": "Fired when the model emits extended-thinking content.",
102
+ "detail": {
103
+ "text": "string"
104
+ }
105
+ }
106
+ },
107
+ "examples": [],
108
+ "keywords": [
109
+ "chat-shell",
110
+ "chat",
111
+ "llm",
112
+ "streaming",
113
+ "conversation",
114
+ "agent"
115
+ ],
116
+ "name": "ChatShell",
117
+ "related": [
118
+ "ChatInput",
119
+ "Code"
120
+ ],
121
+ "slots": {
122
+ "default": {
123
+ "description": "Author provides the structural DOM. Expected markers — [data-chat-messages] (message list), [data-chat-input] (input surface), [data-chat-empty] (empty state), [data-chat-status] (streaming indicator)."
124
+ }
125
+ },
126
+ "states": [
127
+ {
128
+ "description": "No active request.",
129
+ "name": "idle"
130
+ },
131
+ {
132
+ "description": "An LLM request is in-flight; [data-chat-status] visible.",
133
+ "attribute": "streaming",
134
+ "name": "streaming"
135
+ }
136
+ ],
137
+ "synonyms": {
138
+ "chat": [
139
+ "conversation",
140
+ "messages",
141
+ "thread"
142
+ ]
143
+ },
144
+ "tag": "chat-shell",
145
+ "tokens": {},
146
+ "traits": [],
147
+ "version": 1
148
+ }
149
+ }
@@ -0,0 +1,10 @@
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ chat-shell — Module CSS (LLM-streaming chat shell)
3
+ ═══════════════════════════════════════════════════════════════ */
4
+
5
+ @import "./css/chat-shell.tokens.css";
6
+ @import "./css/chat-shell.layout.css";
7
+ @import "./css/chat-shell.messages.css";
8
+ @import "./css/chat-shell.streaming.css";
9
+ @import "./css/chat-shell.markdown.css";
10
+ @import "./css/chat-shell.empty.css";