@adia-ai/web-components 0.0.16 → 0.0.17

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.
@@ -296,14 +296,13 @@
296
296
  [slot="panel"] > [slot="body"][padding] { background: var(--a-canvas-0-scrim); }
297
297
 
298
298
  /* ═══════ Footer ═══════
299
- Flex row for actions. [slot="description"] + [slot="action"] = space-between.
300
- Mirrors card-ui footer semantics. */
299
+ Block default single non-slotted child (e.g. <grid-ui>, <col-ui>, raw
300
+ paragraph) stretches full-width naturally. Activate flex-row only when a
301
+ direct slotted child is present, or there are 2+ children — that's the
302
+ action-row case. Mirrors card-ui footer semantics. */
301
303
 
302
304
  [slot="panel"] > [slot="footer"] {
303
- display: flex;
304
- flex-wrap: wrap;
305
- align-items: center;
306
- gap: var(--drawer-footer-gap);
305
+ display: block;
307
306
  padding: var(--drawer-footer-pad);
308
307
  border-top: 1px solid var(--drawer-divider);
309
308
  flex-shrink: 0;
@@ -314,6 +313,14 @@
314
313
  z-index: 1;
315
314
  }
316
315
 
316
+ [slot="panel"] > [slot="footer"]:has(> [slot]),
317
+ [slot="panel"] > [slot="footer"]:has(> :nth-child(2)) {
318
+ display: flex;
319
+ flex-wrap: wrap;
320
+ align-items: center;
321
+ gap: var(--drawer-footer-gap);
322
+ }
323
+
317
324
  [slot="panel"] > [slot="footer"][justify="end"] {
318
325
  justify-content: flex-end;
319
326
  }
@@ -123,12 +123,21 @@
123
123
  pointer-events: none;
124
124
  }
125
125
 
126
- /* Prefix + Suffix */
126
+ /* Prefix + Suffix — inline-flex so icon-ui (or any non-text affix
127
+ content) centers vertically within the slot wrapper. Without
128
+ this, an icon inside a default <span slot="prefix"> sits at the
129
+ baseline of the field's 1.4 line-box and renders visually below
130
+ the field's center. With inline-flex + align-items: center the
131
+ icon centers in the slot box, which is itself centered in the
132
+ field via the field's align-items: center. */
127
133
  [slot="prefix"],
128
134
  [slot="suffix"] {
135
+ display: inline-flex;
136
+ align-items: center;
129
137
  flex-shrink: 0;
130
138
  color: var(--input-affix-fg);
131
139
  font-size: var(--input-font-size);
140
+ line-height: 1;
132
141
  user-select: none;
133
142
  pointer-events: none;
134
143
  }
@@ -22,7 +22,11 @@
22
22
  --option-card-radio-bg: var(--a-bg);
23
23
  --option-card-radio-border: var(--a-border);
24
24
  --option-card-radio-fill: var(--a-accent);
25
- --option-card-radio-dot: var(--a-accent-fg);
25
+ /* Mirror radio.css's --radio-fg-checked recipe: an always-light
26
+ token rather than --a-accent-fg, which can flip dark depending
27
+ on theme/scheme combos and produce a near-black inner dot
28
+ against the accent disc. */
29
+ --option-card-radio-dot: var(--a-chrome-light);
26
30
 
27
31
  /* ── Typography ── */
28
32
  --option-card-heading-color: var(--a-fg);
@@ -57,8 +57,20 @@
57
57
  background var(--segment-duration) var(--segment-easing);
58
58
  }
59
59
 
60
+ /* Text rendered via ::after so consumers can drive label via [text].
61
+ Under the parent's `display: flex`, ::after becomes a flex item with
62
+ `min-width: auto` (= min-content), which would force the segment to
63
+ overflow when the label is wider than the available track. Setting
64
+ `min-width: 0` re-enables shrinking, and `text-overflow: ellipsis`
65
+ has to live here (not on :scope) because text-overflow does not
66
+ inherit and only applies to the box that owns the inline text. */
60
67
  :scope::after {
61
68
  content: attr(text);
69
+ min-width: 0;
70
+ max-width: 100%;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ white-space: nowrap;
62
74
  }
63
75
 
64
76
  /* States */
@@ -110,9 +110,13 @@
110
110
  color: var(--select-fg-subtle);
111
111
  }
112
112
 
113
- /* Leading icon / avatar */
113
+ /* Leading icon / avatar — inline-flex centers icon content vertically
114
+ within the slot box (same recipe as input-ui's prefix/suffix). */
114
115
  [slot="leading"] {
116
+ display: inline-flex;
117
+ align-items: center;
115
118
  flex-shrink: 0;
119
+ line-height: 1;
116
120
  --a-icon-size: var(--select-font-size);
117
121
  color: var(--select-fg-muted);
118
122
  }
@@ -204,7 +208,7 @@ select-ui [role="option"] {
204
208
  select-ui [role="option"]:hover,
205
209
  select-ui [role="option"][data-focused] {
206
210
  background: var(--a-bg-hover);
207
- color: var(--a-fg);
211
+ color: var(--a-fg-hover);
208
212
  }
209
213
  select-ui [role="option"][aria-selected="true"] {
210
214
  color: var(--select-fg-selected);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/web-components",
3
- "version": "0.0.16",
3
+ "version": "0.0.17",
4
4
  "description": "AdiaUI web components — vanilla custom elements. A2UI runtime (renderer, registry, streams, wiring) lives in @adia-ai/a2ui-utils.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -208,7 +208,7 @@ app-nav-group-ui [slot="popover"] {
208
208
  margin: 0;
209
209
  padding: var(--a-space-1);
210
210
  border: 1px solid var(--a-border-subtle);
211
- border-radius: var(--a-radius-lg);
211
+ border-radius: var(--a-radius);
212
212
  background: var(--a-bg-subtle);
213
213
  box-shadow: var(--a-shadow-lg);
214
214
  min-width: 160px;
@@ -228,7 +228,7 @@ app-nav-group-ui [slot="popover-label"] {
228
228
 
229
229
  app-nav-group-ui [slot="popover"] [role="option"] {
230
230
  padding: var(--a-space-1) var(--a-space-2);
231
- border-radius: var(--a-radius-sm);
231
+ border-radius: var(--a-radius);
232
232
  color: var(--a-fg-subtle);
233
233
  cursor: pointer;
234
234
  white-space: nowrap;
@@ -45,6 +45,10 @@
45
45
 
46
46
  /* Section labels (e.g. "WORKSPACE") — maps to "kicker" typography role */
47
47
  --page-section-gap: var(--a-space-6);
48
+ /* Within-section block rhythm (h2 / [data-note] / code-ui / artifact stack). */
49
+ --page-block-gap: var(--a-space-4);
50
+ /* h2 → immediately-following deck/subtitle pair (auto-stamped <header>). */
51
+ --page-deck-gap: var(--a-space-1);
48
52
  --page-section-size: var(--a-kicker-size);
49
53
  --page-section-weight: var(--a-kicker-weight);
50
54
  --page-section-leading: var(--a-kicker-leading);
@@ -82,7 +86,7 @@
82
86
  --nav-easing: var(--a-easing);
83
87
  --nav-label-px: var(--a-space-2);
84
88
  --nav-label-py: var(--a-space-1);
85
- --nav-label-font-size: var(--a-ui-tiny);
89
+ --nav-label-font-size: var(--a-kicker-sm);
86
90
  --nav-label-weight: var(--a-weight-medium);
87
91
  --nav-label-fg: var(--a-fg-muted);
88
92
  --nav-divider-bg: var(--a-border-subtle);
@@ -12,10 +12,10 @@
12
12
  --section-nav-font-size: var(--a-ui-size);
13
13
 
14
14
  --section-nav-heading-fg: var(--a-fg-muted);
15
- --section-nav-heading-size: var(--a-ui-tiny);
15
+ --section-nav-heading-size: var(--a-kicker-sm);
16
16
  --section-nav-heading-weight: var(--a-weight-medium);
17
17
  --section-nav-heading-pad-x: var(--a-space-2);
18
- --section-nav-heading-pad-y: 0;
18
+ --section-nav-heading-pad-y: var(--a-space-3) var(--a-space-1);
19
19
  }
20
20
 
21
21
  :scope {
@@ -47,7 +47,8 @@
47
47
  :scope[heading]:not([heading=""])::before {
48
48
  content: attr(heading);
49
49
  display: block;
50
- padding: var(--section-nav-heading-pad-y) var(--section-nav-heading-pad-x);
50
+ padding-inline: var(--section-nav-heading-pad-x);
51
+ padding-block: var(--section-nav-heading-pad-y);
51
52
  font-size: var(--section-nav-heading-size);
52
53
  font-weight: var(--section-nav-heading-weight);
53
54
  color: var(--section-nav-heading-fg);
@@ -105,7 +105,7 @@
105
105
  --a-bg-subtle: var(--a-canvas-1);
106
106
  --a-bg-muted: var(--a-canvas-2);
107
107
  --a-bg-strong: var(--a-canvas-4);
108
- --a-bg-hover: var(--a-canvas-3);
108
+ --a-bg-hover: var(--a-canvas-2);
109
109
  --a-bg-active: var(--a-canvas-pressed);
110
110
  --a-bg-selected: var(--a-canvas-0-scrim);
111
111
  --a-bg-disabled: var(--a-canvas-muted);
@@ -486,7 +486,7 @@
486
486
  --a-ui-bg: var(--a-canvas-0-scrim);
487
487
  --a-ui-bg-hover: var(--a-canvas-2-scrim);
488
488
  --a-ui-bg-active: var(--a-canvas-0);
489
- --a-ui-bg-selected: var(--a-canvas-bright);
489
+ --a-ui-bg-selected: var(--a-canvas-0-scrim);
490
490
  --a-ui-bg-disabled: var(--a-canvas-1);
491
491
  --a-ui-bg-invalid: var(--a-danger-muted);
492
492
 
@@ -494,7 +494,7 @@
494
494
  --a-ui-text-hover: var(--a-fg-strong);
495
495
  --a-ui-text-active: var(--a-fg-strong);
496
496
  --a-ui-text-selected: var(--a-fg-strong);
497
- --a-ui-text-placeholder: var(--a-fg-subtle);
497
+ --a-ui-text-placeholder: var(--a-fg-muted);
498
498
  --a-ui-text-subtle: var(--a-fg-subtle);
499
499
  --a-ui-text-muted: var(--a-fg-muted);
500
500
  --a-ui-text-disabled: var(--a-fg-disabled);
@@ -193,9 +193,9 @@
193
193
  /* kicker — short label above a title (eyebrow/overline) */
194
194
  --a-kicker-family: var(--a-font-family-ui);
195
195
  --a-kicker-weight: var(--a-weight-semibold);
196
- --a-kicker-sm: 13px;
197
- --a-kicker-md: 14px;
198
- --a-kicker-lg: 15px;
196
+ --a-kicker-sm: 11px;
197
+ --a-kicker-md: 12px;
198
+ --a-kicker-lg: 13px;
199
199
  --a-kicker-size: var(--a-kicker-md);
200
200
  --a-kicker-leading: var(--a-font-leading-normal);
201
201
  --a-kicker-tracking: var(--a-font-tracking-wider);