@adia-ai/web-components 0.0.28 → 0.0.29

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 (69) hide show
  1. package/README.md +4 -8
  2. package/a2ui/index.js +1 -1
  3. package/components/canvas/canvas.js +1 -1
  4. package/components/feed/feed.css +9 -0
  5. package/components/feed/feed.js +118 -9
  6. package/components/toast/toast.js +48 -178
  7. package/index.css +3 -2
  8. package/index.js +15 -7
  9. package/package.json +1 -5
  10. package/patterns/a2ui-root/a2ui-root.a2ui.json +0 -125
  11. package/patterns/a2ui-root/a2ui-root.js +0 -191
  12. package/patterns/a2ui-root/a2ui-root.yaml +0 -87
  13. package/patterns/adia-chat/adia-chat.a2ui.json +0 -149
  14. package/patterns/adia-chat/adia-chat.css +0 -10
  15. package/patterns/adia-chat/adia-chat.js +0 -297
  16. package/patterns/adia-chat/adia-chat.yaml +0 -118
  17. package/patterns/adia-chat/css/adia-chat.empty.css +0 -12
  18. package/patterns/adia-chat/css/adia-chat.layout.css +0 -60
  19. package/patterns/adia-chat/css/adia-chat.markdown.css +0 -74
  20. package/patterns/adia-chat/css/adia-chat.messages.css +0 -87
  21. package/patterns/adia-chat/css/adia-chat.streaming.css +0 -30
  22. package/patterns/adia-chat/css/adia-chat.tokens.css +0 -95
  23. package/patterns/adia-editor/adia-editor.a2ui.json +0 -73
  24. package/patterns/adia-editor/adia-editor.css +0 -6
  25. package/patterns/adia-editor/adia-editor.js +0 -56
  26. package/patterns/adia-editor/adia-editor.yaml +0 -59
  27. package/patterns/adia-editor/css/adia-editor.layout.css +0 -171
  28. package/patterns/adia-editor/css/adia-editor.tokens.css +0 -28
  29. package/patterns/app-nav/app-nav.a2ui.json +0 -89
  30. package/patterns/app-nav/app-nav.css +0 -92
  31. package/patterns/app-nav/app-nav.js +0 -112
  32. package/patterns/app-nav/app-nav.yaml +0 -54
  33. package/patterns/app-nav-group/app-nav-group.a2ui.json +0 -82
  34. package/patterns/app-nav-group/app-nav-group.css +0 -264
  35. package/patterns/app-nav-group/app-nav-group.js +0 -116
  36. package/patterns/app-nav-group/app-nav-group.yaml +0 -59
  37. package/patterns/app-nav-item/app-nav-item.a2ui.json +0 -83
  38. package/patterns/app-nav-item/app-nav-item.css +0 -162
  39. package/patterns/app-nav-item/app-nav-item.js +0 -42
  40. package/patterns/app-nav-item/app-nav-item.yaml +0 -62
  41. package/patterns/app-shell/app-shell.a2ui.json +0 -129
  42. package/patterns/app-shell/app-shell.css +0 -14
  43. package/patterns/app-shell/app-shell.js +0 -251
  44. package/patterns/app-shell/app-shell.yaml +0 -89
  45. package/patterns/app-shell/css/app-shell.collapsed.css +0 -86
  46. package/patterns/app-shell/css/app-shell.helpers.css +0 -42
  47. package/patterns/app-shell/css/app-shell.main.css +0 -172
  48. package/patterns/app-shell/css/app-shell.shell.css +0 -44
  49. package/patterns/app-shell/css/app-shell.sidebar.css +0 -161
  50. package/patterns/app-shell/css/app-shell.templates.css +0 -214
  51. package/patterns/app-shell/css/app-shell.tokens.css +0 -119
  52. package/patterns/gen-ui/gen-ui.a2ui.json +0 -72
  53. package/patterns/gen-ui/gen-ui.css +0 -83
  54. package/patterns/gen-ui/gen-ui.js +0 -136
  55. package/patterns/gen-ui/gen-ui.yaml +0 -43
  56. package/patterns/index.js +0 -11
  57. package/patterns/section-nav/section-nav.a2ui.json +0 -91
  58. package/patterns/section-nav/section-nav.css +0 -60
  59. package/patterns/section-nav/section-nav.js +0 -42
  60. package/patterns/section-nav/section-nav.yaml +0 -58
  61. package/patterns/section-nav-group/section-nav-group.a2ui.json +0 -95
  62. package/patterns/section-nav-group/section-nav-group.css +0 -74
  63. package/patterns/section-nav-group/section-nav-group.js +0 -84
  64. package/patterns/section-nav-group/section-nav-group.yaml +0 -66
  65. package/patterns/section-nav-item/section-nav-item.a2ui.json +0 -97
  66. package/patterns/section-nav-item/section-nav-item.css +0 -106
  67. package/patterns/section-nav-item/section-nav-item.js +0 -66
  68. package/patterns/section-nav-item/section-nav-item.yaml +0 -70
  69. package/styles/layouts/admin.css +0 -7
@@ -1,161 +0,0 @@
1
- /* ═══════════════════════════════════════════════════════════════
2
- App Shell — Sidebar
3
-
4
- Resizable side panels with header/section/footer structure.
5
- Acts as a CSS container query provider (container-name: sidebar)
6
- so children can adapt to collapsed width via @container.
7
- ═══════════════════════════════════════════════════════════════ */
8
-
9
- [data-sidebar] {
10
- display: flex;
11
- flex-direction: column;
12
- flex-shrink: 0;
13
- min-width: var(--page-sidebar-min-width);
14
- max-width: var(--page-sidebar-max-width);
15
- min-height: 0;
16
- font-size: var(--page-sidebar-font);
17
- position: relative;
18
- container-type: inline-size;
19
- container-name: sidebar;
20
- transition: width var(--page-duration) var(--page-easing);
21
- }
22
-
23
- /* ── Resize handle ──
24
- 6px invisible hit area straddling the sidebar edge.
25
- Accent color on hover/drag. */
26
- [data-sidebar] > [data-resize] {
27
- position: absolute;
28
- top: 0;
29
- bottom: 0;
30
- width: 6px;
31
- cursor: col-resize;
32
- background: transparent;
33
- transition: background var(--page-duration-fast) var(--page-easing);
34
- z-index: 2;
35
- }
36
-
37
- [data-sidebar="leading"] > [data-resize] { right: -3px; }
38
- [data-sidebar="trailing"] > [data-resize] { left: -3px; }
39
-
40
- [data-sidebar] > [data-resize]:hover {
41
- background: var(--page-sidebar-resize-accent);
42
- }
43
-
44
- [data-sidebar][data-resizing] > [data-resize] {
45
- background: var(--page-sidebar-resize-accent);
46
- }
47
-
48
- /* During drag: disable transition + text selection */
49
- [data-sidebar][data-resizing] {
50
- user-select: none;
51
- transition: none;
52
- }
53
-
54
- /* ── Sidebar widths ── */
55
- [data-sidebar="leading"] {
56
- width: var(--page-sidebar-width-leading);
57
- }
58
-
59
- [data-sidebar="trailing"] {
60
- width: var(--page-sidebar-width-trailing);
61
- }
62
-
63
- /* ── Sidebar header / footer ──
64
- Share the same slot contract as > main > header/footer (see
65
- app-shell.main.css top-of-file comment): icon / heading /
66
- description / action. Sidebar chromes are typically single-child
67
- (a workspace-select or user-select) so the slot rules rarely come
68
- into play — but they stay consistent for authors that compose
69
- richer sidebar chromes. */
70
- [data-sidebar] > header,
71
- [data-sidebar] > footer {
72
- display: flex;
73
- align-items: center;
74
- gap: var(--page-sidebar-gap);
75
- padding: var(--page-sidebar-px);
76
- flex-shrink: 0;
77
- overflow: hidden;
78
- min-width: 0;
79
- }
80
-
81
- [data-sidebar] > header {
82
- min-height: var(--page-header-height);
83
- border-bottom: var(--page-border);
84
- }
85
-
86
- [data-sidebar] > footer {
87
- min-height: var(--page-header-height);
88
- margin-top: auto;
89
- border-top: var(--page-border);
90
- }
91
-
92
- [data-sidebar] > header > [slot="icon"],
93
- [data-sidebar] > footer > [slot="icon"] {
94
- display: flex;
95
- align-items: center;
96
- flex-shrink: 0;
97
- color: var(--page-header-fg-muted);
98
- }
99
- [data-sidebar] > header > [slot="heading"],
100
- [data-sidebar] > footer > [slot="heading"] {
101
- font-weight: var(--a-weight-medium);
102
- color: var(--a-fg);
103
- }
104
- [data-sidebar] > header > [slot="description"],
105
- [data-sidebar] > footer > [slot="description"] {
106
- color: var(--page-header-fg-muted);
107
- font-size: var(--a-ui-sm);
108
- }
109
- [data-sidebar] > header > [slot="action"],
110
- [data-sidebar] > footer > [slot="action"] {
111
- display: flex;
112
- align-items: center;
113
- gap: var(--page-actions-gap);
114
- flex-shrink: 0;
115
- margin-inline-start: auto;
116
- }
117
- [data-sidebar] > header > [slot="action"] ~ [slot="action"],
118
- [data-sidebar] > footer > [slot="action"] ~ [slot="action"] {
119
- margin-inline-start: 0;
120
- }
121
- /* Dual-cluster: leading group on inline-start, trailing cluster on inline-end. */
122
- [data-sidebar] > header > [slot="action-leading"],
123
- [data-sidebar] > footer > [slot="action-leading"] {
124
- display: flex;
125
- align-items: center;
126
- gap: var(--page-actions-gap);
127
- flex-shrink: 0;
128
- margin-inline-end: auto;
129
- }
130
-
131
- /* ── Sidebar section (scrollable body) ── */
132
- [data-sidebar] > section {
133
- flex: 1;
134
- overflow-y: auto;
135
- padding: var(--page-sidebar-px);
136
- min-height: 0;
137
- scrollbar-width: none;
138
- }
139
-
140
- [data-sidebar] > section::-webkit-scrollbar { display: none; }
141
-
142
- /* span[slot="pad"] — opt-in padding wrapper for sidebar content
143
- that needs inset (e.g. trailing sidebar inspector fields) */
144
- [data-sidebar] span[slot="pad"] {
145
- display: block;
146
- padding: var(--page-sidebar-px);
147
- }
148
-
149
- /* Reset app-nav-ui border/padding inside sidebars */
150
- [data-sidebar] app-nav-ui {
151
- border: none;
152
- padding: 0;
153
- }
154
-
155
- /* Sidebar-level divider (outside app-nav-ui scope) */
156
- [data-sidebar] > section > hr[data-nav-divider] {
157
- border: none;
158
- height: 1px;
159
- background: var(--page-sidebar-divider-bg);
160
- margin: var(--page-sidebar-gap) var(--page-sidebar-px);
161
- }
@@ -1,214 +0,0 @@
1
- /* ═══════════════════════════════════════════════════════════════
2
- App Shell — Page templates (headers, body layouts, form sections)
3
-
4
- Structure:
5
- <article data-content-root>
6
- [data-content-header] — sticky top band, border-bottom
7
- <header>...</header> — centered column (padding + max-width)
8
- [data-content-body] — scrollable flex column (size only)
9
- <section>...</section> — centered column (padding + max-width + gap)
10
- [data-content-footer] — sticky bottom band, border-top
11
- <footer>...</footer> — centered column (padding + max-width)
12
-
13
- The outer `[data-*]` wrapper owns full-width concerns (sticky
14
- position, border, background, scroll sizing). The inner semantic
15
- element (<header>/<section>/<footer>) owns the centered reading
16
- column (max-width, gutter, rhythm). Full-bleed content (iframes,
17
- split panes) can skip <section> and sit directly in
18
- [data-content-body] to opt out of the column.
19
- ═══════════════════════════════════════════════════════════════ */
20
-
21
- /* ── Content root ── */
22
- [data-content-root] {
23
- position: relative;
24
- isolation: isolate;
25
- min-block-size: 100%;
26
- }
27
-
28
- /* Fill-mode: when the body contains only an iframe (or explicit opt-in),
29
- make the root a flex column that stretches to the scroll section's
30
- visible height, so [data-content-body] flex: 1 resolves against a real
31
- size and the iframe's block-size: 100% can fill. Prose pages (natural
32
- root height + section scroll) are unaffected. */
33
- [data-content-root]:has(> [data-content-body] > iframe:only-child),
34
- [data-content-root][data-fill] {
35
- display: flex;
36
- flex-direction: column;
37
- block-size: 100%;
38
- min-block-size: 0;
39
- }
40
-
41
- /* ── Scaffold content columns ─────────────────────────────────────
42
- Max-width + centering + horizontal inset are properties of the
43
- NAMED inner semantic elements, not the [data-*] wrappers.
44
-
45
- Who owns what:
46
- • [data-content-header] / [data-content-footer]
47
- — own sticky position, border, background (full-width band).
48
- • [data-content-body]
49
- — owns flex sizing + scroll; no padding, no max-width.
50
- • Inner <header> / <section> / <footer>
51
- — own max-width, margin-inline: auto, padding (centered column).
52
- • Cards / modals / drawers
53
- — own margin/padding via their own CSS; never inherit this.
54
- ─────────────────────────────────────────────────────────────── */
55
- [data-content-header] > header,
56
- [data-content-body] > section,
57
- [data-content-footer] > footer {
58
- max-width: var(--page-content-max-width);
59
- margin-inline: auto;
60
- width: 100%;
61
- box-sizing: border-box;
62
- }
63
-
64
- [data-content-header] > header,
65
- [data-content-footer] > footer {
66
- padding-inline: var(--page-content-inset);
67
- }
68
-
69
- /* Full-width escape hatch — stretch the centered column to 100%. */
70
- [data-content-full] [data-content-header] > header,
71
- [data-content-full] [data-content-body] > section,
72
- [data-content-full] [data-content-footer] > footer,
73
- [data-content-header][data-content-full] > header,
74
- [data-content-body][data-content-full] > section,
75
- [data-content-footer][data-content-full] > footer,
76
- [data-content-header] > header[data-content-full],
77
- [data-content-body] > section[data-content-full],
78
- [data-content-footer] > footer[data-content-full] {
79
- max-width: 100%;
80
- }
81
-
82
- /* ── Content header — sticky top, border-bottom ── */
83
- [data-content-header] {
84
- position: sticky;
85
- top: 0;
86
- z-index: 1;
87
- border-bottom: var(--page-content-border);
88
- background: var(--page-content-bg);
89
- }
90
-
91
- [data-content-header] > header {
92
- display: flex;
93
- flex-direction: column;
94
- gap: var(--page-header-gap);
95
- padding-block: var(--page-content-inset) var(--page-header-gap);
96
- }
97
-
98
- /* When tabs are present, remove bottom padding so tabs sit flush against border */
99
- [data-content-header] > header:has(tabs-ui) {
100
- padding-bottom: 0;
101
- }
102
-
103
- /* Variant: non-sticky, no border, transparent bg */
104
- [data-content-header]:has(> header[data-flush]) {
105
- position: static;
106
- border-bottom: none;
107
- background: none;
108
- }
109
-
110
- /* Variant: compact padding (for dense headers) */
111
- [data-content-header] > header[data-compact] {
112
- padding-block: var(--page-header-px);
113
- }
114
-
115
- /* Title row: h1 left, actions right */
116
- [data-content-header] > header > div:first-child {
117
- display: flex;
118
- align-items: center;
119
- justify-content: space-between;
120
- gap: var(--page-header-gap);
121
- }
122
-
123
- /* h1 + description — typography handled by [variant] attribute */
124
- [data-content-header] h1 { margin: 0; }
125
- [data-content-header] > header > p { margin: 0; }
126
-
127
- /* ── Content body ──
128
- Wrapper: flex column that fills the scroll section. No padding,
129
- no max-width — those live on the inner <section>. Non-section
130
- children (iframes, split panes) go full-bleed. */
131
- [data-content-body] {
132
- flex: 1;
133
- min-height: 0;
134
- width: 100%;
135
- box-sizing: border-box;
136
- display: flex;
137
- flex-direction: column;
138
- }
139
-
140
- /* Inner <section> — the centered reading column. Owns gutter and
141
- section-to-section rhythm. Stacks with flex gap so direct children
142
- (<card-ui>, <grid-ui>, nested <section>, …) have zero wrapper margin. */
143
- [data-content-body] > section {
144
- padding: var(--page-content-inset);
145
- display: flex;
146
- flex-direction: column;
147
- gap: var(--page-section-gap, var(--a-space-8));
148
- }
149
-
150
- /* iframe-as-page-content: fill the body.
151
- display: block kills the 4-5px inline-descender gap. */
152
- [data-content-body] > iframe {
153
- display: block;
154
- inline-size: 100%;
155
- block-size: 100%;
156
- border: 0;
157
- flex: 1;
158
- }
159
-
160
- /* ── Content footer — sticky bottom, border-top ── */
161
- [data-content-footer] {
162
- position: sticky;
163
- bottom: 0;
164
- z-index: 1;
165
- border-top: var(--page-content-border);
166
- background: var(--page-content-bg);
167
- }
168
-
169
- [data-content-footer] > footer {
170
- padding: var(--page-content-inset);
171
- }
172
-
173
- /* ── Tab content ──
174
- Marker for the active tab's form sections. Gutter/padding is
175
- owned by the <article> wrapper. */
176
-
177
- /* ── Form sections ──
178
- Each section: kicker-styled h2 label, then [data-section] grid. */
179
- [data-tab-content] > section {
180
- margin-bottom: var(--page-section-gap);
181
- }
182
-
183
- /* h2 — kicker role (small, uppercase, muted, letter-spaced) */
184
- [data-tab-content] > section > h2 {
185
- font-size: var(--page-section-size);
186
- font-weight: var(--page-section-weight);
187
- line-height: var(--page-section-leading);
188
- letter-spacing: var(--page-section-tracking);
189
- text-transform: var(--page-section-case);
190
- color: var(--page-section-color);
191
- margin: 0 0 var(--page-section-mb);
192
- padding-bottom: var(--page-section-pb);
193
- border-bottom: var(--page-content-border);
194
- }
195
-
196
- /* Two-column settings layout: description left, controls right */
197
- [data-tab-content] > section > [data-section] {
198
- display: grid;
199
- grid-template-columns: 1fr 2fr;
200
- gap: var(--page-section-gap) var(--page-header-gap);
201
- }
202
-
203
- /* h3 — subsection role */
204
- [data-tab-content] > section > [data-section] > aside > h3 {
205
- font-size: var(--page-subsection-size);
206
- font-weight: var(--page-subsection-weight);
207
- color: var(--page-subsection-color);
208
- margin: 0 0 var(--page-section-pb);
209
- }
210
-
211
- /* Aside description */
212
- [data-tab-content] > section > [data-section] > aside > p {
213
- margin: 0;
214
- }
@@ -1,119 +0,0 @@
1
- /* ═══════════════════════════════════════════════════════════════
2
- App Shell — Design tokens
3
-
4
- Declared on :where(app-shell-ui) for zero specificity.
5
- All children (main + sidebars) inherit these.
6
-
7
- Token groups:
8
- --page-* — shell, borders, backgrounds
9
- --page-header-* — topbar/footer bars
10
- --page-sidebar-* — sidebar geometry
11
- --page-content-* — scroll area, sticky header, typography
12
- --page-section-* — form section headings
13
- ═══════════════════════════════════════════════════════════════ */
14
-
15
- :where(app-shell-ui) {
16
- /* Shell — root backgrounds and border shorthand */
17
- --page-bg: var(--a-canvas-1); /* chrome/sidebar bg */
18
- --page-border: 1px solid var(--a-border-subtle); /* chrome borders (killed by "borderless") */
19
- --page-main-border: var(--page-border); /* main inline borders (separate so modes can override) */
20
-
21
- /* Header / footer bars — shared by topbar + bottombar */
22
- --page-header-height: var(--a-chrome-app-header-height);
23
- --page-header-px: var(--a-space-3);
24
- --page-header-gap: var(--a-space-3);
25
- --page-header-font: var(--a-ui-size);
26
- --page-header-fg-muted: var(--a-fg-muted); /* footer text, section labels */
27
-
28
- /* Sidebar — geometry and constraints */
29
- --page-sidebar-px: var(--a-space-1); /* inner padding for header/footer/section */
30
- --page-sidebar-gap: var(--a-space-1); /* gap between sidebar header/footer items */
31
- --page-sidebar-font: var(--a-ui-size);
32
- --page-sidebar-min-width: 48px; /* collapsed icon-only width */
33
- --page-sidebar-max-width: 480px; /* drag resize upper bound */
34
- --page-sidebar-resize-accent: var(--a-accent); /* resize handle color */
35
- --page-sidebar-divider-bg: var(--a-border-subtle); /* hr divider inside sidebar */
36
- --page-sidebar-width-leading: clamp(var(--page-sidebar-min-width), 200px, 240px);
37
- --page-sidebar-width-trailing: clamp(var(--page-sidebar-min-width), 200px, 240px);
38
-
39
- /* Content area — scroll region inside main */
40
- --page-content-bg: var(--a-canvas-0); /* content surface (lighter than chrome) */
41
- --page-content-radius: var(--a-radius-lg); /* used by "rounded" mode */
42
- --page-content-inset: var(--a-space-10); /* padding for header/body/footer */
43
- --page-content-max-width: 1540px; /* max-width for content children */
44
- --page-content-border: 1px solid var(--a-border-subtle); /* content dividers (persists in "borderless") */
45
- --page-content-shadow: var(--a-shadow-sm); /* soft lift on the content surface */
46
-
47
- /* Section labels (e.g. "WORKSPACE") — maps to "kicker" typography role */
48
- --page-section-gap: var(--a-space-6);
49
- /* Within-section block rhythm (h2 / [data-note] / code-ui / artifact stack). */
50
- --page-block-gap: var(--a-space-4);
51
- /* h2 → immediately-following deck/subtitle pair (auto-stamped <header>). */
52
- --page-deck-gap: var(--a-space-1);
53
- --page-section-size: var(--a-kicker-size);
54
- --page-section-weight: var(--a-kicker-weight);
55
- --page-section-leading: var(--a-kicker-leading);
56
- --page-section-tracking: var(--a-kicker-tracking);
57
- --page-section-case: var(--a-kicker-case);
58
- --page-section-color: var(--a-kicker-color);
59
- --page-section-mb: var(--a-space-3);
60
- --page-section-pb: var(--a-space-2);
61
-
62
- /* Sub-section labels (e.g. "Details") — maps to "subsection" typography role */
63
- --page-subsection-size: var(--a-subsection-size);
64
- --page-subsection-weight: var(--a-subsection-weight);
65
- --page-subsection-color: var(--a-subsection-color);
66
-
67
- /* Sidebar collapsed — icon/avatar sizes when sidebar is narrow */
68
- --page-sidebar-collapsed-icon: 1.0625rem; /* select leading icon */
69
- --page-sidebar-collapsed-avatar: 1.5rem; /* select leading avatar */
70
-
71
- /* Helpers — layout utility spacing */
72
- --page-actions-gap: var(--a-space-2); /* inline action group gap */
73
- --page-grid-gap: var(--a-space-3); /* grid/col/row default gap */
74
-
75
- /* Animation */
76
- --page-duration: var(--a-duration);
77
- --page-duration-fast: var(--a-duration-fast);
78
- --page-easing: var(--a-easing);
79
-
80
- /* Shell typography */
81
- --page-font-family: var(--a-font-family);
82
- --page-body-size: var(--a-body-size);
83
-
84
- /* Nav — root container tokens */
85
- --nav-duration: var(--a-duration);
86
- --nav-duration-fast: var(--a-duration-fast);
87
- --nav-easing: var(--a-easing);
88
- --nav-label-px: var(--a-space-2);
89
- --nav-label-py: var(--a-space-1);
90
- --nav-label-font-size: var(--a-kicker-sm);
91
- --nav-label-weight: var(--a-weight-medium);
92
- --nav-label-fg: var(--a-fg-muted);
93
- --nav-divider-bg: var(--a-border-subtle);
94
- --nav-divider-my: var(--a-space-1);
95
-
96
- /* Nav — group tokens */
97
- --nav-group-indent-rail-bg: var(--a-border-subtle);
98
- --nav-group-icon-font-size: var(--a-ui-size);
99
- --nav-group-text-weight: var(--a-weight-medium);
100
- --nav-group-badge-bg: var(--a-bg-muted);
101
- --nav-group-badge-px: var(--a-space-1);
102
- --nav-group-badge-radius: var(--a-radius-full);
103
-
104
- /* Nav — item tokens */
105
- --nav-item-icon-font-size: var(--a-ui-size);
106
- --nav-item-selected-weight: var(--a-weight-medium);
107
- --nav-item-badge-fg: var(--a-fg-muted);
108
- --nav-item-badge-bg: var(--a-bg-muted);
109
- --nav-item-badge-px: var(--a-space-1);
110
- --nav-item-badge-radius: var(--a-radius-full);
111
- --nav-item-trailing-font: var(--a-ui-sm);
112
- --nav-item-trailing-fg: var(--a-fg-muted);
113
- --nav-item-trailing-border: var(--a-border-subtle);
114
- --nav-item-trailing-radius: var(--a-radius-sm);
115
- --nav-item-trailing-px: var(--a-space-0-5);
116
-
117
- /* Global icon size bump */
118
- --a-icon-size: 18px;
119
- }
@@ -1,72 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://adiaui.dev/a2ui/v0_9/components/GenUI.json",
4
- "title": "GenUI",
5
- "description": "Composition shell for chat + canvas generative UI. Manages layout modes\n(chat-only / split / canvas-only) and delegates a unified API across\nchild chat-ui, canvas-ui, and inspector-ui elements.\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": "GenUI"
18
- },
19
- "inspector": {
20
- "description": "Show the inspector pane (for debugging generated A2UI).",
21
- "type": "boolean",
22
- "default": false
23
- },
24
- "mode": {
25
- "description": "Layout mode — chat-only, 50/50 split, or canvas-only.",
26
- "type": "string",
27
- "enum": [
28
- "chat",
29
- "split",
30
- "canvas"
31
- ],
32
- "default": "chat"
33
- }
34
- },
35
- "required": [
36
- "component"
37
- ],
38
- "unevaluatedProperties": false,
39
- "x-adiaui": {
40
- "anti_patterns": [],
41
- "category": "layout",
42
- "events": {},
43
- "examples": [],
44
- "keywords": [
45
- "gen-ui",
46
- "generative-ui",
47
- "chat-canvas",
48
- "agent-shell"
49
- ],
50
- "name": "AdiaGenUI",
51
- "related": [
52
- "AppShell",
53
- "Chat"
54
- ],
55
- "slots": {
56
- "default": {
57
- "description": "Author supplies chat-ui, canvas-ui, and optional inspector-ui children."
58
- }
59
- },
60
- "states": [
61
- {
62
- "description": "Default mode=chat.",
63
- "name": "idle"
64
- }
65
- ],
66
- "synonyms": {},
67
- "tag": "gen-ui-ui",
68
- "tokens": {},
69
- "traits": [],
70
- "version": 1
71
- }
72
- }
@@ -1,83 +0,0 @@
1
- @scope (gen-ui-ui) {
2
-
3
- /* ═══════════════════════════════════════════════════════
4
- SHELL HOST — full bleed, no card chrome
5
- ═══════════════════════════════════════════════════════ */
6
-
7
- :scope {
8
- box-sizing: border-box;
9
- display: grid;
10
- height: 100%;
11
- min-height: 0;
12
- background: var(--chat-bg, var(--a-canvas-0));
13
- font-family: var(--a-font-family);
14
- overflow: hidden;
15
-
16
- /* Default: chat mode — single column */
17
- grid-template-columns: 1fr;
18
- }
19
-
20
- /* ═══════════════════════════════════════════════════════
21
- MODE: CHAT (initial screen — thread only, full width)
22
- ═══════════════════════════════════════════════════════ */
23
-
24
- :scope[mode="chat"] {
25
- grid-template-columns: 1fr;
26
- }
27
-
28
- :scope[mode="chat"] > canvas-ui {
29
- display: none;
30
- }
31
-
32
- /* ═══════════════════════════════════════════════════════
33
- MODE: SPLIT (dialog left + canvas right)
34
- ═══════════════════════════════════════════════════════ */
35
-
36
- :scope[mode="split"] {
37
- grid-template-columns: minmax(320px, 1fr) 1.5fr;
38
- }
39
-
40
- :scope[mode="split"] > chat-ui {
41
- border-right: var(--a-border-thin) solid var(--a-canvas-border-subtle);
42
- }
43
-
44
- /* ═══════════════════════════════════════════════════════
45
- MODE: CANVAS (canvas only)
46
- ═══════════════════════════════════════════════════════ */
47
-
48
- :scope[mode="canvas"] {
49
- grid-template-columns: 1fr;
50
- }
51
-
52
- :scope[mode="canvas"] > chat-ui {
53
- display: none;
54
- }
55
-
56
- /* ═══════════════════════════════════════════════════════
57
- INSPECTOR
58
- ═══════════════════════════════════════════════════════ */
59
-
60
- :scope > inspector-ui {
61
- display: none;
62
- }
63
-
64
- :scope[inspector] > inspector-ui {
65
- display: flex;
66
- border-left: var(--a-border-thin) solid var(--a-canvas-border-subtle);
67
- }
68
-
69
- :scope[mode="split"][inspector] {
70
- grid-template-columns: minmax(320px, 1fr) 1.5fr 1fr;
71
- }
72
-
73
- /* ═══════════════════════════════════════════════════════
74
- CHILDREN — fill grid cells
75
- ═══════════════════════════════════════════════════════ */
76
-
77
- :scope > chat-ui,
78
- :scope > canvas-ui,
79
- :scope > inspector-ui {
80
- min-height: 0;
81
- min-width: 0;
82
- }
83
- }