@signal9/era-ui 4.15.4 → 4.16.0
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/dist/ai/swarm/context.d.ts +7 -1
- package/dist/ai/swarm/index.d.ts +1 -1
- package/dist/ai/swarm/index.js +1 -1
- package/dist/ai/swarm/swarm-artifact.svelte +24 -2
- package/dist/ai/swarm/swarm-node.svelte +35 -3
- package/dist/ai/swarm/swarm-root.svelte +7 -1
- package/dist/ai/swarm/swarm-root.svelte.d.ts +3 -1
- package/dist/ai/swarm/swarm-sandbox.svelte +30 -2
- package/dist/ai/swarm/swarm.d.ts +219 -5
- package/dist/ai/swarm/swarm.js +149 -0
- package/dist/apps/llm-shell/llm-shell.svelte +15 -1
- package/dist/apps/llm-shell/llm-shell.svelte.d.ts +6 -0
- package/dist/apps/llm-shell/llm-swarm.svelte +9 -2
- package/dist/apps/llm-shell/llm-swarm.svelte.d.ts +2 -0
- package/dist/apps/notes/notes.svelte +9 -4
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/llms-full.txt +33 -0
- package/dist/generated-docs/llms.txt +1 -0
- package/dist/generated-docs/manifest.json +12 -1
- package/dist/generated-docs/utilities.json +10 -0
- package/dist/generated-docs/utilities.md +32 -0
- package/dist/styles/index.css +25 -0
- package/dist/ui/combobox/combobox-input.svelte +2 -2
- package/dist/ui/input/input.svelte +6 -3
- package/dist/ui/pin-input/pin-input-cell.svelte +4 -1
- package/package.json +1 -1
|
@@ -39,6 +39,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
39
39
|
- `era-text-trim` — vertically center single-line control text (a label beside an icon, a button's own text) without a translateY nudge — fixed-height, non-editable elements only; see era-text-trim-caps for ALL-CAPS strings.
|
|
40
40
|
- `truncate` — single-line horizontal truncation with an ellipsis — safe inside a trimmed or leading-none row; it will not clip ascenders or descenders.
|
|
41
41
|
- `era-text-trim-caps` — the era-text-trim variant for ALL-CAPS single-line strings (kbd hints, acronym badges) — never use it for mixed-case text.
|
|
42
|
+
- `era-ink-center` — on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
|
|
42
43
|
- `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
43
44
|
- `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
|
|
44
45
|
- `h-xs · h-xxs · h-sm · h-md · h-lg` — the tier-height ladder — h-xs (icon) · h-xxs (nested pill) · h-sm (standalone pill) · h-md (control) · h-lg (bar); the named form of h-(--era-h-*).
|
|
@@ -147,6 +148,7 @@ enough to stay var-form — `min-w-(--era-h-md)` etc. remain the escape hatch.
|
|
|
147
148
|
| `era-text-trim` | vertically center single-line control text (a label beside an icon, a button's own text) without a translateY nudge — fixed-height, non-editable elements only; see era-text-trim-caps for ALL-CAPS strings. |
|
|
148
149
|
| `truncate` | single-line horizontal truncation with an ellipsis — safe inside a trimmed or leading-none row; it will not clip ascenders or descenders. |
|
|
149
150
|
| `era-text-trim-caps` | the era-text-trim variant for ALL-CAPS single-line strings (kbd hints, acronym badges) — never use it for mixed-case text. |
|
|
151
|
+
| `era-ink-center` | on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim. |
|
|
150
152
|
| `era-shimmer` | the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text. |
|
|
151
153
|
| `era-collapse` | the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden). |
|
|
152
154
|
| `h-xs` `h-xxs` `h-sm` `h-md` `h-lg` | the tier-height ladder — h-xs (icon) · h-xxs (nested pill) · h-sm (standalone pill) · h-md (control) · h-lg (bar); the named form of h-(--era-h-*). |
|
|
@@ -331,6 +333,37 @@ Declared in `index.css`.
|
|
|
331
333
|
}
|
|
332
334
|
```
|
|
333
335
|
|
|
336
|
+
## era-ink-center
|
|
337
|
+
|
|
338
|
+
**Use it for:** on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
|
|
339
|
+
|
|
340
|
+
The EDITABLE counterpart of era-text-trim — for native <input>s, which the
|
|
341
|
+
trim is forbidden on (it collapses the UA's inner editor box and slices the
|
|
342
|
+
glyphs; see typography/collapsed-text-trim).
|
|
343
|
+
|
|
344
|
+
Without help, a tier-height input centres its text by FONT BOX, and the ui
|
|
345
|
+
stacks' font box is deeply asymmetric: ascent ≈1.07em against descent
|
|
346
|
+
≈0.29em. Centring that box parks the visible band (caps, x-height) ~0.115em
|
|
347
|
+
LOW — measured: ((asc − desc) − x-height)/2 = 0.120em on the mono and sans
|
|
348
|
+
stacks, 0.105em on serif — so a field's text sat visibly below the trimmed
|
|
349
|
+
label right beside it in the same bar.
|
|
350
|
+
|
|
351
|
+
The lift is padding, not a translateY: an icon-less Input paints the field
|
|
352
|
+
chrome itself, and a transform would drag the field along with the ink.
|
|
353
|
+
padding-bottom shrinks the content box from below, and a single-line input
|
|
354
|
+
re-centres its line box in what remains — the ink rises by exactly half the
|
|
355
|
+
padding, the chrome doesn't move, and the caret and selection follow the
|
|
356
|
+
text. In em on purpose: the correction is a fraction of the type, so it
|
|
357
|
+
holds across every density and text size with one value.
|
|
358
|
+
|
|
359
|
+
Declared in `index.css`.
|
|
360
|
+
|
|
361
|
+
```css
|
|
362
|
+
@utility era-ink-center {
|
|
363
|
+
padding-bottom: 0.23em;
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
334
367
|
## era-shimmer
|
|
335
368
|
|
|
336
369
|
**Use it for:** the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
@@ -43,6 +43,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
43
43
|
- `era-text-trim` — vertically center single-line control text (a label beside an icon, a button's own text) without a translateY nudge — fixed-height, non-editable elements only; see era-text-trim-caps for ALL-CAPS strings.
|
|
44
44
|
- `truncate` — single-line horizontal truncation with an ellipsis — safe inside a trimmed or leading-none row; it will not clip ascenders or descenders.
|
|
45
45
|
- `era-text-trim-caps` — the era-text-trim variant for ALL-CAPS single-line strings (kbd hints, acronym badges) — never use it for mixed-case text.
|
|
46
|
+
- `era-ink-center` — on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
|
|
46
47
|
- `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
47
48
|
- `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
|
|
48
49
|
- `h-xs · h-xxs · h-sm · h-md · h-lg` — the tier-height ladder — h-xs (icon) · h-xxs (nested pill) · h-sm (standalone pill) · h-md (control) · h-lg (bar); the named form of h-(--era-h-*).
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"slug": "utilities",
|
|
45
45
|
"title": "Utilities",
|
|
46
46
|
"summary": "The CSS classes era ships alongside the components — links, ink-centred text, shimmer, hidden scrollbars.",
|
|
47
|
-
"tokenEstimate":
|
|
47
|
+
"tokenEstimate": 5715,
|
|
48
48
|
"sections": [
|
|
49
49
|
"Overview",
|
|
50
50
|
"era-interactive",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"era-text-trim",
|
|
54
54
|
"truncate",
|
|
55
55
|
"era-text-trim-caps",
|
|
56
|
+
"era-ink-center",
|
|
56
57
|
"era-shimmer",
|
|
57
58
|
"era-collapse",
|
|
58
59
|
"h-xs · h-xxs · h-sm · h-md · h-lg",
|
|
@@ -1021,6 +1022,16 @@
|
|
|
1021
1022
|
"description": "ALL-CAPS single-line text (kbd hints, acronym badges): the x-height band\nmisjudges caps-only strings — cap/alphabetic edges are the right box.",
|
|
1022
1023
|
"css": "@utility era-text-trim-caps {\n\tline-height: 1;\n\ttext-box: trim-both cap alphabetic;\n}"
|
|
1023
1024
|
},
|
|
1025
|
+
{
|
|
1026
|
+
"name": "era-ink-center",
|
|
1027
|
+
"names": [
|
|
1028
|
+
"era-ink-center"
|
|
1029
|
+
],
|
|
1030
|
+
"file": "index.css",
|
|
1031
|
+
"useCase": "on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.",
|
|
1032
|
+
"description": "The EDITABLE counterpart of era-text-trim — for native <input>s, which the\ntrim is forbidden on (it collapses the UA's inner editor box and slices the\nglyphs; see typography/collapsed-text-trim).\n\nWithout help, a tier-height input centres its text by FONT BOX, and the ui\nstacks' font box is deeply asymmetric: ascent ≈1.07em against descent\n≈0.29em. Centring that box parks the visible band (caps, x-height) ~0.115em\nLOW — measured: ((asc − desc) − x-height)/2 = 0.120em on the mono and sans\nstacks, 0.105em on serif — so a field's text sat visibly below the trimmed\nlabel right beside it in the same bar.\n\nThe lift is padding, not a translateY: an icon-less Input paints the field\nchrome itself, and a transform would drag the field along with the ink.\npadding-bottom shrinks the content box from below, and a single-line input\nre-centres its line box in what remains — the ink rises by exactly half the\npadding, the chrome doesn't move, and the caret and selection follow the\ntext. In em on purpose: the correction is a fraction of the type, so it\nholds across every density and text size with one value.",
|
|
1033
|
+
"css": "@utility era-ink-center {\n\tpadding-bottom: 0.23em;\n}"
|
|
1034
|
+
},
|
|
1024
1035
|
{
|
|
1025
1036
|
"name": "era-shimmer",
|
|
1026
1037
|
"names": [
|
|
@@ -60,6 +60,16 @@
|
|
|
60
60
|
"description": "ALL-CAPS single-line text (kbd hints, acronym badges): the x-height band\nmisjudges caps-only strings — cap/alphabetic edges are the right box.",
|
|
61
61
|
"css": "@utility era-text-trim-caps {\n\tline-height: 1;\n\ttext-box: trim-both cap alphabetic;\n}"
|
|
62
62
|
},
|
|
63
|
+
{
|
|
64
|
+
"name": "era-ink-center",
|
|
65
|
+
"names": [
|
|
66
|
+
"era-ink-center"
|
|
67
|
+
],
|
|
68
|
+
"file": "index.css",
|
|
69
|
+
"useCase": "on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.",
|
|
70
|
+
"description": "The EDITABLE counterpart of era-text-trim — for native <input>s, which the\ntrim is forbidden on (it collapses the UA's inner editor box and slices the\nglyphs; see typography/collapsed-text-trim).\n\nWithout help, a tier-height input centres its text by FONT BOX, and the ui\nstacks' font box is deeply asymmetric: ascent ≈1.07em against descent\n≈0.29em. Centring that box parks the visible band (caps, x-height) ~0.115em\nLOW — measured: ((asc − desc) − x-height)/2 = 0.120em on the mono and sans\nstacks, 0.105em on serif — so a field's text sat visibly below the trimmed\nlabel right beside it in the same bar.\n\nThe lift is padding, not a translateY: an icon-less Input paints the field\nchrome itself, and a transform would drag the field along with the ink.\npadding-bottom shrinks the content box from below, and a single-line input\nre-centres its line box in what remains — the ink rises by exactly half the\npadding, the chrome doesn't move, and the caret and selection follow the\ntext. In em on purpose: the correction is a fraction of the type, so it\nholds across every density and text size with one value.",
|
|
71
|
+
"css": "@utility era-ink-center {\n\tpadding-bottom: 0.23em;\n}"
|
|
72
|
+
},
|
|
63
73
|
{
|
|
64
74
|
"name": "era-shimmer",
|
|
65
75
|
"names": [
|
|
@@ -44,6 +44,7 @@ enough to stay var-form — `min-w-(--era-h-md)` etc. remain the escape hatch.
|
|
|
44
44
|
| `era-text-trim` | vertically center single-line control text (a label beside an icon, a button's own text) without a translateY nudge — fixed-height, non-editable elements only; see era-text-trim-caps for ALL-CAPS strings. |
|
|
45
45
|
| `truncate` | single-line horizontal truncation with an ellipsis — safe inside a trimmed or leading-none row; it will not clip ascenders or descenders. |
|
|
46
46
|
| `era-text-trim-caps` | the era-text-trim variant for ALL-CAPS single-line strings (kbd hints, acronym badges) — never use it for mixed-case text. |
|
|
47
|
+
| `era-ink-center` | on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim. |
|
|
47
48
|
| `era-shimmer` | the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text. |
|
|
48
49
|
| `era-collapse` | the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden). |
|
|
49
50
|
| `h-xs` `h-xxs` `h-sm` `h-md` `h-lg` | the tier-height ladder — h-xs (icon) · h-xxs (nested pill) · h-sm (standalone pill) · h-md (control) · h-lg (bar); the named form of h-(--era-h-*). |
|
|
@@ -228,6 +229,37 @@ Declared in `index.css`.
|
|
|
228
229
|
}
|
|
229
230
|
```
|
|
230
231
|
|
|
232
|
+
## era-ink-center
|
|
233
|
+
|
|
234
|
+
**Use it for:** on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
|
|
235
|
+
|
|
236
|
+
The EDITABLE counterpart of era-text-trim — for native <input>s, which the
|
|
237
|
+
trim is forbidden on (it collapses the UA's inner editor box and slices the
|
|
238
|
+
glyphs; see typography/collapsed-text-trim).
|
|
239
|
+
|
|
240
|
+
Without help, a tier-height input centres its text by FONT BOX, and the ui
|
|
241
|
+
stacks' font box is deeply asymmetric: ascent ≈1.07em against descent
|
|
242
|
+
≈0.29em. Centring that box parks the visible band (caps, x-height) ~0.115em
|
|
243
|
+
LOW — measured: ((asc − desc) − x-height)/2 = 0.120em on the mono and sans
|
|
244
|
+
stacks, 0.105em on serif — so a field's text sat visibly below the trimmed
|
|
245
|
+
label right beside it in the same bar.
|
|
246
|
+
|
|
247
|
+
The lift is padding, not a translateY: an icon-less Input paints the field
|
|
248
|
+
chrome itself, and a transform would drag the field along with the ink.
|
|
249
|
+
padding-bottom shrinks the content box from below, and a single-line input
|
|
250
|
+
re-centres its line box in what remains — the ink rises by exactly half the
|
|
251
|
+
padding, the chrome doesn't move, and the caret and selection follow the
|
|
252
|
+
text. In em on purpose: the correction is a fraction of the type, so it
|
|
253
|
+
holds across every density and text size with one value.
|
|
254
|
+
|
|
255
|
+
Declared in `index.css`.
|
|
256
|
+
|
|
257
|
+
```css
|
|
258
|
+
@utility era-ink-center {
|
|
259
|
+
padding-bottom: 0.23em;
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
231
263
|
## era-shimmer
|
|
232
264
|
|
|
233
265
|
**Use it for:** the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
package/dist/styles/index.css
CHANGED
|
@@ -196,6 +196,31 @@
|
|
|
196
196
|
text-box: trim-both cap alphabetic;
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
+
/* The EDITABLE counterpart of era-text-trim — for native <input>s, which the
|
|
200
|
+
* trim is forbidden on (it collapses the UA's inner editor box and slices the
|
|
201
|
+
* glyphs; see typography/collapsed-text-trim).
|
|
202
|
+
*
|
|
203
|
+
* Without help, a tier-height input centres its text by FONT BOX, and the ui
|
|
204
|
+
* stacks' font box is deeply asymmetric: ascent ≈1.07em against descent
|
|
205
|
+
* ≈0.29em. Centring that box parks the visible band (caps, x-height) ~0.115em
|
|
206
|
+
* LOW — measured: ((asc − desc) − x-height)/2 = 0.120em on the mono and sans
|
|
207
|
+
* stacks, 0.105em on serif — so a field's text sat visibly below the trimmed
|
|
208
|
+
* label right beside it in the same bar.
|
|
209
|
+
*
|
|
210
|
+
* The lift is padding, not a translateY: an icon-less Input paints the field
|
|
211
|
+
* chrome itself, and a transform would drag the field along with the ink.
|
|
212
|
+
* padding-bottom shrinks the content box from below, and a single-line input
|
|
213
|
+
* re-centres its line box in what remains — the ink rises by exactly half the
|
|
214
|
+
* padding, the chrome doesn't move, and the caret and selection follow the
|
|
215
|
+
* text. In em on purpose: the correction is a fraction of the type, so it
|
|
216
|
+
* holds across every density and text size with one value.
|
|
217
|
+
*
|
|
218
|
+
* @use on a native single-line <input> (or the text layer that must mirror
|
|
219
|
+
* one) inside a fixed-height field — never alongside era-text-trim. */
|
|
220
|
+
@utility era-ink-center {
|
|
221
|
+
padding-bottom: 0.23em;
|
|
222
|
+
}
|
|
223
|
+
|
|
199
224
|
/* In-progress text shimmer — a bright sweep through muted text (the standard
|
|
200
225
|
* "working…" label treatment in streaming UIs). Timing derives from the motion
|
|
201
226
|
* axis (10× --era-duration ≈ 1.5s at normal, 2.6s at extra); at instant the
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
data-input-field
|
|
12
12
|
class={cn(
|
|
13
13
|
inputVariants(),
|
|
14
|
-
//
|
|
15
|
-
'data-[state=open]:rounded-b-none data-[state=open]:shadow-(--era-shadow-pressed)',
|
|
14
|
+
// era-ink-center: the same font-box-vs-ink correction Input documents.
|
|
15
|
+
'era-ink-center data-[state=open]:rounded-b-none data-[state=open]:shadow-(--era-shadow-pressed)',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
18
18
|
{...restProps}
|
|
@@ -36,9 +36,12 @@
|
|
|
36
36
|
|
|
37
37
|
// No era-text-trim on the <input> itself, in either branch: an <input> clips to
|
|
38
38
|
// a UA-owned inner editor box that IS the trimmed line box, so the trim slices
|
|
39
|
-
// the ascenders and descenders off what you type (a "d" renders as an "o").
|
|
40
|
-
//
|
|
41
|
-
|
|
39
|
+
// the ascenders and descenders off what you type (a "d" renders as an "o").
|
|
40
|
+
// era-ink-center is the editable's substitute — the tier height centres the
|
|
41
|
+
// FONT BOX, which parks the visible band ~0.115em low (the stacks' ascent far
|
|
42
|
+
// outweighs their descent), and the padding lift re-centres the ink itself.
|
|
43
|
+
// See styles/index.css.
|
|
44
|
+
const textClass = 'text-body text-fg placeholder:text-muted era-ink-center';
|
|
42
45
|
|
|
43
46
|
// The marker says WHICH field this is, not just that it is one. `bare` and
|
|
44
47
|
// `reveal` both render chrome-less at rest, so a test that only sees "no
|
|
@@ -20,7 +20,10 @@
|
|
|
20
20
|
{...restProps}
|
|
21
21
|
>
|
|
22
22
|
{#if cell.char !== null}
|
|
23
|
-
|
|
23
|
+
<!-- era-text-trim-caps, the numerals/caps variant: an OTP glyph is a digit
|
|
24
|
+
or a capital, and the x-height band misjudges both. On the CHAR, not
|
|
25
|
+
the cell — the cell is a flex box whose own line boxes hold no ink. -->
|
|
26
|
+
<div class="era-text-trim-caps">{cell.char}</div>
|
|
24
27
|
{/if}
|
|
25
28
|
{#if cell.hasFakeCaret}
|
|
26
29
|
<div class="pointer-events-none absolute inset-0 flex items-center justify-center">
|