@adia-ai/web-modules 0.5.19 → 0.5.21
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/index.d.ts +4 -0
- package/editor/editor-canvas/editor-canvas.a2ui.json +1 -0
- package/editor/editor-canvas/editor-canvas.yaml +7 -0
- package/editor/editor-canvas-toolbar/editor-canvas-toolbar.a2ui.json +81 -0
- package/editor/editor-canvas-toolbar/editor-canvas-toolbar.examples.html +56 -0
- package/editor/editor-canvas-toolbar/editor-canvas-toolbar.html +42 -0
- package/editor/editor-canvas-toolbar/editor-canvas-toolbar.yaml +80 -0
- package/editor/editor-shell/css/editor-shell.bespoke.css +54 -4
- package/editor/editor-shell/css/editor-shell.layout.css +22 -137
- package/editor/editor-shell/css/editor-shell.tokens.css +9 -1
- package/package.json +63 -13
- package/runtime/index.d.ts +4 -0
- package/shell/index.d.ts +4 -0
- package/simple/index.d.ts +4 -0
- package/theme/index.d.ts +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,34 @@ Built from `@adia-ai/web-components` primitives.
|
|
|
10
10
|
|
|
11
11
|
_No pending changes._
|
|
12
12
|
|
|
13
|
+
## [0.5.21] - 2026-05-18
|
|
14
|
+
|
|
15
|
+
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.21 — see root CHANGELOG)._
|
|
16
|
+
|
|
17
|
+
## [0.5.20] - 2026-05-18
|
|
18
|
+
|
|
19
|
+
### Added — §350 (v0.5.20) — NEW `<editor-canvas-toolbar>` module
|
|
20
|
+
|
|
21
|
+
NEW `packages/web-modules/editor/editor-canvas-toolbar/` (yaml + a2ui.json + html + examples.html). CSS-only chrome strip that sits as the first child of `<editor-canvas>` — holds view-mode tabs (preview / schema / DOM), breadcrumbs, or canvas-scoped actions. Slot vocabulary mirrors `<editor-toolbar>`: `default` / `title` / `action` / `action-leading`. Sticky to the canvas scroll surface; `transform: none` cancels the inherited `editor-canvas > *` zoom transform so the toolbar stays at 1× while canvas content scales. Distinct from `<editor-toolbar>`: that one is app-scope (top of `<editor-shell>`, document-wide actions); this is canvas-scope (top of `<editor-canvas>`, view-mode affordances). Synonyms keep `canvas-header` as a discoverability alias (the component was briefly named `editor-canvas-header` during authoring before the rename to `editor-canvas-toolbar` for app-scope/canvas-scope symmetry).
|
|
22
|
+
|
|
23
|
+
NEW tokens in `editor-shell.tokens.css`: `--editor-canvas-toolbar-bg` (defaults to `--editor-panel-bg`), `--editor-canvas-toolbar-px`, `--editor-canvas-toolbar-gap`.
|
|
24
|
+
|
|
25
|
+
`editor-canvas.yaml` `related[]` adds `EditorCanvasToolbar`; a new a2ui rule disambiguates it from `<editor-toolbar>`.
|
|
26
|
+
|
|
27
|
+
### Changed — §350 (v0.5.20) — Editor canvas-bg recession scheme
|
|
28
|
+
|
|
29
|
+
`editor-shell.tokens.css` declares a three-tier surface system:
|
|
30
|
+
|
|
31
|
+
- `--editor-bg: var(--a-canvas-0)` — shell base (the strip between bars)
|
|
32
|
+
- `--editor-panel-bg: var(--a-canvas-2)` — shared by panes + top/bottom bars (NEW)
|
|
33
|
+
- `--editor-canvas-bg: var(--a-canvas-1)` — center content surface (was `--a-bg`)
|
|
34
|
+
|
|
35
|
+
`editor-shell pane-ui` now sets `--pane-bg: var(--editor-panel-bg)`, replacing pane.css's own default of `--a-bg` inside the editor cluster. Bars (`<editor-toolbar>`, `<editor-canvas-toolbar>`, `<editor-statusbar>`) all sit on `--editor-panel-bg`. Bar divider mechanism switched from `border-bottom` / `border-top` to `box-shadow: inset 0 ±1px 0 var(--a-border-subtle)` with explicit `box-sizing: border-box` — avoids border height-contribution + sticky-positioning quirks.
|
|
36
|
+
|
|
37
|
+
### Removed — §350 (v0.5.20) — Phase-3 legacy CSS retirement
|
|
38
|
+
|
|
39
|
+
`editor-shell.layout.css` lost 121 lines of dead legacy raw-shape rules: `editor-shell > header`, `editor-shell > footer`, `editor-shell > [data-body]`, plus their slot vocabulary (`[slot="icon"]` / `[slot="heading"]` / `[slot="description"]` / `[slot="action"]` / `[slot="action-leading"]`). The host (`editor-shell.js`) has been bespoke-only since v0.4.0 (ADR-0023 Phase 3); the residual CSS was inert for 7+ minor versions. Layout.css now carries only the shell base rule + the shared canvas / pane defaults the bespoke shape inherits. File shrank 186 → 65 lines. Legacy `--editor-bar-*` tokens remain declared (used only by the retired pre-bespoke `patterns/editor-shell/` docs page; cascade-leaf, harmless if not internally referenced).
|
|
40
|
+
|
|
13
41
|
## [0.5.19] - 2026-05-17
|
|
14
42
|
|
|
15
43
|
_Lockstep ride-along (no source change in this package; companion to web-components v0.5.19 — see root CHANGELOG)._
|
package/chat/index.d.ts
ADDED
|
@@ -70,6 +70,12 @@ a2ui:
|
|
|
70
70
|
Place <editor-canvas-empty> as an optional first child for the
|
|
71
71
|
empty state; the [empty] reflected attribute drives its visibility
|
|
72
72
|
via CSS (no JS toggling).
|
|
73
|
+
- >-
|
|
74
|
+
Place <editor-canvas-toolbar> as the first child to mount
|
|
75
|
+
view-mode tabs (preview / schema / DOM, etc.), breadcrumbs, or
|
|
76
|
+
canvas-scoped actions above the content body. Replaces the
|
|
77
|
+
ad-hoc <div data-view-strip> pattern. Distinct from
|
|
78
|
+
<editor-toolbar> (app-scope) — this is canvas-scope.
|
|
73
79
|
|
|
74
80
|
keywords:
|
|
75
81
|
- editor-canvas
|
|
@@ -84,5 +90,6 @@ synonyms:
|
|
|
84
90
|
related:
|
|
85
91
|
- EditorShell
|
|
86
92
|
- EditorCanvasEmpty
|
|
93
|
+
- EditorCanvasToolbar
|
|
87
94
|
- EditorToolbar
|
|
88
95
|
- EditorSidebar
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://adiaui.dev/a2ui/v0_9/components/EditorCanvasToolbar.json",
|
|
4
|
+
"title": "EditorCanvasToolbar",
|
|
5
|
+
"description": "Module-tier canvas toolbar — chrome bar that sits at the top of\n<editor-canvas>, above the content body. Holds view-mode tabs\n(preview / schema / DOM, etc.), breadcrumbs, or trailing actions\nscoped to the canvas region. CSS-only — no behavior, no JS.\n\nReplaces the ad-hoc <div data-view-strip> pattern used by editor\nconsumers. Sits flush against the inside top of <editor-canvas>\nand is sticky to the canvas scroll surface, so tabs stay visible\nwhile the canvas body scrolls.\n\nDistinct from <editor-toolbar>: that is app-scope (top of\n<editor-shell>, document-wide actions), while\n<editor-canvas-toolbar> is canvas-scope (top of <editor-canvas>,\nview-mode affordances).\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": "EditorCanvasToolbar"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"required": [
|
|
21
|
+
"component"
|
|
22
|
+
],
|
|
23
|
+
"unevaluatedProperties": false,
|
|
24
|
+
"x-adiaui": {
|
|
25
|
+
"anti_patterns": [],
|
|
26
|
+
"category": "layout",
|
|
27
|
+
"composes": [],
|
|
28
|
+
"events": {},
|
|
29
|
+
"examples": [],
|
|
30
|
+
"keywords": [
|
|
31
|
+
"editor-canvas-toolbar",
|
|
32
|
+
"canvas-toolbar",
|
|
33
|
+
"canvas-header",
|
|
34
|
+
"view-strip",
|
|
35
|
+
"view-tabs",
|
|
36
|
+
"canvas-tabs",
|
|
37
|
+
"tab-strip"
|
|
38
|
+
],
|
|
39
|
+
"name": "EditorCanvasToolbar",
|
|
40
|
+
"related": [
|
|
41
|
+
"EditorShell",
|
|
42
|
+
"EditorCanvas",
|
|
43
|
+
"EditorToolbar",
|
|
44
|
+
"EditorStatusbar",
|
|
45
|
+
"Tabs"
|
|
46
|
+
],
|
|
47
|
+
"slots": {
|
|
48
|
+
"title": {
|
|
49
|
+
"description": "Optional leading title cluster."
|
|
50
|
+
},
|
|
51
|
+
"default": {
|
|
52
|
+
"description": "Default — ad-hoc inline content (typically a <tabs-ui> with view-mode tabs, or a breadcrumb / segmented control)."
|
|
53
|
+
},
|
|
54
|
+
"action": {
|
|
55
|
+
"description": "Trailing action cluster (view-mode toggles, overflow menu)."
|
|
56
|
+
},
|
|
57
|
+
"action-leading": {
|
|
58
|
+
"description": "Leading action cluster (back, view switcher, breadcrumb)."
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"states": [
|
|
62
|
+
{
|
|
63
|
+
"description": "Default, the only state.",
|
|
64
|
+
"name": "idle"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"synonyms": {
|
|
68
|
+
"editor-canvas-toolbar": [
|
|
69
|
+
"canvas-toolbar",
|
|
70
|
+
"canvas-header",
|
|
71
|
+
"view-strip",
|
|
72
|
+
"view-tabs",
|
|
73
|
+
"tab-strip"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"tag": "editor-canvas-toolbar",
|
|
77
|
+
"tokens": {},
|
|
78
|
+
"traits": [],
|
|
79
|
+
"version": 1
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<header>
|
|
2
|
+
<div>
|
|
3
|
+
<h1>Editor Canvas Toolbar</h1>
|
|
4
|
+
<div data-actions>
|
|
5
|
+
<tag-ui size="sm">editor-canvas-toolbar</tag-ui>
|
|
6
|
+
<tag-ui size="sm" variant="ghost">CSS-only</tag-ui>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
<p>Module-tier canvas toolbar — chrome bar inside <code><editor-canvas></code> that holds view-mode tabs, breadcrumbs, or canvas-scoped actions.</p>
|
|
10
|
+
</header>
|
|
11
|
+
|
|
12
|
+
<section data-section>
|
|
13
|
+
<h2 variant="section">Role</h2>
|
|
14
|
+
<p>Replaces the ad-hoc <code><div data-view-strip></code> pattern. Sits as the first child of <code><editor-canvas></code>; the canvas's flex-column layout positions it above the content body automatically. Sticky to the canvas scroll surface so tabs stay visible during scroll.</p>
|
|
15
|
+
<p>Distinct from <code><editor-toolbar></code> — that one is app-scope (top of <code><editor-shell></code>, holds document-wide actions); this one is canvas-scope (top of <code><editor-canvas></code>, holds view-mode affordances).</p>
|
|
16
|
+
</section>
|
|
17
|
+
|
|
18
|
+
<section data-section>
|
|
19
|
+
<h2 variant="section">Composition</h2>
|
|
20
|
+
<p>Typical view-tabs usage inside <code><editor-canvas></code>:</p>
|
|
21
|
+
<code-ui language="html"><editor-canvas>
|
|
22
|
+
<editor-canvas-toolbar>
|
|
23
|
+
<tabs-ui value="preview" variant="underline">
|
|
24
|
+
<tab-ui value="preview" text="Preview" icon="eye"></tab-ui>
|
|
25
|
+
<tab-ui value="schema" text="Schema" icon="brackets-curly"></tab-ui>
|
|
26
|
+
<tab-ui value="dom" text="DOM" icon="code"></tab-ui>
|
|
27
|
+
</tabs-ui>
|
|
28
|
+
</editor-canvas-toolbar>
|
|
29
|
+
|
|
30
|
+
<div data-view-body>
|
|
31
|
+
<!-- one of [data-view] visible at a time -->
|
|
32
|
+
</div>
|
|
33
|
+
</editor-canvas></code-ui>
|
|
34
|
+
</section>
|
|
35
|
+
|
|
36
|
+
<section data-section>
|
|
37
|
+
<h2 variant="section">Slot vocabulary</h2>
|
|
38
|
+
<p>Mirrors the <code><editor-toolbar></code> / <code><editor-statusbar></code> slot conventions:</p>
|
|
39
|
+
<code-ui language="html"><editor-canvas-toolbar>
|
|
40
|
+
<span slot="action-leading">
|
|
41
|
+
<button-ui icon="arrow-left" variant="ghost" size="sm"></button-ui>
|
|
42
|
+
</span>
|
|
43
|
+
<span slot="title">Untitled.fig</span>
|
|
44
|
+
<span slot="action">
|
|
45
|
+
<button-ui icon="gear" variant="ghost" size="sm"></button-ui>
|
|
46
|
+
</span>
|
|
47
|
+
</editor-canvas-toolbar></code-ui>
|
|
48
|
+
</section>
|
|
49
|
+
|
|
50
|
+
<section data-section>
|
|
51
|
+
<h2 variant="section">Tokens</h2>
|
|
52
|
+
<code-ui language="css">/* Defaults — override on editor-shell or editor-canvas-toolbar */
|
|
53
|
+
--editor-canvas-toolbar-bg: var(--editor-panel-bg);
|
|
54
|
+
--editor-canvas-toolbar-px: var(--a-space-3);
|
|
55
|
+
--editor-canvas-toolbar-gap: var(--a-space-2);</code-ui>
|
|
56
|
+
</section>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="auto">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Editor Canvas Toolbar — AdiaUI</title>
|
|
7
|
+
|
|
8
|
+
<link rel="stylesheet" href="../../../web-components/styles/resets.css">
|
|
9
|
+
<link rel="stylesheet" href="../../../web-components/styles/tokens.css">
|
|
10
|
+
<link rel="stylesheet" href="../editor-shell/editor-shell.css">
|
|
11
|
+
<link rel="stylesheet" href="../../../web-components/components/code/code.css">
|
|
12
|
+
<link rel="stylesheet" href="../../../web-components/components/tag/tag.css">
|
|
13
|
+
|
|
14
|
+
<script type="module" src="../editor-shell/editor-shell.js"></script>
|
|
15
|
+
<script type="module" src="../../../web-components/components/code/code.js"></script>
|
|
16
|
+
<script type="module" src="../../../web-components/components/tag/tag.js"></script>
|
|
17
|
+
|
|
18
|
+
<style>
|
|
19
|
+
:where(html, body) { margin: 0; min-height: 100vh; background: var(--a-bg); color: var(--a-fg); font-family: var(--a-font); }
|
|
20
|
+
main { max-width: 960px; margin-inline: auto; padding: var(--a-space-6) var(--a-space-5); }
|
|
21
|
+
</style>
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
|
|
25
|
+
<main id="demo-root">
|
|
26
|
+
<p>Loading examples…</p>
|
|
27
|
+
</main>
|
|
28
|
+
|
|
29
|
+
<script type="module">
|
|
30
|
+
const root = document.getElementById('demo-root');
|
|
31
|
+
try {
|
|
32
|
+
const res = await fetch('./editor-canvas-toolbar.examples.html');
|
|
33
|
+
if (!res.ok) throw new Error(`fetch failed (${res.status})`);
|
|
34
|
+
root.innerHTML = await res.text();
|
|
35
|
+
} catch (err) {
|
|
36
|
+
root.innerHTML = `<p style="color:var(--a-danger-strong);">Failed to load editor-canvas-toolbar.examples.html — ${err.message}</p>`;
|
|
37
|
+
console.error('[editor-canvas-toolbar.html]', err);
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
</body>
|
|
42
|
+
</html>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Edit this file; run `npm run build:components` to regenerate a2ui.json.
|
|
2
|
+
$schema: ../../../../scripts/schemas/component.yaml.schema.json
|
|
3
|
+
name: EditorCanvasToolbar
|
|
4
|
+
tag: editor-canvas-toolbar
|
|
5
|
+
component: EditorCanvasToolbar
|
|
6
|
+
category: layout
|
|
7
|
+
version: 1
|
|
8
|
+
description: |
|
|
9
|
+
Module-tier canvas toolbar — chrome bar that sits at the top of
|
|
10
|
+
<editor-canvas>, above the content body. Holds view-mode tabs
|
|
11
|
+
(preview / schema / DOM, etc.), breadcrumbs, or trailing actions
|
|
12
|
+
scoped to the canvas region. CSS-only — no behavior, no JS.
|
|
13
|
+
|
|
14
|
+
Replaces the ad-hoc <div data-view-strip> pattern used by editor
|
|
15
|
+
consumers. Sits flush against the inside top of <editor-canvas>
|
|
16
|
+
and is sticky to the canvas scroll surface, so tabs stay visible
|
|
17
|
+
while the canvas body scrolls.
|
|
18
|
+
|
|
19
|
+
Distinct from <editor-toolbar>: that is app-scope (top of
|
|
20
|
+
<editor-shell>, document-wide actions), while
|
|
21
|
+
<editor-canvas-toolbar> is canvas-scope (top of <editor-canvas>,
|
|
22
|
+
view-mode affordances).
|
|
23
|
+
|
|
24
|
+
props: {}
|
|
25
|
+
|
|
26
|
+
events: {}
|
|
27
|
+
|
|
28
|
+
slots:
|
|
29
|
+
default:
|
|
30
|
+
description: >-
|
|
31
|
+
Default — ad-hoc inline content (typically a <tabs-ui> with
|
|
32
|
+
view-mode tabs, or a breadcrumb / segmented control).
|
|
33
|
+
title:
|
|
34
|
+
description: Optional leading title cluster.
|
|
35
|
+
action:
|
|
36
|
+
description: Trailing action cluster (view-mode toggles, overflow menu).
|
|
37
|
+
action-leading:
|
|
38
|
+
description: Leading action cluster (back, view switcher, breadcrumb).
|
|
39
|
+
|
|
40
|
+
states:
|
|
41
|
+
- name: idle
|
|
42
|
+
description: Default, the only state.
|
|
43
|
+
|
|
44
|
+
traits: []
|
|
45
|
+
|
|
46
|
+
a2ui:
|
|
47
|
+
rules:
|
|
48
|
+
- >-
|
|
49
|
+
editor-canvas-toolbar is the bespoke chrome strip for the
|
|
50
|
+
<editor-canvas> top edge. Use it to hold view-mode tabs
|
|
51
|
+
(preview / schema / DOM) or breadcrumb-style navigation
|
|
52
|
+
scoped to the canvas region.
|
|
53
|
+
- >-
|
|
54
|
+
Place as the first child of <editor-canvas>; the canvas's
|
|
55
|
+
flex-column layout positions the toolbar above the content
|
|
56
|
+
body automatically, and the toolbar is sticky to keep tabs
|
|
57
|
+
visible during canvas scroll.
|
|
58
|
+
- >-
|
|
59
|
+
Distinct from <editor-toolbar> (app-scope, top of
|
|
60
|
+
<editor-shell>) — this is canvas-scope, holding view-mode
|
|
61
|
+
affordances rather than document-wide actions.
|
|
62
|
+
|
|
63
|
+
keywords:
|
|
64
|
+
- editor-canvas-toolbar
|
|
65
|
+
- canvas-toolbar
|
|
66
|
+
- canvas-header
|
|
67
|
+
- view-strip
|
|
68
|
+
- view-tabs
|
|
69
|
+
- canvas-tabs
|
|
70
|
+
- tab-strip
|
|
71
|
+
|
|
72
|
+
synonyms:
|
|
73
|
+
editor-canvas-toolbar: [canvas-toolbar, canvas-header, view-strip, view-tabs, tab-strip]
|
|
74
|
+
|
|
75
|
+
related:
|
|
76
|
+
- EditorShell
|
|
77
|
+
- EditorCanvas
|
|
78
|
+
- EditorToolbar
|
|
79
|
+
- EditorStatusbar
|
|
80
|
+
- Tabs
|
|
@@ -25,14 +25,15 @@
|
|
|
25
25
|
|
|
26
26
|
/* ── editor-toolbar — top chrome bar ── */
|
|
27
27
|
editor-shell > editor-toolbar {
|
|
28
|
+
box-sizing: border-box;
|
|
28
29
|
display: flex;
|
|
29
30
|
align-items: center;
|
|
30
31
|
gap: var(--editor-toolbar-gap, var(--a-space-2));
|
|
31
32
|
padding: 0 var(--editor-toolbar-px, var(--a-space-3));
|
|
32
33
|
height: var(--editor-toolbar-height, var(--a-size-lg));
|
|
33
34
|
font-size: var(--editor-toolbar-font, var(--a-ui-size));
|
|
34
|
-
|
|
35
|
-
background: var(--editor-bg, var(--a-bg));
|
|
35
|
+
box-shadow: inset 0 -1px 0 var(--a-border-subtle);
|
|
36
|
+
background: var(--editor-panel-bg, var(--a-bg));
|
|
36
37
|
flex-shrink: 0;
|
|
37
38
|
grid-area: toolbar;
|
|
38
39
|
}
|
|
@@ -106,6 +107,54 @@ editor-canvas > * {
|
|
|
106
107
|
transform-origin: top left;
|
|
107
108
|
}
|
|
108
109
|
|
|
110
|
+
/* ── editor-canvas-toolbar — top chrome strip inside <editor-canvas> ──
|
|
111
|
+
Holds view-mode tabs (preview / schema / DOM), breadcrumbs, or
|
|
112
|
+
canvas-scoped actions. Sticky to the canvas scroll surface so the
|
|
113
|
+
strip stays visible while the canvas body scrolls. Cancels the zoom
|
|
114
|
+
transform inherited from `editor-canvas > *` so the toolbar stays
|
|
115
|
+
at 1x while canvas content scales. Distinct from <editor-toolbar>
|
|
116
|
+
(app-scope, top of <editor-shell>) — this is canvas-scope. */
|
|
117
|
+
editor-canvas-toolbar {
|
|
118
|
+
display: flex;
|
|
119
|
+
align-items: center;
|
|
120
|
+
gap: var(--editor-canvas-toolbar-gap, var(--a-space-2));
|
|
121
|
+
padding: 0 var(--editor-canvas-toolbar-px, var(--a-space-3));
|
|
122
|
+
box-shadow: inset 0 -1px 0 var(--a-border-subtle);
|
|
123
|
+
background: var(--editor-canvas-toolbar-bg, var(--editor-panel-bg, var(--a-bg)));
|
|
124
|
+
flex-shrink: 0;
|
|
125
|
+
position: sticky;
|
|
126
|
+
top: 0;
|
|
127
|
+
z-index: 1;
|
|
128
|
+
transform: none;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
editor-canvas-toolbar > [slot="title"] {
|
|
132
|
+
font-weight: var(--a-weight-medium, 500);
|
|
133
|
+
color: var(--a-fg);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
editor-canvas-toolbar > [slot="action-leading"] {
|
|
137
|
+
display: flex;
|
|
138
|
+
align-items: center;
|
|
139
|
+
gap: var(--editor-canvas-toolbar-gap, var(--a-space-2));
|
|
140
|
+
flex-shrink: 0;
|
|
141
|
+
margin-inline-end: var(--a-space-2);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* First [slot="action"] pushes to the trailing edge; subsequent
|
|
145
|
+
action-slot siblings stack with uniform spacing. Mirrors the
|
|
146
|
+
§196 (v0.5.6) auto-margin fix in editor-toolbar. */
|
|
147
|
+
editor-canvas-toolbar > [slot="action"] {
|
|
148
|
+
display: flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
gap: var(--editor-canvas-toolbar-gap, var(--a-space-2));
|
|
151
|
+
flex-shrink: 0;
|
|
152
|
+
margin-inline-start: auto;
|
|
153
|
+
}
|
|
154
|
+
editor-canvas-toolbar > [slot="action"] ~ [slot="action"] {
|
|
155
|
+
margin-inline-start: var(--editor-canvas-toolbar-gap, var(--a-space-2));
|
|
156
|
+
}
|
|
157
|
+
|
|
109
158
|
/* ── editor-canvas-empty — visibility via parent's [empty] ── */
|
|
110
159
|
editor-canvas:not([empty]) > editor-canvas-empty {
|
|
111
160
|
display: none;
|
|
@@ -224,14 +273,15 @@ editor-sidebar:is([resizing], :has(pane-ui[data-resizing])) > pane-ui {
|
|
|
224
273
|
|
|
225
274
|
/* ── editor-statusbar — bottom chrome bar ── */
|
|
226
275
|
editor-shell > editor-statusbar {
|
|
276
|
+
box-sizing: border-box;
|
|
227
277
|
display: flex;
|
|
228
278
|
align-items: center;
|
|
229
279
|
gap: var(--editor-statusbar-gap, var(--a-space-2));
|
|
230
280
|
padding: 0 var(--editor-statusbar-px, var(--a-space-3));
|
|
231
281
|
height: var(--editor-statusbar-height, var(--a-size-md));
|
|
232
282
|
font-size: var(--editor-statusbar-font, var(--a-ui-sm));
|
|
233
|
-
|
|
234
|
-
background: var(--editor-bg, var(--a-bg));
|
|
283
|
+
box-shadow: inset 0 1px 0 var(--a-border-subtle);
|
|
284
|
+
background: var(--editor-panel-bg, var(--a-bg));
|
|
235
285
|
color: var(--a-fg-muted);
|
|
236
286
|
flex-shrink: 0;
|
|
237
287
|
grid-area: statusbar;
|
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
/* ═══════════════════════════════════════════════════════════════
|
|
2
2
|
editor-shell — Layout
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
Phase-3 (ADR-0023) cleanup: the legacy raw shapes
|
|
5
|
+
(<header>, <footer>, <div data-body>, <div data-canvas>,
|
|
6
|
+
<pane-ui data-left|data-right>) were retired in v0.4.0; the
|
|
7
|
+
editor-shell.js host has been bespoke-only ever since. As of
|
|
8
|
+
v0.5.20 (§350) the residual CSS for those legacy shapes has
|
|
9
|
+
been removed from this file. Bar/canvas-toolbar layout is
|
|
10
|
+
owned by bespoke.css; this file now carries only the shell
|
|
11
|
+
base rule + the shared canvas/pane defaults that the bespoke
|
|
12
|
+
shape inherits.
|
|
13
|
+
|
|
14
|
+
Bespoke structure (owned by bespoke.css):
|
|
15
|
+
editor-shell — grid container
|
|
16
|
+
editor-toolbar — top chrome bar (app-scope)
|
|
17
|
+
editor-sidebar[leading] — left pane wrapper
|
|
18
|
+
pane-ui — left navigator
|
|
19
|
+
editor-canvas — center content surface
|
|
20
|
+
editor-canvas-toolbar — top chrome strip (canvas-scope)
|
|
21
|
+
editor-canvas-empty — empty-state placeholder
|
|
22
|
+
editor-sidebar[trailing] — right pane wrapper
|
|
23
|
+
pane-ui — right inspector
|
|
24
|
+
editor-statusbar — bottom chrome bar
|
|
12
25
|
═══════════════════════════════════════════════════════════════ */
|
|
13
26
|
|
|
14
27
|
editor-shell {
|
|
@@ -20,80 +33,6 @@ editor-shell {
|
|
|
20
33
|
background: var(--editor-bg);
|
|
21
34
|
}
|
|
22
35
|
|
|
23
|
-
/* ── Top bar ──
|
|
24
|
-
Slot contract (shared with > footer below):
|
|
25
|
-
[slot="icon"] leading glyph (status dot, app icon, etc.)
|
|
26
|
-
[slot="heading"] primary label; strong-weight token
|
|
27
|
-
[slot="description"] secondary metadata; muted
|
|
28
|
-
[slot="action"] trailing control cluster; first pushes to end
|
|
29
|
-
Authors may also place raw inline content (spans, buttons) directly
|
|
30
|
-
— those flow in source order. `[data-title]` / `<span data-spacer>`
|
|
31
|
-
are kept working for one release as deprecated hooks; migrate to
|
|
32
|
-
slots. */
|
|
33
|
-
editor-shell > header {
|
|
34
|
-
display: flex;
|
|
35
|
-
align-items: center;
|
|
36
|
-
gap: var(--editor-bar-gap);
|
|
37
|
-
min-height: var(--editor-bar-height);
|
|
38
|
-
padding: 0 var(--editor-bar-px);
|
|
39
|
-
border-bottom: var(--editor-border);
|
|
40
|
-
font-size: var(--editor-bar-font);
|
|
41
|
-
color: var(--editor-bar-fg);
|
|
42
|
-
flex-shrink: 0;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
editor-shell > header [data-title],
|
|
46
|
-
editor-shell > header > [slot="heading"] {
|
|
47
|
-
font-weight: var(--editor-title-weight);
|
|
48
|
-
color: var(--editor-bar-fg-strong);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
editor-shell > header > [slot="icon"] {
|
|
52
|
-
display: flex;
|
|
53
|
-
align-items: center;
|
|
54
|
-
flex-shrink: 0;
|
|
55
|
-
color: var(--editor-bar-fg);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
editor-shell > header > [slot="description"] {
|
|
59
|
-
color: var(--editor-bar-fg);
|
|
60
|
-
font-size: var(--a-ui-sm);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
editor-shell > header > [slot="action"] {
|
|
64
|
-
display: flex;
|
|
65
|
-
align-items: center;
|
|
66
|
-
gap: var(--editor-bar-gap);
|
|
67
|
-
flex-shrink: 0;
|
|
68
|
-
margin-inline-start: auto;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
editor-shell > header > [slot="action"] ~ [slot="action"] {
|
|
72
|
-
margin-inline-start: 0;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/* Dual-cluster: leading group on inline-start, trailing cluster on inline-end. */
|
|
76
|
-
editor-shell > header > [slot="action-leading"] {
|
|
77
|
-
display: flex;
|
|
78
|
-
align-items: center;
|
|
79
|
-
gap: var(--editor-bar-gap);
|
|
80
|
-
flex-shrink: 0;
|
|
81
|
-
margin-inline-end: auto;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/* ── Body: pane | canvas | pane ──
|
|
85
|
-
Legacy raw-children body wrapper (pre-bespoke, when editor-shell was a
|
|
86
|
-
single flex column with a [data-body] wrapper around the pane/canvas
|
|
87
|
-
row). With <editor-canvas> + <editor-sidebar> bespoke children, the
|
|
88
|
-
grid layout in bespoke.css owns the body shape. This rule is kept
|
|
89
|
-
for any non-bespoke consumer still passing raw inner content. */
|
|
90
|
-
editor-shell > [data-body] {
|
|
91
|
-
display: flex;
|
|
92
|
-
flex: 1;
|
|
93
|
-
min-width: 0;
|
|
94
|
-
min-height: 0;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
36
|
/* ── Canvas ── */
|
|
98
37
|
editor-shell editor-canvas {
|
|
99
38
|
flex: 1;
|
|
@@ -114,6 +53,7 @@ editor-shell editor-canvas {
|
|
|
114
53
|
/* ── Panes ── */
|
|
115
54
|
editor-shell pane-ui {
|
|
116
55
|
--pane-radius: 0;
|
|
56
|
+
--pane-bg: var(--editor-panel-bg);
|
|
117
57
|
height: 100%;
|
|
118
58
|
flex-shrink: 0;
|
|
119
59
|
}
|
|
@@ -125,58 +65,3 @@ editor-shell editor-sidebar[slot="leading"] > pane-ui {
|
|
|
125
65
|
editor-shell editor-sidebar[slot="trailing"] > pane-ui {
|
|
126
66
|
width: var(--editor-pane-width-right);
|
|
127
67
|
}
|
|
128
|
-
|
|
129
|
-
/* ── Bottom bar ──
|
|
130
|
-
Same slot contract as > header above (icon / heading / description
|
|
131
|
-
/ action). Statusbar is structurally identical to the topbar —
|
|
132
|
-
both are 36px-min chrome bands with left-aligned label content and
|
|
133
|
-
a trailing action cluster. */
|
|
134
|
-
editor-shell > footer {
|
|
135
|
-
display: flex;
|
|
136
|
-
align-items: center;
|
|
137
|
-
gap: var(--editor-bar-gap);
|
|
138
|
-
min-height: var(--editor-bar-height);
|
|
139
|
-
padding: 0 var(--editor-bar-px);
|
|
140
|
-
border-top: var(--editor-border);
|
|
141
|
-
font-size: var(--editor-bar-font);
|
|
142
|
-
color: var(--editor-bar-fg);
|
|
143
|
-
flex-shrink: 0;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
editor-shell > footer > [slot="heading"] {
|
|
147
|
-
font-weight: var(--editor-title-weight);
|
|
148
|
-
color: var(--editor-bar-fg-strong);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
editor-shell > footer > [slot="icon"] {
|
|
152
|
-
display: flex;
|
|
153
|
-
align-items: center;
|
|
154
|
-
flex-shrink: 0;
|
|
155
|
-
color: var(--editor-bar-fg);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
editor-shell > footer > [slot="description"] {
|
|
159
|
-
color: var(--editor-bar-fg);
|
|
160
|
-
font-size: var(--a-ui-sm);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
editor-shell > footer > [slot="action"] {
|
|
164
|
-
display: flex;
|
|
165
|
-
align-items: center;
|
|
166
|
-
gap: var(--editor-bar-gap);
|
|
167
|
-
flex-shrink: 0;
|
|
168
|
-
margin-inline-start: auto;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
editor-shell > footer > [slot="action"] ~ [slot="action"] {
|
|
172
|
-
margin-inline-start: 0;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/* Dual-cluster: leading group on inline-start, trailing cluster on inline-end. */
|
|
176
|
-
editor-shell > footer > [slot="action-leading"] {
|
|
177
|
-
display: flex;
|
|
178
|
-
align-items: center;
|
|
179
|
-
gap: var(--editor-bar-gap);
|
|
180
|
-
flex-shrink: 0;
|
|
181
|
-
margin-inline-end: auto;
|
|
182
|
-
}
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
--editor-bg: var(--a-canvas-0);
|
|
8
8
|
--editor-border: 1px solid var(--a-border-subtle);
|
|
9
9
|
|
|
10
|
+
/* Panel surface — shared by panes, top/bottom bars */
|
|
11
|
+
--editor-panel-bg: var(--a-canvas-2);
|
|
12
|
+
|
|
10
13
|
/* Top/bottom bars */
|
|
11
14
|
--editor-bar-height: var(--a-chrome-pane-header-height);
|
|
12
15
|
--editor-bar-px: var(--a-space-3);
|
|
@@ -16,9 +19,14 @@
|
|
|
16
19
|
--editor-bar-fg-strong: var(--a-fg);
|
|
17
20
|
|
|
18
21
|
/* Canvas */
|
|
19
|
-
--editor-canvas-bg: var(--a-
|
|
22
|
+
--editor-canvas-bg: var(--a-canvas-1);
|
|
20
23
|
--editor-canvas-fg: var(--a-fg-muted);
|
|
21
24
|
|
|
25
|
+
/* Canvas toolbar — chrome strip inside <editor-canvas> (view tabs, etc.) */
|
|
26
|
+
--editor-canvas-toolbar-bg: var(--editor-panel-bg);
|
|
27
|
+
--editor-canvas-toolbar-px: var(--a-space-3);
|
|
28
|
+
--editor-canvas-toolbar-gap: var(--a-space-2);
|
|
29
|
+
|
|
22
30
|
/* Typography */
|
|
23
31
|
--editor-title-weight: var(--a-weight-medium);
|
|
24
32
|
|
package/package.json
CHANGED
|
@@ -1,44 +1,94 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adia-ai/web-modules",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.21",
|
|
4
4
|
"description": "AdiaUI composite custom elements — shell, chat, editor, runtime clusters built from @adia-ai/web-components primitives. Subpath exports per cluster.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
|
-
".":
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./index.d.ts",
|
|
9
|
+
"import": "./index.js",
|
|
10
|
+
"default": "./index.js"
|
|
11
|
+
},
|
|
12
|
+
"./shell": {
|
|
13
|
+
"types": "./shell/index.d.ts",
|
|
14
|
+
"import": "./shell/index.js",
|
|
15
|
+
"default": "./shell/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./shell/*": {
|
|
18
|
+
"types": "./shell/*/*.d.ts",
|
|
19
|
+
"import": "./shell/*/*.js",
|
|
20
|
+
"default": "./shell/*/*.js"
|
|
21
|
+
},
|
|
10
22
|
"./shell/*.css": "./shell/*/*.css",
|
|
11
23
|
"./shell/*/*.css": "./shell/*/*.css",
|
|
12
24
|
"./shell/*/css/*.css": "./shell/*/css/*.css",
|
|
13
|
-
"./chat":
|
|
14
|
-
|
|
25
|
+
"./chat": {
|
|
26
|
+
"types": "./chat/index.d.ts",
|
|
27
|
+
"import": "./chat/index.js",
|
|
28
|
+
"default": "./chat/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./chat/*": {
|
|
31
|
+
"types": "./chat/*/*.d.ts",
|
|
32
|
+
"import": "./chat/*/*.js",
|
|
33
|
+
"default": "./chat/*/*.js"
|
|
34
|
+
},
|
|
15
35
|
"./chat/*.css": "./chat/*/*.css",
|
|
16
36
|
"./chat/*/*.css": "./chat/*/*.css",
|
|
17
37
|
"./chat/*/css/*.css": "./chat/*/css/*.css",
|
|
18
38
|
"./editor": {
|
|
19
39
|
"types": "./editor/index.d.ts",
|
|
40
|
+
"import": "./editor/index.js",
|
|
20
41
|
"default": "./editor/index.js"
|
|
21
42
|
},
|
|
22
43
|
"./editor/utils": {
|
|
23
44
|
"types": "./editor/utils.d.ts",
|
|
45
|
+
"import": "./editor/utils.js",
|
|
24
46
|
"default": "./editor/utils.js"
|
|
25
47
|
},
|
|
26
|
-
"./editor/*":
|
|
48
|
+
"./editor/*": {
|
|
49
|
+
"types": "./editor/*/*.d.ts",
|
|
50
|
+
"import": "./editor/*/*.js",
|
|
51
|
+
"default": "./editor/*/*.js"
|
|
52
|
+
},
|
|
27
53
|
"./editor/*.css": "./editor/*/*.css",
|
|
28
54
|
"./editor/*/*.css": "./editor/*/*.css",
|
|
29
55
|
"./editor/*/css/*.css": "./editor/*/css/*.css",
|
|
30
|
-
"./simple":
|
|
31
|
-
|
|
56
|
+
"./simple": {
|
|
57
|
+
"types": "./simple/index.d.ts",
|
|
58
|
+
"import": "./simple/index.js",
|
|
59
|
+
"default": "./simple/index.js"
|
|
60
|
+
},
|
|
61
|
+
"./simple/*": {
|
|
62
|
+
"types": "./simple/*/*.d.ts",
|
|
63
|
+
"import": "./simple/*/*.js",
|
|
64
|
+
"default": "./simple/*/*.js"
|
|
65
|
+
},
|
|
32
66
|
"./simple/*.css": "./simple/*/*.css",
|
|
33
67
|
"./simple/*/*.css": "./simple/*/*.css",
|
|
34
68
|
"./simple/*/css/*.css": "./simple/*/css/*.css",
|
|
35
|
-
"./runtime":
|
|
36
|
-
|
|
69
|
+
"./runtime": {
|
|
70
|
+
"types": "./runtime/index.d.ts",
|
|
71
|
+
"import": "./runtime/index.js",
|
|
72
|
+
"default": "./runtime/index.js"
|
|
73
|
+
},
|
|
74
|
+
"./runtime/*": {
|
|
75
|
+
"types": "./runtime/*/*.d.ts",
|
|
76
|
+
"import": "./runtime/*/*.js",
|
|
77
|
+
"default": "./runtime/*/*.js"
|
|
78
|
+
},
|
|
37
79
|
"./runtime/*.css": "./runtime/*/*.css",
|
|
38
80
|
"./runtime/*/*.css": "./runtime/*/*.css",
|
|
39
81
|
"./runtime/*/css/*.css": "./runtime/*/css/*.css",
|
|
40
|
-
"./theme":
|
|
41
|
-
|
|
82
|
+
"./theme": {
|
|
83
|
+
"types": "./theme/index.d.ts",
|
|
84
|
+
"import": "./theme/index.js",
|
|
85
|
+
"default": "./theme/index.js"
|
|
86
|
+
},
|
|
87
|
+
"./theme/*": {
|
|
88
|
+
"types": "./theme/*/*.d.ts",
|
|
89
|
+
"import": "./theme/*/*.js",
|
|
90
|
+
"default": "./theme/*/*.js"
|
|
91
|
+
},
|
|
42
92
|
"./theme/*.css": "./theme/*/*.css",
|
|
43
93
|
"./theme/*/*.css": "./theme/*/*.css",
|
|
44
94
|
"./theme/*/css/*.css": "./theme/*/css/*.css",
|
package/shell/index.d.ts
ADDED
package/theme/index.d.ts
ADDED