@signal9/era-ui 30.7.0 → 31.0.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/CHANGELOG.md +20 -0
- package/dist/ai/conversations/conversations-item.svelte +1 -1
- package/dist/ai/plan/plan-header.svelte +1 -1
- package/dist/ai/prompt-input/prompt-input-attachments.svelte +2 -6
- package/dist/ai/swarm/swarm-node.svelte +1 -1
- package/dist/ai/todo/todo-header.svelte +1 -1
- package/dist/ai/todo/todo-item.svelte +1 -1
- package/dist/ai/tool/tool-chip.svelte +1 -1
- package/dist/ai/web-preview/web-preview.svelte +1 -1
- package/dist/dev/audit/audits/wall-is-isotropic.js +1 -1
- package/dist/docs/css-utilities.js +7 -3
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/badge.md +1 -1
- package/dist/generated-docs/bar.md +22 -4
- package/dist/generated-docs/button.md +38 -4
- package/dist/generated-docs/card.md +35 -5
- package/dist/generated-docs/chip.md +16 -0
- package/dist/generated-docs/llms-full.txt +310 -49
- package/dist/generated-docs/llms.txt +4 -3
- package/dist/generated-docs/manifest.json +45 -21
- package/dist/generated-docs/meter.md +79 -1
- package/dist/generated-docs/nav.md +8 -1
- package/dist/generated-docs/separator.md +18 -0
- package/dist/generated-docs/utilities.json +32 -9
- package/dist/generated-docs/utilities.md +89 -30
- package/dist/styles/density.css +15 -25
- package/dist/styles/index.css +32 -27
- package/dist/ui/accordion/accordion-trigger.svelte +1 -1
- package/dist/ui/alert-dialog/alert-dialog-action.svelte +2 -0
- package/dist/ui/alert-dialog/alert-dialog-cancel.svelte +2 -0
- package/dist/ui/badge/badge.svelte +8 -2
- package/dist/ui/badge/badge.svelte.d.ts +1 -1
- package/dist/ui/bar/bar.svelte +95 -26
- package/dist/ui/bar/bar.svelte.d.ts +71 -31
- package/dist/ui/button/button.svelte +38 -2
- package/dist/ui/button/button.svelte.d.ts +29 -0
- package/dist/ui/button/index.d.ts +2 -0
- package/dist/ui/button/variants.js +4 -9
- package/dist/ui/calendar/calendar-day.svelte +1 -1
- package/dist/ui/card/card.svelte +22 -9
- package/dist/ui/card/card.svelte.d.ts +19 -7
- package/dist/ui/chip/chip.svelte +5 -2
- package/dist/ui/chip/chip.svelte.d.ts +6 -6
- package/dist/ui/collapsible/collapsible-trigger.svelte +1 -1
- package/dist/ui/combobox/combobox-trigger.svelte +1 -1
- package/dist/ui/command/command-item.svelte +1 -1
- package/dist/ui/command/command-link-item.svelte +1 -1
- package/dist/ui/command/command-root.svelte +3 -5
- package/dist/ui/date-field/date-field-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-day.svelte +1 -1
- package/dist/ui/date-picker/date-picker-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-trigger.svelte +1 -1
- package/dist/ui/date-range-field/date-range-field-segment.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-day.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-segment.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-trigger.svelte +1 -1
- package/dist/ui/dialog/dialog-close.svelte +2 -0
- package/dist/ui/dialog/dialog-content.svelte +19 -1
- package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +1 -1
- package/dist/ui/file-upload/file-upload.svelte +1 -1
- package/dist/ui/input/variants.d.ts +6 -6
- package/dist/ui/input/variants.js +2 -2
- package/dist/ui/kv/kv.svelte +1 -1
- package/dist/ui/menubar/menubar-root.svelte +1 -1
- package/dist/ui/menubar/menubar-trigger.svelte +1 -1
- package/dist/ui/nav/nav-bar.svelte +9 -4
- package/dist/ui/nav/nav-bar.svelte.d.ts +2 -1
- package/dist/ui/pane/pane-root.svelte +3 -12
- package/dist/ui/pane/pane-tab.svelte +1 -1
- package/dist/ui/select/select-trigger.svelte +1 -1
- package/dist/ui/slider/slider-thumb.svelte +1 -1
- package/dist/ui/step/step-summary.svelte +1 -1
- package/dist/ui/switch/switch.svelte +2 -2
- package/dist/ui/time-field/time-field-segment.svelte +1 -1
- package/dist/ui/time-range-field/time-range-field-segment.svelte +1 -1
- package/dist/ui/timeline/timeline-step.svelte +1 -1
- package/dist/ui/toggle-group/toggle-group-item.svelte +2 -2
- package/dist/ui/toggle-group/toggle-group-item.svelte.d.ts +6 -6
- package/dist/ui/toggle-group/toggle-group-root.svelte +1 -2
- package/dist/ui/toggle-group/toggle-group-root.svelte.d.ts +3 -3
- package/dist/ui/tooltip/tooltip-content.svelte +1 -1
- package/dist/ui/tree/tree-item.svelte +1 -1
- package/dist/ui/video-player/video-player.svelte +1 -1
- package/dist/utils/tw-merge-config.d.ts +3 -0
- package/dist/utils/tw-merge-config.js +4 -0
- package/package.json +4 -3
- package/skill/SKILL.md +17 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## [31.0.0](https://github.com/sig-nine/era-ui/compare/v30.8.0...v31.0.0) (2026-08-21)
|
|
2
|
+
|
|
3
|
+
### ⚠ BREAKING CHANGES
|
|
4
|
+
|
|
5
|
+
* **geometry:** Bounded chrome now uses tier-* utilities; rounded-row and --era-container-rd are removed. Bar content no longer accepts tier and must name the actual inner tier when overriding its canonical default. Corner-mode changes now snap because intermediate radius scaling is not concentric.
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **card:** sink content with the bevel press ([7dbc709](https://github.com/sig-nine/era-ui/commit/7dbc709ff723c645cc92e586f98fb4c9218c8c1c))
|
|
10
|
+
|
|
11
|
+
### Code Refactoring
|
|
12
|
+
|
|
13
|
+
* **geometry:** make tier concentricity structural ([e3d2c70](https://github.com/sig-nine/era-ui/commit/e3d2c7012039fb130163a1f4cfc39b745df07261))
|
|
14
|
+
|
|
15
|
+
## [30.8.0](https://github.com/sig-nine/era-ui/compare/v30.7.0...v30.8.0) (2026-08-16)
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **button:** busy is in-flight without a spinner ([e163c39](https://github.com/sig-nine/era-ui/commit/e163c39b33b4e73e179f59324b6797d64b7563e3))
|
|
20
|
+
|
|
1
21
|
## [30.7.0](https://github.com/sig-nine/era-ui/compare/v30.6.0...v30.7.0) (2026-08-16)
|
|
2
22
|
|
|
3
23
|
### Features
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
// a fast pass down the list into a smear of half-lit rows. This row was the
|
|
145
145
|
// only one that animated. It also picks up the material half of the
|
|
146
146
|
// highlight the others carry, so hover reads on bevel and glass too.
|
|
147
|
-
'group/row relative flex
|
|
147
|
+
'group/row relative flex tier-control items-center gap-gutter pr-pill-inset-control pl-inset-control text-body',
|
|
148
148
|
active
|
|
149
149
|
? 'bg-hover text-bright'
|
|
150
150
|
: 'text-fg hover:bg-highlight hover:shadow-highlight has-[[data-rail]:hover]:bg-transparent has-[[data-rail]:hover]:shadow-none',
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
<Collapsible.Trigger
|
|
15
15
|
class={cn(
|
|
16
|
-
'flex
|
|
16
|
+
'flex tier-control w-full era-interactive cursor-pointer items-center gap-gutter px-inset-control text-body text-bright hover:bg-highlight',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
>
|
|
@@ -13,16 +13,12 @@
|
|
|
13
13
|
<div class="group/att relative">
|
|
14
14
|
{#if a.previewUrl}
|
|
15
15
|
<!-- Density-scaled lg-tier tile with its own tier's radius. -->
|
|
16
|
-
<img
|
|
17
|
-
src={a.previewUrl}
|
|
18
|
-
alt={a.filename}
|
|
19
|
-
class="size-bar rounded-bar object-cover shadow-sm"
|
|
20
|
-
/>
|
|
16
|
+
<img src={a.previewUrl} alt={a.filename} class="tier-bar w-bar object-cover shadow-sm" />
|
|
21
17
|
{:else}
|
|
22
18
|
<!-- md control geometry, like a Button with an icon: wall inset and
|
|
23
19
|
icon gap both --era-inset-control, ink centered by era-text-trim. -->
|
|
24
20
|
<div
|
|
25
|
-
class="flex
|
|
21
|
+
class="flex tier-control items-center gap-inset-control bg-well px-inset-control text-body leading-none text-muted shadow-sm"
|
|
26
22
|
>
|
|
27
23
|
<Paperclip class="size-icon shrink-0" />
|
|
28
24
|
<span class="max-w-32 truncate">{a.filename}</span>
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
highlight instantly so a fast pass down the tree doesn't smear. -->
|
|
161
161
|
<div
|
|
162
162
|
class={cn(
|
|
163
|
-
'flex
|
|
163
|
+
'flex tier-control items-center gap-gutter pl-inset-control text-body leading-none',
|
|
164
164
|
hasActions ? 'pr-pill-inset-control' : 'pr-inset-control',
|
|
165
165
|
(hasChildren || hasDetail) && 'cursor-pointer',
|
|
166
166
|
active ? 'bg-hover text-bright' : 'text-fg hover:bg-highlight hover:shadow-highlight',
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
-->
|
|
27
27
|
<Collapsible.Trigger
|
|
28
28
|
class={cn(
|
|
29
|
-
'group/todo flex
|
|
29
|
+
'group/todo flex tier-control w-full era-interactive cursor-pointer items-center gap-gutter px-inset-control text-body hover:bg-highlight',
|
|
30
30
|
className
|
|
31
31
|
)}
|
|
32
32
|
>
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
data-status={status}
|
|
75
75
|
aria-current={status === 'in_progress' ? 'step' : undefined}
|
|
76
76
|
class={cn(
|
|
77
|
-
'flex
|
|
77
|
+
'flex tier-control items-center gap-inset-control px-inset-control text-body',
|
|
78
78
|
tone.text,
|
|
79
79
|
className
|
|
80
80
|
)}
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
data-status={status}
|
|
48
48
|
{onclick}
|
|
49
49
|
class={cn(
|
|
50
|
-
'inline-flex
|
|
50
|
+
'inline-flex tier-pill max-w-full min-w-0 shrink-0 era-interactive cursor-pointer items-center gap-gutter px-pill text-body leading-none text-muted transition-colors duration-base ease-base hover:bg-highlight hover:text-fg',
|
|
51
51
|
active && 'bg-fill text-fg',
|
|
52
52
|
className
|
|
53
53
|
)}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<div class={cn('flex min-h-0 flex-col overflow-hidden rounded-bar bg-well shadow-lg', className)}>
|
|
19
|
-
<Bar size="control" class="shrink-0 gap-gutter rounded-none">
|
|
19
|
+
<Bar size="control" topology="docked" class="shrink-0 gap-gutter rounded-none">
|
|
20
20
|
<Button icon size="chip" aria-label="Reload" onclick={() => (nonce += 1)}>
|
|
21
21
|
<RotateCw class="size-icon" />
|
|
22
22
|
</Button>
|
|
@@ -11,7 +11,7 @@ import { TOL, flexChildren, isHorizontalFlex, paintsChrome, tiers } from './_hel
|
|
|
11
11
|
* A bar that pads 4px horizontally, gaps 4px horizontally, and centres its
|
|
12
12
|
* children to 1px vertically passes BOTH — the first sees 4 against 4, the
|
|
13
13
|
* second sees equal top and bottom padding — and is visibly wrong. Two shipped
|
|
14
|
-
* this way. Bar's content
|
|
14
|
+
* this way. Bar's old implicit content tier used one token for all three sizes on the
|
|
15
15
|
* reasoning that chip⊃icon, control⊃chip and bar⊃control all equal sp/2, which
|
|
16
16
|
* is true for two of them (chip is the rung that is not a clean sp multiple, so
|
|
17
17
|
* the difference cancels for the pairs that span it and survives for the pair
|
|
@@ -225,7 +225,7 @@ export function parseUtilities(sources) {
|
|
|
225
225
|
.flatMap(([file, source]) => [...parseFile(file, source), ...parseTheme(file, source)]);
|
|
226
226
|
}
|
|
227
227
|
const INTRO = [
|
|
228
|
-
"era's styling API is pure class names — write `
|
|
228
|
+
"era's styling API is pure class names — write `tier-control px-gutter shadow`,",
|
|
229
229
|
'never the `h-(--era-h-control)` var-class spelling. Everything below rides along',
|
|
230
230
|
'with the stylesheet and needs no import:',
|
|
231
231
|
'',
|
|
@@ -234,7 +234,7 @@ const INTRO = [
|
|
|
234
234
|
'```',
|
|
235
235
|
'',
|
|
236
236
|
'```svelte',
|
|
237
|
-
'<button class="
|
|
237
|
+
'<button class="tier-control px-inset-control shadow text-body">era styled</button>',
|
|
238
238
|
'```',
|
|
239
239
|
'',
|
|
240
240
|
'Alongside the `@utility` classes referenced below, era registers named theme',
|
|
@@ -244,6 +244,7 @@ const INTRO = [
|
|
|
244
244
|
'',
|
|
245
245
|
'| Stock-looking class | What it resolves to |',
|
|
246
246
|
'|---|---|',
|
|
247
|
+
'| `tier-icon/pill/chip/control/bar` | indivisible bounded height + concentric radius |',
|
|
247
248
|
'| `rounded-icon/pill/chip/control/bar` | the concentric radius ladder (collapses on `data-corners="square"`) |',
|
|
248
249
|
'| `rounded-menu-item` | menu-row radius, concentric inside a `rounded-control` panel |',
|
|
249
250
|
'| `shadow` / `shadow-lg` | resting control edge / floating panel chrome, per surface |',
|
|
@@ -269,10 +270,13 @@ const INTRO = [
|
|
|
269
270
|
'`inset-*` and concentric `*-inset-*` insets, `glyph-*`) are registered as a',
|
|
270
271
|
'Tailwind spacing scale, so every prefix derives automatically: `p-`, `px-`,',
|
|
271
272
|
'`pt-`, `mt-`, `gap-`, `gap-x-`, `inset-`, `translate-`, and the rest. The TIER',
|
|
272
|
-
'names (`icon`, `pill`, `chip`, `control`, `bar`) are
|
|
273
|
+
'names (`icon`, `pill`, `chip`, `control`, `bar`) are dimensions, not spacing, so',
|
|
273
274
|
'they are registered per prefix instead — `h-`, `w-`, `min-h-`, `min-w-` and',
|
|
274
275
|
'`size-` — and the two vocabularies deliberately share no word. Putting a tier',
|
|
275
276
|
'in the spacing scale would silently make `px-control` mean 24px of padding.',
|
|
277
|
+
'For chrome, use `tier-T`, which binds `h-T` and `rounded-T`; use the separate',
|
|
278
|
+
'dimension/radius names only for width, minimums, unbounded surfaces, or',
|
|
279
|
+
'asymmetric/docked corners.',
|
|
276
280
|
'',
|
|
277
281
|
'The var form (`h-(--era-h-control)`) still works and is the escape hatch for a',
|
|
278
282
|
'token with no registered name — `--era-sp`, the press-sink offsets, anything',
|