@adia-ai/web-modules 0.6.17 → 0.6.19
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 +43 -0
- package/README.md +28 -0
- package/css-module.d.ts +6 -0
- package/package.json +79 -19
- package/shell/admin-sidebar/admin-sidebar.js +21 -1
- package/shell/with-css.d.ts +3 -0
- package/shell/with-css.js +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog — @adia-ai/web-modules
|
|
2
2
|
|
|
3
|
+
## [0.6.19] — 2026-05-21
|
|
4
|
+
|
|
5
|
+
### Added — `./shell/with-css` opt-in export (FEEDBACK-25)
|
|
6
|
+
|
|
7
|
+
- `import '@adia-ai/web-modules/shell/with-css'` registers the JS-backed
|
|
8
|
+
shell elements (`admin-shell`, `admin-sidebar`, `admin-command`) AND
|
|
9
|
+
mounts the shell layout CSS in one side-effect import. The default
|
|
10
|
+
`./shell` subpath stays CSS-free to preserve the explicit-import contract
|
|
11
|
+
(ADR-0030); `/with-css` is the named opt-in. New `shell/with-css.js` +
|
|
12
|
+
`shell/with-css.d.ts`.
|
|
13
|
+
|
|
14
|
+
### Added — `types` condition on CSS subpath exports (FEEDBACK-26)
|
|
15
|
+
|
|
16
|
+
- The `shell` / `chat` / `editor` / `simple` / `runtime` / `theme` `.css`
|
|
17
|
+
subpath exports now carry a `types` condition (`css-module.d.ts` stub),
|
|
18
|
+
fixing TS2882 under `moduleResolution: bundler`.
|
|
19
|
+
|
|
20
|
+
### Docs — per-cluster import contract (FEEDBACK-25)
|
|
21
|
+
|
|
22
|
+
- README documents that the per-cluster JS import registers only the
|
|
23
|
+
JS-backed elements — the CSS-only structural children (`admin-content`,
|
|
24
|
+
`admin-topbar`, `admin-page`, …) need no JS registration by design — plus
|
|
25
|
+
the new `/with-css` opt-in.
|
|
26
|
+
|
|
27
|
+
## [0.6.18] — 2026-05-21
|
|
28
|
+
|
|
29
|
+
### Added — `admin-sidebar` resize-handle diagnostic (FB-17)
|
|
30
|
+
|
|
31
|
+
- **`<admin-sidebar resizable>` now warns when no `[data-resize]` child is
|
|
32
|
+
present.** `#setupResizeHandle()` previously returned silently when the
|
|
33
|
+
author-supplied drag-handle element was missing, leaving `resizable` a no-op
|
|
34
|
+
with zero diagnostic signal. It now emits a one-shot `console.warn`
|
|
35
|
+
(WeakSet-guarded) naming the fix. Warning-only; no functional change.
|
|
36
|
+
(~22 LOC `admin-sidebar.js`.)
|
|
37
|
+
|
|
38
|
+
### Docs
|
|
39
|
+
|
|
40
|
+
- **Live `<admin-sidebar>` variant gallery + collapse/expand demo** added to `admin-shell.html` and `admin-shell.examples.html` — covers the resizable / collapsible / variant axes in one browsable surface.
|
|
41
|
+
|
|
42
|
+
### Note
|
|
43
|
+
|
|
44
|
+
- The headline v0.6.18 work shipped in `@adia-ai/web-components` — `stat-ui` + `table-ui` `loading` props (FB-12 P2) and `text-ui` `size` / `color` / `weight` / `text-align` overlay attributes (FB-10). See `packages/web-components/CHANGELOG.md#0618--2026-05-21` for details.
|
|
45
|
+
|
|
3
46
|
## [0.6.17] — 2026-05-21
|
|
4
47
|
|
|
5
48
|
### Fixed
|
package/README.md
CHANGED
|
@@ -33,6 +33,13 @@ import '@adia-ai/web-modules/theme'; // theme-panel
|
|
|
33
33
|
import '@adia-ai/web-modules/runtime'; // gen-root + a2ui-root
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
+
> The per-cluster import registers the **JS-backed** elements only. Each
|
|
37
|
+
> cluster also has **CSS-only** structural children (e.g. `admin-content`,
|
|
38
|
+
> `admin-topbar`, `admin-page` — see the [Clusters](#clusters) table) that
|
|
39
|
+
> need no JS registration: they are plain custom elements styled entirely
|
|
40
|
+
> by the cluster CSS. `customElements.get()` returning `undefined` for one
|
|
41
|
+
> of them is expected, not a bug.
|
|
42
|
+
|
|
36
43
|
## Import: CSS (since v0.4.5)
|
|
37
44
|
|
|
38
45
|
> ⚠️ **Required — shell layouts depend on this CSS.** Shell JS modules
|
|
@@ -58,6 +65,27 @@ import '@adia-ai/web-modules/runtime/gen-root.css';
|
|
|
58
65
|
|
|
59
66
|
> **For pre-v0.4.5 consumers:** if you were importing CSS via the relative `node_modules` path (`'../node_modules/@adia-ai/web-modules/editor/editor-shell/editor-shell.css'`), switch to the package-specifier form above. The relative-path form is fragile under pnpm, Yarn PnP, and npm hoisting; the new package-specifier form works under all three.
|
|
60
67
|
|
|
68
|
+
## Import: JS + CSS in one line (`/with-css`)
|
|
69
|
+
|
|
70
|
+
For the `shell` cluster, the `/with-css` opt-in collapses the JS + CSS
|
|
71
|
+
imports into a single side-effect import:
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
import '@adia-ai/web-modules/shell/with-css';
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
This registers the JS-backed shell elements (`admin-shell`,
|
|
78
|
+
`admin-sidebar`, `admin-command`) **and** mounts the shell layout CSS
|
|
79
|
+
(`admin-shell.css` bundles every sub-component style). It is the one-line
|
|
80
|
+
equivalent of `import '@adia-ai/web-modules/shell'` +
|
|
81
|
+
`import '@adia-ai/web-modules/shell/admin-shell.css'`.
|
|
82
|
+
|
|
83
|
+
The default `@adia-ai/web-modules/shell` subpath stays CSS-free to
|
|
84
|
+
preserve the explicit-import contract ([ADR-0030](../../.brain/adrs/0030-shell-with-css-opt-in-carve-out.md));
|
|
85
|
+
`/with-css` is the named opt-in. Per-element companions
|
|
86
|
+
(`@adia-ai/web-modules/shell/admin-shell/with-css`) also exist for
|
|
87
|
+
finer-grained imports.
|
|
88
|
+
|
|
61
89
|
Each cluster carries a **shell host** (behavior-only orchestrator) plus
|
|
62
90
|
a **family of bespoke shell-tier children** (cluster-namespaced custom
|
|
63
91
|
elements with state-as-attribute semantics) per [ADR-0023](../../.brain/adrs/0023-bespoke-shell-tier-children.md). The bespoke vocabulary is the only recognized authoring shape since v0.4.0 ([ADR-0024](../../.brain/adrs/0024-legacy-shell-shapes-retired.md)).
|
package/css-module.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Ambient declaration so TypeScript (moduleResolution: bundler / node16)
|
|
2
|
+
// can resolve CSS side-effect subpath imports — e.g.
|
|
3
|
+
// import '@adia-ai/web-components/css';
|
|
4
|
+
// without a TS2882 "no type declarations for side-effect import" error.
|
|
5
|
+
// See FEEDBACK-26.
|
|
6
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adia-ai/web-modules",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.19",
|
|
4
4
|
"description": "AdiaUI composite custom elements \u2014 shell, chat, editor, runtime clusters built from @adia-ai/web-components primitives. Subpath exports per cluster.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
"import": "./shell/index.js",
|
|
15
15
|
"default": "./shell/index.js"
|
|
16
16
|
},
|
|
17
|
+
"./shell/with-css": {
|
|
18
|
+
"types": "./shell/with-css.d.ts",
|
|
19
|
+
"import": "./shell/with-css.js",
|
|
20
|
+
"default": "./shell/with-css.js"
|
|
21
|
+
},
|
|
17
22
|
"./shell/*": {
|
|
18
23
|
"types": "./shell/*/*.d.ts",
|
|
19
24
|
"import": "./shell/*/*.js",
|
|
@@ -24,9 +29,18 @@
|
|
|
24
29
|
"import": "./shell/*/with-css.js",
|
|
25
30
|
"default": "./shell/*/with-css.js"
|
|
26
31
|
},
|
|
27
|
-
"./shell/*.css":
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
"./shell/*.css": {
|
|
33
|
+
"types": "./css-module.d.ts",
|
|
34
|
+
"default": "./shell/*/*.css"
|
|
35
|
+
},
|
|
36
|
+
"./shell/*/*.css": {
|
|
37
|
+
"types": "./css-module.d.ts",
|
|
38
|
+
"default": "./shell/*/*.css"
|
|
39
|
+
},
|
|
40
|
+
"./shell/*/css/*.css": {
|
|
41
|
+
"types": "./css-module.d.ts",
|
|
42
|
+
"default": "./shell/*/css/*.css"
|
|
43
|
+
},
|
|
30
44
|
"./chat": {
|
|
31
45
|
"types": "./chat/index.d.ts",
|
|
32
46
|
"import": "./chat/index.js",
|
|
@@ -42,9 +56,18 @@
|
|
|
42
56
|
"import": "./chat/*/with-css.js",
|
|
43
57
|
"default": "./chat/*/with-css.js"
|
|
44
58
|
},
|
|
45
|
-
"./chat/*.css":
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
"./chat/*.css": {
|
|
60
|
+
"types": "./css-module.d.ts",
|
|
61
|
+
"default": "./chat/*/*.css"
|
|
62
|
+
},
|
|
63
|
+
"./chat/*/*.css": {
|
|
64
|
+
"types": "./css-module.d.ts",
|
|
65
|
+
"default": "./chat/*/*.css"
|
|
66
|
+
},
|
|
67
|
+
"./chat/*/css/*.css": {
|
|
68
|
+
"types": "./css-module.d.ts",
|
|
69
|
+
"default": "./chat/*/css/*.css"
|
|
70
|
+
},
|
|
48
71
|
"./editor": {
|
|
49
72
|
"types": "./editor/index.d.ts",
|
|
50
73
|
"import": "./editor/index.js",
|
|
@@ -65,9 +88,18 @@
|
|
|
65
88
|
"import": "./editor/*/with-css.js",
|
|
66
89
|
"default": "./editor/*/with-css.js"
|
|
67
90
|
},
|
|
68
|
-
"./editor/*.css":
|
|
69
|
-
|
|
70
|
-
|
|
91
|
+
"./editor/*.css": {
|
|
92
|
+
"types": "./css-module.d.ts",
|
|
93
|
+
"default": "./editor/*/*.css"
|
|
94
|
+
},
|
|
95
|
+
"./editor/*/*.css": {
|
|
96
|
+
"types": "./css-module.d.ts",
|
|
97
|
+
"default": "./editor/*/*.css"
|
|
98
|
+
},
|
|
99
|
+
"./editor/*/css/*.css": {
|
|
100
|
+
"types": "./css-module.d.ts",
|
|
101
|
+
"default": "./editor/*/css/*.css"
|
|
102
|
+
},
|
|
71
103
|
"./simple": {
|
|
72
104
|
"types": "./simple/index.d.ts",
|
|
73
105
|
"import": "./simple/index.js",
|
|
@@ -83,9 +115,18 @@
|
|
|
83
115
|
"import": "./simple/*/with-css.js",
|
|
84
116
|
"default": "./simple/*/with-css.js"
|
|
85
117
|
},
|
|
86
|
-
"./simple/*.css":
|
|
87
|
-
|
|
88
|
-
|
|
118
|
+
"./simple/*.css": {
|
|
119
|
+
"types": "./css-module.d.ts",
|
|
120
|
+
"default": "./simple/*/*.css"
|
|
121
|
+
},
|
|
122
|
+
"./simple/*/*.css": {
|
|
123
|
+
"types": "./css-module.d.ts",
|
|
124
|
+
"default": "./simple/*/*.css"
|
|
125
|
+
},
|
|
126
|
+
"./simple/*/css/*.css": {
|
|
127
|
+
"types": "./css-module.d.ts",
|
|
128
|
+
"default": "./simple/*/css/*.css"
|
|
129
|
+
},
|
|
89
130
|
"./runtime": {
|
|
90
131
|
"types": "./runtime/index.d.ts",
|
|
91
132
|
"import": "./runtime/index.js",
|
|
@@ -96,9 +137,18 @@
|
|
|
96
137
|
"import": "./runtime/*/*.js",
|
|
97
138
|
"default": "./runtime/*/*.js"
|
|
98
139
|
},
|
|
99
|
-
"./runtime/*.css":
|
|
100
|
-
|
|
101
|
-
|
|
140
|
+
"./runtime/*.css": {
|
|
141
|
+
"types": "./css-module.d.ts",
|
|
142
|
+
"default": "./runtime/*/*.css"
|
|
143
|
+
},
|
|
144
|
+
"./runtime/*/*.css": {
|
|
145
|
+
"types": "./css-module.d.ts",
|
|
146
|
+
"default": "./runtime/*/*.css"
|
|
147
|
+
},
|
|
148
|
+
"./runtime/*/css/*.css": {
|
|
149
|
+
"types": "./css-module.d.ts",
|
|
150
|
+
"default": "./runtime/*/css/*.css"
|
|
151
|
+
},
|
|
102
152
|
"./theme": {
|
|
103
153
|
"types": "./theme/index.d.ts",
|
|
104
154
|
"import": "./theme/index.js",
|
|
@@ -109,9 +159,18 @@
|
|
|
109
159
|
"import": "./theme/*/*.js",
|
|
110
160
|
"default": "./theme/*/*.js"
|
|
111
161
|
},
|
|
112
|
-
"./theme/*.css":
|
|
113
|
-
|
|
114
|
-
|
|
162
|
+
"./theme/*.css": {
|
|
163
|
+
"types": "./css-module.d.ts",
|
|
164
|
+
"default": "./theme/*/*.css"
|
|
165
|
+
},
|
|
166
|
+
"./theme/*/*.css": {
|
|
167
|
+
"types": "./css-module.d.ts",
|
|
168
|
+
"default": "./theme/*/*.css"
|
|
169
|
+
},
|
|
170
|
+
"./theme/*/css/*.css": {
|
|
171
|
+
"types": "./css-module.d.ts",
|
|
172
|
+
"default": "./theme/*/css/*.css"
|
|
173
|
+
},
|
|
115
174
|
"./generative": {
|
|
116
175
|
"types": "./generative/index.d.ts",
|
|
117
176
|
"import": "./generative/index.js",
|
|
@@ -149,6 +208,7 @@
|
|
|
149
208
|
"!generative/**/*.examples.js",
|
|
150
209
|
"!generative/**/*.html",
|
|
151
210
|
"index.js",
|
|
211
|
+
"css-module.d.ts",
|
|
152
212
|
"README.md",
|
|
153
213
|
"CHANGELOG.md"
|
|
154
214
|
],
|
|
@@ -54,6 +54,10 @@ class AdminSidebar extends UIElement {
|
|
|
54
54
|
|
|
55
55
|
static template = () => null;
|
|
56
56
|
|
|
57
|
+
// FEEDBACK-17: elements already warned about a missing [data-resize]
|
|
58
|
+
// handle — one-shot per element so re-renders stay quiet. GC-friendly.
|
|
59
|
+
static #warnedNoHandle = new WeakSet();
|
|
60
|
+
|
|
57
61
|
// The width the sidebar had before being collapsed — used for restore.
|
|
58
62
|
// Map keyed by sidebar name allows multiple sidebars on one host.
|
|
59
63
|
#previousExpandedWidth = '';
|
|
@@ -149,7 +153,23 @@ class AdminSidebar extends UIElement {
|
|
|
149
153
|
|
|
150
154
|
#setupResizeHandle() {
|
|
151
155
|
const handle = this.querySelector(':scope > [data-resize]');
|
|
152
|
-
if (!handle)
|
|
156
|
+
if (!handle) {
|
|
157
|
+
// FEEDBACK-17: `resizable` opts in to drag-resize but relies on an
|
|
158
|
+
// author-supplied `[data-resize]` child. A silent return left authors
|
|
159
|
+
// with a no-op `resizable` attribute and zero diagnostic signal.
|
|
160
|
+
if (!AdminSidebar.#warnedNoHandle.has(this)) {
|
|
161
|
+
AdminSidebar.#warnedNoHandle.add(this);
|
|
162
|
+
// eslint-disable-next-line no-console
|
|
163
|
+
console.warn(
|
|
164
|
+
'[admin-sidebar] `resizable` is set but no `[data-resize]` child ' +
|
|
165
|
+
'was found. Add `<div data-resize></div>` as a direct child to ' +
|
|
166
|
+
'enable drag-to-resize. (Unlike `collapsible`, `resizable` requires ' +
|
|
167
|
+
'this author-supplied handle.)',
|
|
168
|
+
this,
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
153
173
|
|
|
154
174
|
const slot = this.getAttribute('slot');
|
|
155
175
|
const isLeading = slot === 'leading';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in `/with-css` companion for the whole shell cluster.
|
|
3
|
+
*
|
|
4
|
+
* Side-effect-only module. Importing this:
|
|
5
|
+
* 1. Loads `./index.js` — registers the JS-backed shell vocabulary
|
|
6
|
+
* (admin-shell, admin-sidebar, admin-command)
|
|
7
|
+
* 2. Side-effect-imports `./admin-shell/admin-shell.css` — the shell
|
|
8
|
+
* layout CSS. One file bundles every sub-component style (topbar,
|
|
9
|
+
* content, page, scroll, statusbar), so the CSS-only shell elements
|
|
10
|
+
* (admin-topbar, admin-content, admin-page, admin-page-header,
|
|
11
|
+
* admin-page-body, admin-scroll) are styled by it too.
|
|
12
|
+
*
|
|
13
|
+
* Consumer-facing entry point:
|
|
14
|
+
* import '@adia-ai/web-modules/shell/with-css';
|
|
15
|
+
*
|
|
16
|
+
* The default `@adia-ai/web-modules/shell` subpath preserves the
|
|
17
|
+
* explicit-import CSS contract (ADR-0030); this `/with-css` companion is
|
|
18
|
+
* the named opt-in for a one-line working shell. See FEEDBACK-25.
|
|
19
|
+
*/
|
|
20
|
+
import './index.js';
|
|
21
|
+
import './admin-shell/admin-shell.css';
|