@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.
- package/CHANGELOG.md +292 -0
- package/README.md +119 -0
- package/chat/chat-shell/chat-shell.a2ui.json +149 -0
- package/chat/chat-shell/chat-shell.css +10 -0
- package/chat/chat-shell/chat-shell.js +297 -0
- package/chat/chat-shell/chat-shell.yaml +119 -0
- package/chat/chat-shell/css/chat-shell.empty.css +12 -0
- package/chat/chat-shell/css/chat-shell.layout.css +60 -0
- package/chat/chat-shell/css/chat-shell.markdown.css +74 -0
- package/chat/chat-shell/css/chat-shell.messages.css +87 -0
- package/chat/chat-shell/css/chat-shell.streaming.css +30 -0
- package/chat/chat-shell/css/chat-shell.tokens.css +95 -0
- package/chat/index.js +1 -0
- package/editor/editor-shell/css/editor-shell.layout.css +171 -0
- package/editor/editor-shell/css/editor-shell.tokens.css +28 -0
- package/editor/editor-shell/editor-shell.a2ui.json +73 -0
- package/editor/editor-shell/editor-shell.css +6 -0
- package/editor/editor-shell/editor-shell.js +56 -0
- package/editor/editor-shell/editor-shell.yaml +59 -0
- package/editor/index.js +1 -0
- package/index.js +14 -0
- package/package.json +48 -0
- package/runtime/a2ui-root/a2ui-root.a2ui.json +125 -0
- package/runtime/a2ui-root/a2ui-root.js +191 -0
- package/runtime/a2ui-root/a2ui-root.yaml +87 -0
- package/runtime/gen-root/gen-root.a2ui.json +72 -0
- package/runtime/gen-root/gen-root.css +83 -0
- package/runtime/gen-root/gen-root.js +136 -0
- package/runtime/gen-root/gen-root.yaml +43 -0
- package/runtime/index.js +2 -0
- package/shell/admin-shell/admin-shell.a2ui.json +129 -0
- package/shell/admin-shell/admin-shell.css +14 -0
- package/shell/admin-shell/admin-shell.js +261 -0
- package/shell/admin-shell/admin-shell.yaml +89 -0
- package/shell/admin-shell/css/admin-shell.collapsed.css +86 -0
- package/shell/admin-shell/css/admin-shell.helpers.css +42 -0
- package/shell/admin-shell/css/admin-shell.main.css +182 -0
- package/shell/admin-shell/css/admin-shell.shell.css +48 -0
- package/shell/admin-shell/css/admin-shell.sidebar.css +165 -0
- package/shell/admin-shell/css/admin-shell.templates.css +215 -0
- package/shell/admin-shell/css/admin-shell.tokens.css +119 -0
- 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";
|