@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
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export declare const toggleGroupVariants: import("tailwind-variants").TVReturnType<{
|
|
2
2
|
variant: {
|
|
3
3
|
plain: "gap-gutter";
|
|
4
|
-
segmented: "
|
|
4
|
+
segmented: "gap-chip-inset-control tier-control bg-field p-chip-inset-control shadow-well";
|
|
5
5
|
};
|
|
6
6
|
}, undefined, "inline-flex items-center", {
|
|
7
7
|
variant: {
|
|
8
8
|
plain: "gap-gutter";
|
|
9
|
-
segmented: "
|
|
9
|
+
segmented: "gap-chip-inset-control tier-control bg-field p-chip-inset-control shadow-well";
|
|
10
10
|
};
|
|
11
11
|
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
12
12
|
variant: {
|
|
13
13
|
plain: "gap-gutter";
|
|
14
|
-
segmented: "
|
|
14
|
+
segmented: "gap-chip-inset-control tier-control bg-field p-chip-inset-control shadow-well";
|
|
15
15
|
};
|
|
16
16
|
}, undefined>>;
|
|
17
17
|
import { ToggleGroup } from 'bits-ui';
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
bind:ref
|
|
20
20
|
{...relay?.attrs}
|
|
21
21
|
class={cn(
|
|
22
|
-
'z-overlay inline-flex
|
|
22
|
+
'z-overlay inline-flex tier-pill items-center gap-gutter bg-elevated px-inset-pill text-body leading-none whitespace-nowrap text-fg shadow-lg glass-blur has-[svg]:gap-inset-pill',
|
|
23
23
|
className
|
|
24
24
|
)}
|
|
25
25
|
{sideOffset}
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
data-depth={item.depth}
|
|
55
55
|
style="padding-left: calc(var(--spacing-gutter) + {item.depth} * var(--era-h-control) / 2)"
|
|
56
56
|
class={cn(
|
|
57
|
-
'flex
|
|
57
|
+
'flex tier-control era-interactive cursor-default items-center gap-gutter pr-icon-inset-control text-body',
|
|
58
58
|
'hover:bg-highlight focus:outline-none focus-visible:bg-highlight',
|
|
59
59
|
selected ? 'bg-fill text-bright' : 'text-fg',
|
|
60
60
|
item.node.disabled && 'pointer-events-none opacity-50',
|
|
@@ -1058,7 +1058,7 @@
|
|
|
1058
1058
|
-->
|
|
1059
1059
|
<span
|
|
1060
1060
|
aria-hidden="true"
|
|
1061
|
-
class="pointer-events-none absolute bottom-[calc(100%+(var(--era-h-bar)-var(--era-h-chip))/2+var(--era-gap))] left-(--era-video-hover-pct) inline-flex
|
|
1061
|
+
class="pointer-events-none absolute bottom-[calc(100%+(var(--era-h-bar)-var(--era-h-chip))/2+var(--era-gap))] left-(--era-video-hover-pct) inline-flex tier-pill -translate-x-1/2 items-center gap-gutter bg-elevated px-inset-pill font-mono text-body leading-none whitespace-nowrap text-fg shadow-lg glass-blur"
|
|
1062
1062
|
>
|
|
1063
1063
|
<span class="tabular-nums">{hoverTimeLabel}</span>
|
|
1064
1064
|
{#if hoverChapter}
|
|
@@ -42,6 +42,7 @@ export const SPACING = [
|
|
|
42
42
|
'pill-inset-bar',
|
|
43
43
|
'chip-inset-control',
|
|
44
44
|
'chip-inset-bar',
|
|
45
|
+
'control-inset-bar',
|
|
45
46
|
'glyph-icon',
|
|
46
47
|
'glyph-pill'
|
|
47
48
|
];
|
|
@@ -122,6 +123,9 @@ export const twMergeConfig = {
|
|
|
122
123
|
classGroups: {
|
|
123
124
|
...spacingGroups,
|
|
124
125
|
...radiusGroups,
|
|
126
|
+
// A tier utility owns height and radius as one indivisible geometry choice.
|
|
127
|
+
// The last tier-* supplied by a consumer must replace the component default.
|
|
128
|
+
'era-tier': [{ tier: TIERS }],
|
|
125
129
|
// glass-blur sets backdrop-filter, so it conflicts with backdrop-blur.
|
|
126
130
|
'backdrop-blur': ['glass-blur'],
|
|
127
131
|
// Registered font sizes — without this they read as colours.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signal9/era-ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "31.0.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite dev --host",
|
|
6
6
|
"build": "vite build && npm run prepack",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"check:classes": "node --experimental-strip-types scripts/check-classes.ts",
|
|
26
26
|
"check:twmerge": "node --experimental-strip-types scripts/check-twmerge.ts",
|
|
27
27
|
"build:llm-docs": "node --experimental-strip-types scripts/build-llm-docs.ts",
|
|
28
|
-
"prebuild": "npm run check:surfaces && npm run check:tokens && npm run check:routes && npm run check:canonical && npm run check:layers && npm run check:themes && npm run check:classes && npm run check:twmerge && npm run check:doc-tokens && npm run check:audit-controls && npm run check:specimen-coverage && npm run check:eslint-rules && npm run check:install && npm run check:reachable && npm run check:double-edge && npm run build:llm-docs",
|
|
29
|
-
"validate": "npm run check && npm run lint && npm run format:check && npm run check:surfaces && npm run check:tokens && npm run check:routes && npm run check:canonical && npm run check:layers && npm run check:themes && npm run check:classes && npm run check:twmerge && npm run check:doc-tokens && npm run check:audit-controls && npm run check:specimen-coverage && npm run check:eslint-rules && npm run check:install && npm run check:reachable && npm run check:double-edge",
|
|
28
|
+
"prebuild": "npm run check:surfaces && npm run check:tokens && npm run check:routes && npm run check:canonical && npm run check:layers && npm run check:themes && npm run check:classes && npm run check:twmerge && npm run check:doc-tokens && npm run check:audit-controls && npm run check:specimen-coverage && npm run check:eslint-rules && npm run check:install && npm run check:reachable && npm run check:double-edge && npm run check:geometry && npm run build:llm-docs",
|
|
29
|
+
"validate": "npm run check && npm run lint && npm run format:check && npm run check:surfaces && npm run check:tokens && npm run check:routes && npm run check:canonical && npm run check:layers && npm run check:themes && npm run check:classes && npm run check:twmerge && npm run check:doc-tokens && npm run check:audit-controls && npm run check:specimen-coverage && npm run check:eslint-rules && npm run check:install && npm run check:reachable && npm run check:double-edge && npm run check:geometry",
|
|
30
30
|
"test": "npm run test:visual",
|
|
31
31
|
"check:doc-tokens": "node --experimental-strip-types scripts/check-doc-tokens.ts",
|
|
32
32
|
"check:audit-controls": "node --experimental-strip-types scripts/check-audit-controls.ts",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"check:install": "node --experimental-strip-types scripts/check-install.ts",
|
|
36
36
|
"check:reachable": "node --experimental-strip-types scripts/check-reachable.ts",
|
|
37
37
|
"check:double-edge": "node --experimental-strip-types scripts/check-double-edge.ts",
|
|
38
|
+
"check:geometry": "node --experimental-strip-types scripts/check-geometry.ts",
|
|
38
39
|
"verify:published": "node scripts/verify-published.mjs"
|
|
39
40
|
},
|
|
40
41
|
"files": [
|
package/skill/SKILL.md
CHANGED
|
@@ -20,11 +20,11 @@ whole system re-derives per element, so any `data-*` axis override on any
|
|
|
20
20
|
subtree just works.
|
|
21
21
|
|
|
22
22
|
**Write named classes, not var classes.** Era's public styling API is pure
|
|
23
|
-
Tailwind-looking utilities: `
|
|
23
|
+
Tailwind-looking utilities: `tier-control px-gutter shadow`, never
|
|
24
24
|
`h-(--era-h-control)`-style var spellings. Where Tailwind already names the concept
|
|
25
25
|
era overloads it (bare `shadow` is the
|
|
26
26
|
surface chrome, `transition-colors` rides the motion axis); where it doesn't,
|
|
27
|
-
era registers its own (`
|
|
27
|
+
era registers its own (`tier-control`, `gap-gutter`, `p-card`). The `--era-*` custom
|
|
28
28
|
properties remain public as the escape hatch for the few things without a
|
|
29
29
|
name — noted inline below — but reaching for one when a named class exists is
|
|
30
30
|
a review finding.
|
|
@@ -64,13 +64,13 @@ Named for the ROLE each rung plays, never for its size — a scale whose names
|
|
|
64
64
|
can invert is a scale nobody reads correctly (this library once shipped an
|
|
65
65
|
`xxs` that was bigger than its `xs`).
|
|
66
66
|
|
|
67
|
-
| Tier |
|
|
68
|
-
| --------- |
|
|
69
|
-
| `icon` | `
|
|
70
|
-
| `pill` | `
|
|
71
|
-
| `chip` | `
|
|
72
|
-
| `control` | `
|
|
73
|
-
| `bar` | `
|
|
67
|
+
| Tier | Geometry | Width/min-width helpers | Use for |
|
|
68
|
+
| --------- | -------------- | ---------------------------- | ------------------------------------ |
|
|
69
|
+
| `icon` | `tier-icon` | `w-icon`, `min-w-icon` | a lucide glyph, switch thumbs |
|
|
70
|
+
| `pill` | `tier-pill` | `w-pill`, `min-w-pill` | a badge/chip nested INSIDE a control |
|
|
71
|
+
| `chip` | `tier-chip` | `w-chip`, `min-w-chip` | standalone pills, switch tracks, KV |
|
|
72
|
+
| `control` | `tier-control` | `w-control`, `min-w-control` | buttons, inputs, selects, triggers |
|
|
73
|
+
| `bar` | `tier-bar` | `w-bar`, `min-w-bar` | bars and bounded headers |
|
|
74
74
|
|
|
75
75
|
`min-h-*`, `min-w-*` and `w-*` exist across the same rungs. There is no escape
|
|
76
76
|
hatch here any more: `min-w-control` is a real class, because role names collide
|
|
@@ -86,20 +86,20 @@ corners axis.
|
|
|
86
86
|
must equal the gap between the children, on every side. `gap-gutter`
|
|
87
87
|
(= sp/2) is the universal inter-element gap, and `p-gutter` (+ `px-`/`py-`)
|
|
88
88
|
is the matching gutter a scrollable list or rail owes its rows.
|
|
89
|
-
2. **Concentricity** — `rd-T − rd-U = (h-T − h-U)/2` for every tier pair.
|
|
90
|
-
|
|
91
|
-
the
|
|
92
|
-
|
|
89
|
+
2. **Concentricity** — `rd-T − rd-U = (h-T − h-U)/2` for every tier pair.
|
|
90
|
+
`tier-T` binds height and radius so they cannot drift. A bounded container
|
|
91
|
+
names the ACTUAL inner tier and owns the matching inset; nested corners then
|
|
92
|
+
share a center automatically. The concentric insets are advanced enough to stay
|
|
93
93
|
token-form, and each is named for the pair it centres:
|
|
94
94
|
`--era-icon-inset-chip` (an icon inside a chip, = sp/2),
|
|
95
95
|
`--era-icon-inset-pill`, `--era-pill-inset-control`, `--era-pill-inset-chip`,
|
|
96
96
|
`--era-icon-inset-control`, `--era-icon-inset-bar`, `--era-chip-inset-control`,
|
|
97
97
|
`--era-chip-inset-bar`.
|
|
98
98
|
|
|
99
|
-
**The
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
**The boundary**: an unbounded surface has no height tier. Its exposed corner is
|
|
100
|
+
either optical or derives OUTWARD from a declared corner-bearing child. Never
|
|
101
|
+
derive a bounded row's radius inward from an ancestor; that makes the row's
|
|
102
|
+
relationship with its own badge or chip depend on unrelated outer chrome.
|
|
103
103
|
|
|
104
104
|
## Padding: geometric vs optical
|
|
105
105
|
|