@signal9/era-ui 8.0.0 → 9.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/dist/ai/artifact/artifact-close.svelte +1 -1
- package/dist/ai/artifact/artifact-content.svelte +1 -1
- package/dist/ai/artifact/artifact-header.svelte +1 -1
- package/dist/ai/artifact/artifact.svelte +1 -1
- package/dist/ai/chain-of-thought/chain-of-thought-step.svelte +1 -1
- package/dist/ai/chain-of-thought/chain-of-thought.svelte +1 -1
- package/dist/ai/checkpoint.svelte +1 -1
- package/dist/ai/confirmation/confirmation-args.svelte +2 -2
- package/dist/ai/confirmation/confirmation.svelte +4 -4
- package/dist/ai/context/context.svelte +1 -1
- package/dist/ai/conversation/conversation-content.svelte +1 -1
- package/dist/ai/conversation/conversation-empty-state.svelte +1 -1
- package/dist/ai/conversation/conversation-scroll-button.svelte +2 -2
- package/dist/ai/conversations/conversations-group.svelte +1 -1
- package/dist/ai/conversations/conversations-item.svelte +7 -7
- package/dist/ai/error-panel/error-panel.svelte +4 -4
- package/dist/ai/image.svelte +1 -1
- package/dist/ai/inline-citation/inline-citation.svelte +2 -2
- package/dist/ai/loader.svelte +1 -1
- package/dist/ai/message/message-branch-selector.svelte +3 -3
- package/dist/ai/message/message-content.svelte +1 -1
- package/dist/ai/message/message-usage.svelte +4 -4
- package/dist/ai/model-selector/model-selector.svelte +1 -1
- package/dist/ai/open-in-chat/open-in-chat.svelte +2 -2
- package/dist/ai/plan/plan-content.svelte +1 -1
- package/dist/ai/plan/plan-header.svelte +2 -2
- package/dist/ai/plan/plan.svelte +1 -1
- package/dist/ai/prompt-input/prompt-input-add-attachments.svelte +1 -1
- package/dist/ai/prompt-input/prompt-input-attachments.svelte +5 -5
- package/dist/ai/prompt-input/prompt-input-submit.svelte +3 -3
- package/dist/ai/prompt-input/prompt-input-textarea.svelte +3 -3
- package/dist/ai/prompt-input/prompt-input.svelte +1 -1
- package/dist/ai/queue/queue-item.svelte +1 -1
- package/dist/ai/queue/queue.svelte +1 -1
- package/dist/ai/reasoning/reasoning-trigger.svelte +1 -1
- package/dist/ai/response/response.svelte +2 -2
- package/dist/ai/run-status/run-status.svelte +5 -5
- package/dist/ai/runtime-feed/runtime-feed-item.svelte +1 -1
- package/dist/ai/sources/source.svelte +1 -1
- package/dist/ai/sources/sources-trigger.svelte +1 -1
- package/dist/ai/structured-value/structured-value.svelte +1 -1
- package/dist/ai/suggestion/suggestion.svelte +2 -2
- package/dist/ai/swarm/swarm-agent.svelte +1 -1
- package/dist/ai/swarm/swarm-artifact.svelte +1 -1
- package/dist/ai/swarm/swarm-barrier.svelte +1 -1
- package/dist/ai/swarm/swarm-barriers.svelte +1 -1
- package/dist/ai/swarm/swarm-counts.svelte +1 -1
- package/dist/ai/swarm/swarm-footer.svelte +1 -1
- package/dist/ai/swarm/swarm-grid.svelte +2 -2
- package/dist/ai/swarm/swarm-header.svelte +1 -1
- package/dist/ai/swarm/swarm-node.svelte +7 -7
- package/dist/ai/swarm/swarm-role.svelte +1 -1
- package/dist/ai/swarm/swarm-root.svelte +1 -1
- package/dist/ai/swarm/swarm-sandbox.svelte +3 -3
- package/dist/ai/swarm/swarm-tree.svelte +1 -1
- package/dist/ai/task/task-content.svelte +1 -1
- package/dist/ai/task/task-trigger.svelte +1 -1
- package/dist/ai/tool/tool-chip.svelte +2 -2
- package/dist/ai/tool/tool-exec.svelte +3 -3
- package/dist/ai/tool/tool-header.svelte +1 -1
- package/dist/ai/web-preview/web-preview.svelte +3 -3
- package/dist/ai/workflow/canvas.svelte +1 -1
- package/dist/ai/workflow/node.svelte +3 -3
- package/dist/apps/llm-shell/llm-shell.svelte +7 -7
- package/dist/apps/notes/editor/slash-menu.svelte +7 -5
- package/dist/apps/notes/notes.svelte +9 -9
- package/dist/dev/audit/audits/_helpers.js +1 -1
- package/dist/dev/audit/audits/resting-gap.js +1 -1
- package/dist/dev/audit/audits/single-glyph-square.js +2 -2
- package/dist/dev/audit-overlay.svelte +7 -7
- package/dist/dev/measure.d.ts +1 -1
- package/dist/dev/measure.js +1 -1
- package/dist/docs/badge.md +1 -1
- package/dist/docs/css-utilities.d.ts +1 -1
- package/dist/docs/css-utilities.js +8 -8
- package/dist/docs/llms-txt.js +1 -1
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/badge.md +1 -1
- package/dist/generated-docs/bar.md +2 -2
- package/dist/generated-docs/chip.md +1 -1
- package/dist/generated-docs/input.md +1 -1
- package/dist/generated-docs/llms-full.txt +99 -119
- package/dist/generated-docs/llms.txt +11 -12
- package/dist/generated-docs/manifest.json +52 -65
- package/dist/generated-docs/utilities.json +45 -57
- package/dist/generated-docs/utilities.md +87 -106
- package/dist/os/notification-center.svelte +6 -6
- package/dist/os/pane.svelte +7 -5
- package/dist/os/taskbar.svelte +10 -10
- package/dist/os/toast.svelte +3 -3
- package/dist/os/toaster.svelte +1 -1
- package/dist/styles/density.css +93 -67
- package/dist/styles/index.css +89 -101
- package/dist/styles/prose.css +12 -12
- package/dist/styles/surfaces/base.css +3 -3
- package/dist/styles/surfaces/bevel.css +2 -2
- package/dist/ui/accordion/accordion-trigger.svelte +2 -2
- package/dist/ui/alert-dialog/alert-dialog-content.svelte +1 -1
- package/dist/ui/aspect-ratio/aspect-ratio.svelte +1 -1
- package/dist/ui/avatar/avatar-root.svelte +1 -1
- package/dist/ui/badge/badge.svelte +1 -1
- package/dist/ui/badge/badge.svelte.d.ts +1 -1
- package/dist/ui/bar/bar.svelte +23 -15
- package/dist/ui/bar/bar.svelte.d.ts +26 -26
- package/dist/ui/button/button.svelte +1 -1
- package/dist/ui/button/variants.js +18 -18
- package/dist/ui/button-group/button-group.svelte +2 -2
- package/dist/ui/calendar/calendar-day.svelte +1 -1
- package/dist/ui/calendar/calendar-head-cell.svelte +1 -1
- package/dist/ui/calendar/calendar-header.svelte +1 -1
- package/dist/ui/calendar/calendar-next-button.svelte +1 -1
- package/dist/ui/calendar/calendar-prev-button.svelte +1 -1
- package/dist/ui/card/card.svelte +5 -5
- package/dist/ui/card/card.svelte.d.ts +4 -4
- package/dist/ui/checkbox/checkbox.svelte +3 -3
- package/dist/ui/chip/chip.svelte +14 -10
- package/dist/ui/chip/chip.svelte.d.ts +7 -7
- package/dist/ui/code-block/code-block.svelte +6 -6
- package/dist/ui/collapsible/collapsible-trigger.svelte +1 -1
- package/dist/ui/combobox/combobox-content.svelte +1 -1
- package/dist/ui/combobox/combobox-empty.svelte +4 -1
- package/dist/ui/combobox/combobox-group-heading.svelte +4 -1
- package/dist/ui/combobox/combobox-item.svelte +1 -1
- package/dist/ui/combobox/combobox-trigger.svelte +2 -2
- package/dist/ui/command/command-group-heading.svelte +4 -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 +1 -1
- package/dist/ui/command-bar/command-bar.svelte +16 -12
- package/dist/ui/context-menu/context-menu-checkbox-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-content.svelte +1 -1
- package/dist/ui/context-menu/context-menu-group-heading.svelte +4 -1
- package/dist/ui/context-menu/context-menu-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-radio-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
- package/dist/ui/context-menu/context-menu-sub-trigger.svelte +2 -2
- package/dist/ui/copy-button/copy-button.svelte +2 -2
- package/dist/ui/cycle/cycle.svelte +1 -1
- package/dist/ui/date-field/date-field-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-content.svelte +1 -1
- package/dist/ui/date-picker/date-picker-day.svelte +1 -1
- package/dist/ui/date-picker/date-picker-head-cell.svelte +1 -1
- package/dist/ui/date-picker/date-picker-header.svelte +1 -1
- package/dist/ui/date-picker/date-picker-next-button.svelte +1 -1
- package/dist/ui/date-picker/date-picker-prev-button.svelte +1 -1
- package/dist/ui/date-picker/date-picker-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-trigger.svelte +2 -2
- package/dist/ui/date-range-field/date-range-field-segment.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-content.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-head-cell.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-header.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-next-button.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-prev-button.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 +2 -2
- package/dist/ui/dialog/dialog-content.svelte +4 -2
- package/dist/ui/dialog/dialog-header.svelte +2 -2
- package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +4 -1
- package/dist/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
- package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +2 -2
- package/dist/ui/file-upload/file-upload.svelte +2 -2
- package/dist/ui/input/input.svelte +3 -3
- package/dist/ui/input/input.svelte.d.ts +1 -1
- package/dist/ui/input/textarea.svelte +1 -1
- package/dist/ui/input/variants.d.ts +24 -24
- package/dist/ui/input/variants.js +9 -9
- package/dist/ui/kv/kv.svelte +2 -2
- package/dist/ui/link-preview/link-preview-content.svelte +1 -1
- package/dist/ui/menubar/menubar-checkbox-item.svelte +1 -1
- package/dist/ui/menubar/menubar-content.svelte +1 -1
- package/dist/ui/menubar/menubar-group-heading.svelte +4 -1
- package/dist/ui/menubar/menubar-item.svelte +1 -1
- package/dist/ui/menubar/menubar-radio-item.svelte +1 -1
- package/dist/ui/menubar/menubar-root.svelte +1 -1
- package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
- package/dist/ui/menubar/menubar-sub-trigger.svelte +2 -2
- package/dist/ui/menubar/menubar-trigger.svelte +1 -1
- package/dist/ui/meter/meter.svelte +1 -1
- package/dist/ui/pagination/pagination-next-button.svelte +1 -1
- package/dist/ui/pagination/pagination-prev-button.svelte +1 -1
- package/dist/ui/pane/pane-close.svelte +2 -2
- package/dist/ui/pane/pane-content.svelte +1 -1
- package/dist/ui/pane/pane-handle.svelte +3 -3
- package/dist/ui/pane/pane-root.svelte +12 -12
- package/dist/ui/pane/pane-tab-list.svelte +1 -1
- package/dist/ui/pane/pane-tab-panel.svelte +1 -1
- package/dist/ui/pane/pane-tab.svelte +1 -1
- package/dist/ui/pane/pane.svelte +1 -1
- package/dist/ui/pin-input/pin-input-cell.svelte +1 -1
- package/dist/ui/popover/popover-content.svelte +1 -1
- package/dist/ui/progress/progress.svelte +1 -1
- package/dist/ui/radio-group/radio-group-item.svelte +2 -2
- package/dist/ui/rating-group/rating-group-item.svelte +1 -1
- package/dist/ui/scroll-area/scroll-area-thumb.svelte +1 -1
- package/dist/ui/scroll-area/scroll-area.svelte +1 -1
- package/dist/ui/select/select-content.svelte +1 -1
- package/dist/ui/select/select-group-heading.svelte +4 -1
- package/dist/ui/select/select-item.svelte +1 -1
- package/dist/ui/select/select-trigger.svelte +2 -2
- package/dist/ui/select/select-value.svelte +1 -1
- package/dist/ui/sheet/sheet-content.svelte +3 -3
- package/dist/ui/sheet/sheet-content.svelte.d.ts +6 -6
- package/dist/ui/skeleton/skeleton.svelte +3 -3
- package/dist/ui/skeleton/skeleton.svelte.d.ts +9 -9
- package/dist/ui/slider/slider-range.svelte +1 -1
- package/dist/ui/slider/slider-thumb.svelte +1 -1
- package/dist/ui/step/step-content.svelte +1 -1
- package/dist/ui/step/step-summary.svelte +6 -6
- package/dist/ui/switch/switch.svelte +3 -3
- package/dist/ui/table/table-cell.svelte +1 -1
- package/dist/ui/table/table-head-cell.svelte +1 -1
- 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/toggle-group/toggle-group-item.svelte +1 -1
- package/dist/ui/tooltip/tooltip-content.svelte +1 -1
- package/dist/ui/video-player/video-player.svelte +44 -44
- package/dist/utils/index.js +4 -4
- package/package.json +1 -1
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
} = $props();
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
|
-
<!-- A standalone pill is the sm tier: h-
|
|
19
|
+
<!-- A standalone pill is the sm tier: h-chip + rd-sm come from the Button
|
|
20
20
|
variant; the sides take Chip's glyph-advance padding (pill-sm, ~2× the
|
|
21
21
|
vertical inset) so the words breathe. Era pills are rd-sm, not
|
|
22
22
|
full-round — touch mode alone pills the ladder. -->
|
|
23
23
|
<Button
|
|
24
24
|
size="sm"
|
|
25
|
-
class={cn('shrink-0 px-(--era-
|
|
25
|
+
class={cn('shrink-0 px-(--era-chip-px)', className)}
|
|
26
26
|
onclick={() => onSelect?.(suggestion)}
|
|
27
27
|
>
|
|
28
28
|
{#if children}{@render children()}{:else}{suggestion}{/if}
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
tone="well"
|
|
56
56
|
data-status={agent.status}
|
|
57
57
|
class={cn(
|
|
58
|
-
'flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-
|
|
58
|
+
'flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-panel)',
|
|
59
59
|
agent.status === 'failed' && 'outline -outline-offset-1 outline-destructive/60',
|
|
60
60
|
className
|
|
61
61
|
)}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
<Card
|
|
41
41
|
tone="well"
|
|
42
42
|
data-kind={artifact.kind}
|
|
43
|
-
class={cn('flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-
|
|
43
|
+
class={cn('flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-panel)', className)}
|
|
44
44
|
{...restProps}
|
|
45
45
|
>
|
|
46
46
|
<div class="flex min-w-0 items-center gap-(--era-gap) text-body era-text-trim">
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
{...restProps}
|
|
42
42
|
>
|
|
43
43
|
<div class="flex min-w-0 items-center gap-(--era-gap) text-body era-text-trim">
|
|
44
|
-
<GitMerge class="size-(--era-h-
|
|
44
|
+
<GitMerge class="size-(--era-h-icon) shrink-0 text-muted" aria-hidden="true" />
|
|
45
45
|
<span class="min-w-0 flex-1 truncate text-fg">{barrier.title}</span>
|
|
46
46
|
{#if barrier.key}
|
|
47
47
|
<span class="shrink-0 font-mono text-body text-muted">#{barrier.key}</span>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
{#if barriers.length > 0}
|
|
28
28
|
<div
|
|
29
29
|
class={cn(
|
|
30
|
-
'flex min-w-0 flex-col gap-(--era-pad-
|
|
30
|
+
'flex min-w-0 flex-col gap-(--era-pad-panel) border-t border-divider-faded p-(--era-pad-panel)',
|
|
31
31
|
className
|
|
32
32
|
)}
|
|
33
33
|
{...restProps}
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
|
|
51
51
|
<div
|
|
52
52
|
class={cn(
|
|
53
|
-
'flex h-(--era-h-
|
|
53
|
+
'flex h-(--era-h-control) shrink-0 items-center gap-(--era-gap) border-t border-divider-faded px-(--era-inset-control) font-mono text-body era-text-trim',
|
|
54
54
|
className
|
|
55
55
|
)}
|
|
56
56
|
{...restProps}
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
grow with the density axis instead of staying dense-sized in touch mode. -->
|
|
35
35
|
<div
|
|
36
36
|
class={cn(
|
|
37
|
-
'grid min-w-0 grid-cols-[repeat(auto-fill,minmax(calc(var(--era-h-
|
|
37
|
+
'grid min-w-0 grid-cols-[repeat(auto-fill,minmax(calc(var(--era-h-bar)*6),1fr))] gap-(--era-gap) p-(--era-gap)',
|
|
38
38
|
className
|
|
39
39
|
)}
|
|
40
40
|
{...restProps}
|
|
41
41
|
>
|
|
42
42
|
{#if nodes.length === 0}
|
|
43
|
-
<div class="px-(--era-inset-
|
|
43
|
+
<div class="px-(--era-inset-control) py-(--era-gap) text-body text-muted">
|
|
44
44
|
{#if empty}{@render empty()}{:else}No agents yet.{/if}
|
|
45
45
|
</div>
|
|
46
46
|
{:else}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
the end of a sentence you can hover for, never the count of what failed. -->
|
|
44
44
|
<div
|
|
45
45
|
class={cn(
|
|
46
|
-
'flex h-(--era-h-
|
|
46
|
+
'flex h-(--era-h-control) shrink-0 items-center gap-(--era-gap) px-(--era-inset-control) text-body era-text-trim',
|
|
47
47
|
className
|
|
48
48
|
)}
|
|
49
49
|
{...restProps}
|
|
@@ -160,8 +160,8 @@
|
|
|
160
160
|
highlight instantly so a fast pass down the tree doesn't smear. -->
|
|
161
161
|
<div
|
|
162
162
|
class={cn(
|
|
163
|
-
'flex h-(--era-h-
|
|
164
|
-
hasActions ? 'pr-(--era-
|
|
163
|
+
'flex h-(--era-h-control) items-center gap-(--era-gap) rounded-(--era-rd-control) pl-(--era-inset-control) text-body era-text-trim',
|
|
164
|
+
hasActions ? 'pr-(--era-pill-inset-control)' : 'pr-(--era-inset-control)',
|
|
165
165
|
(hasChildren || hasDetail) && 'cursor-pointer',
|
|
166
166
|
active
|
|
167
167
|
? 'bg-hover text-bright'
|
|
@@ -183,14 +183,14 @@
|
|
|
183
183
|
single source of truth, without the ancestry. -->
|
|
184
184
|
<ChevronRight
|
|
185
185
|
class={cn(
|
|
186
|
-
'size-(--era-h-
|
|
186
|
+
'size-(--era-h-icon) shrink-0 text-muted transition-transform duration-(--era-duration) ease-(--era-ease)',
|
|
187
187
|
open && 'rotate-90'
|
|
188
188
|
)}
|
|
189
189
|
aria-hidden="true"
|
|
190
190
|
/>
|
|
191
191
|
{:else}
|
|
192
192
|
<!-- Keeps every row's dot on the same column, expandable or not. -->
|
|
193
|
-
<span class="size-(--era-h-
|
|
193
|
+
<span class="size-(--era-h-icon) shrink-0" aria-hidden="true"></span>
|
|
194
194
|
{/if}
|
|
195
195
|
|
|
196
196
|
<Dot status={agent.status} />
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
event.stopPropagation();
|
|
226
226
|
toggleDetail();
|
|
227
227
|
}}
|
|
228
|
-
class="shrink-0 era-interactive cursor-pointer rounded-(--era-rd-
|
|
228
|
+
class="shrink-0 era-interactive cursor-pointer rounded-(--era-rd-pill) px-(--era-pill-px) font-mono text-body era-text-trim text-muted hover:bg-(--era-highlight) hover:text-fg data-[state=open]:bg-hover data-[state=open]:text-fg"
|
|
229
229
|
>
|
|
230
230
|
{detailLabel}
|
|
231
231
|
</button>
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
<Collapsible.Root bind:open={detailOpen}>
|
|
264
264
|
<Collapsible.Content class="era-collapse">
|
|
265
265
|
<div
|
|
266
|
-
class="min-w-0 pr-(--era-inset-
|
|
266
|
+
class="min-w-0 pr-(--era-inset-control) pb-(--era-gap) pl-[calc(var(--era-inset-control)+var(--era-h-icon)+var(--era-gap))]"
|
|
267
267
|
>
|
|
268
268
|
{@render detail?.(agent)}
|
|
269
269
|
</div>
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
straight down from the parent's own arrow into its children. -->
|
|
278
278
|
<div
|
|
279
279
|
role="group"
|
|
280
|
-
class="ml-[calc(var(--era-inset-
|
|
280
|
+
class="ml-[calc(var(--era-inset-control)+var(--era-h-icon)/2)] border-l border-divider-faded"
|
|
281
281
|
>
|
|
282
282
|
{@render children?.()}
|
|
283
283
|
</div>
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
<div
|
|
53
53
|
bind:this={ref}
|
|
54
54
|
class={cn(
|
|
55
|
-
'flex min-w-0 flex-col rounded-(--era-rd-
|
|
55
|
+
'flex min-w-0 flex-col rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow)',
|
|
56
56
|
className
|
|
57
57
|
)}
|
|
58
58
|
{...restProps}
|
|
@@ -58,16 +58,16 @@
|
|
|
58
58
|
<!-- busy: the box PULSES rather than gaining a second glyph — "a command is
|
|
59
59
|
streaming through this VM" is motion, and motion is what says it. -->
|
|
60
60
|
<Box
|
|
61
|
-
class={cn('size-(--era-h-
|
|
61
|
+
class={cn('size-(--era-h-icon) shrink-0', sandbox.busy && 'animate-pulse')}
|
|
62
62
|
aria-hidden="true"
|
|
63
63
|
/>
|
|
64
64
|
{#if sandbox.checkpoint}
|
|
65
65
|
<!-- A paused VM kept as a restore point — the camera badge, as the
|
|
66
66
|
reference console draws it. -->
|
|
67
|
-
<Camera class="size-(--era-
|
|
67
|
+
<Camera class="size-(--era-glyph-pill) shrink-0" aria-hidden="true" />
|
|
68
68
|
{:else if forkOf}
|
|
69
69
|
<!-- Live-forked from a parent VM; the lineage is in the title. -->
|
|
70
|
-
<GitBranch class="size-(--era-
|
|
70
|
+
<GitBranch class="size-(--era-glyph-pill) shrink-0" aria-hidden="true" />
|
|
71
71
|
{/if}
|
|
72
72
|
{#if label}<span class="truncate">{sandbox.status}</span>{/if}
|
|
73
73
|
</span>
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
{...restProps}
|
|
186
186
|
>
|
|
187
187
|
{#if rows.length === 0}
|
|
188
|
-
<div class="px-(--era-inset-
|
|
188
|
+
<div class="px-(--era-inset-control) py-(--era-gap) text-body text-muted">
|
|
189
189
|
{#if empty}{@render empty()}{:else}No agents yet.{/if}
|
|
190
190
|
</div>
|
|
191
191
|
{:else}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<!-- The task log rail: items hang off a left border, terminal-trace style. -->
|
|
10
10
|
<Step.Content
|
|
11
11
|
class={cn(
|
|
12
|
-
'border-divider-faded border-s-2 bg-transparent p-0 ps-(--era-pad-
|
|
12
|
+
'border-divider-faded border-s-2 bg-transparent p-0 ps-(--era-pad-panel) shadow-none',
|
|
13
13
|
className
|
|
14
14
|
)}
|
|
15
15
|
>
|
|
@@ -47,14 +47,14 @@
|
|
|
47
47
|
data-status={status}
|
|
48
48
|
{onclick}
|
|
49
49
|
class={cn(
|
|
50
|
-
'inline-flex h-(--era-h-
|
|
50
|
+
'inline-flex h-(--era-h-pill) max-w-full min-w-0 shrink-0 era-interactive cursor-pointer items-center gap-(--era-gap) rounded-(--era-rd-pill) px-(--era-pill-px) text-body era-text-trim text-muted transition-colors duration-(--era-duration) ease-(--era-ease) hover:bg-(--era-highlight) hover:text-fg',
|
|
51
51
|
active && 'bg-fill text-fg',
|
|
52
52
|
className
|
|
53
53
|
)}
|
|
54
54
|
{...restProps}
|
|
55
55
|
>
|
|
56
56
|
<Icon
|
|
57
|
-
class={cn('size-(--era-h-
|
|
57
|
+
class={cn('size-(--era-h-icon) shrink-0', status === 'running' && 'animate-pulse')}
|
|
58
58
|
aria-hidden="true"
|
|
59
59
|
/>
|
|
60
60
|
<span class={cn('min-w-0 truncate', status === 'running' && 'era-shimmer')}>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
const failed = $derived(exitCode !== undefined && exitCode !== 0);
|
|
20
20
|
</script>
|
|
21
21
|
|
|
22
|
-
<div class="flex min-w-0 flex-col gap-(--era-pad-
|
|
22
|
+
<div class="flex min-w-0 flex-col gap-(--era-pad-panel)">
|
|
23
23
|
{#if command || failed}
|
|
24
24
|
<div class="flex min-w-0 items-center gap-(--era-gap)">
|
|
25
25
|
{#if command}
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
{#if stdout}
|
|
40
40
|
<Step.Section label="stdout">
|
|
41
41
|
<pre
|
|
42
|
-
class="min-w-0 overflow-x-auto rounded-(--era-rd-
|
|
42
|
+
class="min-w-0 overflow-x-auto rounded-(--era-rd-control) bg-(--era-field-bg) p-(--era-pad-panel) font-mono text-body whitespace-pre-wrap text-muted shadow-(--era-shadow-well)">{stdout}</pre>
|
|
43
43
|
</Step.Section>
|
|
44
44
|
{/if}
|
|
45
45
|
|
|
46
46
|
{#if stderr}
|
|
47
47
|
<Step.Section label="stderr">
|
|
48
48
|
<pre
|
|
49
|
-
class="min-w-0 overflow-x-auto rounded-(--era-rd-
|
|
49
|
+
class="min-w-0 overflow-x-auto rounded-(--era-rd-control) bg-(--era-field-bg) p-(--era-pad-panel) font-mono text-body whitespace-pre-wrap text-destructive shadow-(--era-shadow-well)">{stderr}</pre>
|
|
50
50
|
</Step.Section>
|
|
51
51
|
{/if}
|
|
52
52
|
</div>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
16
|
<Step.Summary>
|
|
17
|
-
<Wrench class="size-(--era-h-
|
|
17
|
+
<Wrench class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
|
|
18
18
|
<span class="truncate text-fg">{type}</span>
|
|
19
19
|
{@render children?.()}
|
|
20
20
|
</Step.Summary>
|
|
@@ -17,17 +17,17 @@
|
|
|
17
17
|
|
|
18
18
|
<div
|
|
19
19
|
class={cn(
|
|
20
|
-
'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-
|
|
20
|
+
'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow-lg)',
|
|
21
21
|
className
|
|
22
22
|
)}
|
|
23
23
|
>
|
|
24
24
|
<Bar size="md" class="shrink-0 gap-(--era-gap) rounded-none">
|
|
25
25
|
<Button icon size="sm" aria-label="Reload" onclick={() => (nonce += 1)}>
|
|
26
|
-
<RotateCw class="size-(--era-h-
|
|
26
|
+
<RotateCw class="size-(--era-h-icon)" />
|
|
27
27
|
</Button>
|
|
28
28
|
<Input
|
|
29
29
|
bind:value={draft}
|
|
30
|
-
class="h-(--era-h-
|
|
30
|
+
class="h-(--era-h-chip) flex-1"
|
|
31
31
|
placeholder="https://…"
|
|
32
32
|
onkeydown={(e: KeyboardEvent) => {
|
|
33
33
|
if (e.key === 'Enter') {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
<!-- Thin era skin over Svelte Flow — the graph engine is xyflow's. This file
|
|
14
14
|
lives on its own subpath so the dependency stays opt-in. -->
|
|
15
|
-
<SvelteFlow bind:nodes bind:edges fitView class="rounded-(--era-rd-
|
|
15
|
+
<SvelteFlow bind:nodes bind:edges fitView class="rounded-(--era-rd-bar) shadow-(--era-shadow)">
|
|
16
16
|
<Background bgColor="var(--color-1)" />
|
|
17
17
|
<Controls />
|
|
18
18
|
{@render children?.()}
|
|
@@ -12,18 +12,18 @@
|
|
|
12
12
|
|
|
13
13
|
<div
|
|
14
14
|
class={cn(
|
|
15
|
-
'flex w-56 flex-col overflow-hidden rounded-(--era-rd-
|
|
15
|
+
'flex w-56 flex-col overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) text-body shadow-(--era-shadow-lg)',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
18
18
|
>
|
|
19
19
|
<Handle type="target" position={Position.Left} />
|
|
20
20
|
{#if title}
|
|
21
21
|
<div
|
|
22
|
-
class="flex h-(--era-h-
|
|
22
|
+
class="flex h-(--era-h-control) items-center border-b border-divider-faded px-(--era-inset-control) font-medium text-bright"
|
|
23
23
|
>
|
|
24
24
|
{title}
|
|
25
25
|
</div>
|
|
26
26
|
{/if}
|
|
27
|
-
<div class="p-(--era-inset-
|
|
27
|
+
<div class="p-(--era-inset-control) text-fg">{@render children?.()}</div>
|
|
28
28
|
<Handle type="source" position={Position.Right} />
|
|
29
29
|
</div>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<AI.Conversations.Root>
|
|
117
117
|
{#snippet header()}
|
|
118
118
|
<Button class="w-full justify-start" onclick={() => onNewChat?.()}>
|
|
119
|
-
<Plus class="size-
|
|
119
|
+
<Plus class="size-icon" aria-hidden="true" />
|
|
120
120
|
New chat
|
|
121
121
|
</Button>
|
|
122
122
|
{/snippet}
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
<!-- Thread -->
|
|
144
144
|
<div class="flex min-w-0 flex-1 flex-col">
|
|
145
145
|
{#if runStatus !== 'idle'}
|
|
146
|
-
<div class="shrink-0 border-b border-divider px-(--era-pad-
|
|
146
|
+
<div class="shrink-0 border-b border-divider px-(--era-pad-card) py-gutter">
|
|
147
147
|
<AI.RunStatus.Root
|
|
148
148
|
status={runStatus}
|
|
149
149
|
tools={{
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
{:else}
|
|
175
175
|
<AI.Conversation.EmptyState title={emptyTitle} description={emptyDescription}>
|
|
176
176
|
{#snippet icon()}
|
|
177
|
-
<Sparkles class="size-
|
|
177
|
+
<Sparkles class="size-control text-muted" />
|
|
178
178
|
{/snippet}
|
|
179
179
|
</AI.Conversation.EmptyState>
|
|
180
180
|
{/if}
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
<AI.Conversation.ScrollButton />
|
|
188
188
|
</AI.Conversation.Root>
|
|
189
189
|
|
|
190
|
-
<div class="mx-auto w-full max-w-2xl shrink-0 p-(--era-pad-
|
|
190
|
+
<div class="mx-auto w-full max-w-2xl shrink-0 p-(--era-pad-card) pt-0">
|
|
191
191
|
{#if active && active.messages.length === 0 && suggestions.length > 0}
|
|
192
192
|
<div class="pb-(--era-gap)">
|
|
193
193
|
<AI.Suggestions.Root>
|
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
{#snippet expanded()}
|
|
266
266
|
{@const tool = block.tools.find((t) => t.id === openChip)}
|
|
267
267
|
{#if tool}
|
|
268
|
-
<Card tone="well" class="flex min-w-0 flex-col gap-(--era-pad-
|
|
268
|
+
<Card tone="well" class="flex min-w-0 flex-col gap-(--era-pad-panel) p-(--era-pad-panel)">
|
|
269
269
|
<AI.Tool.Input input={tool.input} />
|
|
270
270
|
<AI.Tool.Output output={tool.output} />
|
|
271
271
|
</Card>
|
|
@@ -314,10 +314,10 @@
|
|
|
314
314
|
{#if !block.streaming && block.text}
|
|
315
315
|
<AI.Message.Toolbar>
|
|
316
316
|
<AI.Actions.Action tooltip="Copy" onclick={() => copyText(block.text)}>
|
|
317
|
-
<Copy class="size-
|
|
317
|
+
<Copy class="size-icon" />
|
|
318
318
|
</AI.Actions.Action>
|
|
319
319
|
<AI.Actions.Action tooltip="Regenerate" onclick={() => copyText(block.text)}>
|
|
320
|
-
<RotateCcw class="size-
|
|
320
|
+
<RotateCcw class="size-icon" />
|
|
321
321
|
</AI.Actions.Action>
|
|
322
322
|
</AI.Message.Toolbar>
|
|
323
323
|
{#if block.usage}
|
|
@@ -44,16 +44,18 @@
|
|
|
44
44
|
|
|
45
45
|
<!-- Rows carry shrink-0 deliberately. This is a flex COLUMN with a capped
|
|
46
46
|
height, so without it flex compresses the children to fit rather than
|
|
47
|
-
letting the panel scroll: 12 items in an 8-row box rendered every h-
|
|
47
|
+
letting the panel scroll: 12 items in an 8-row box rendered every h-control row
|
|
48
48
|
at 16px against 14px text, which read as a menu with no padding at all.
|
|
49
49
|
overflow-y-auto never engaged, because the content had already been
|
|
50
50
|
squashed to fit. -->
|
|
51
51
|
<div
|
|
52
52
|
bind:this={list}
|
|
53
|
-
class="scrollbar-none flex max-h-[calc(var(--era-h-
|
|
53
|
+
class="scrollbar-none flex max-h-[calc(var(--era-h-control)*8)] w-max min-w-48 flex-col overflow-y-auto rounded-control bg-elevated p-menu shadow-lg glass-blur"
|
|
54
54
|
>
|
|
55
55
|
{#if items.length === 0}
|
|
56
|
-
<div
|
|
56
|
+
<div
|
|
57
|
+
class="flex h-control shrink-0 items-center px-inset-control text-body era-text-trim text-muted"
|
|
58
|
+
>
|
|
57
59
|
No commands
|
|
58
60
|
</div>
|
|
59
61
|
{:else}
|
|
@@ -61,7 +63,7 @@
|
|
|
61
63
|
{@const Icon = item.icon}
|
|
62
64
|
<button
|
|
63
65
|
type="button"
|
|
64
|
-
class="flex h-
|
|
66
|
+
class="flex h-control w-full shrink-0 cursor-pointer items-center gap-gutter rounded-menu-item px-inset-control text-left text-body era-text-trim text-fg {i ===
|
|
65
67
|
selected
|
|
66
68
|
? 'bg-highlight shadow-highlight'
|
|
67
69
|
: ''}"
|
|
@@ -73,7 +75,7 @@
|
|
|
73
75
|
onSelect(i);
|
|
74
76
|
}}
|
|
75
77
|
>
|
|
76
|
-
<Icon class="size-
|
|
78
|
+
<Icon class="size-icon shrink-0" />
|
|
77
79
|
<span class="flex-1">{item.title}</span>
|
|
78
80
|
<span class="shrink-0 text-muted">{item.description}</span>
|
|
79
81
|
</button>
|
|
@@ -295,7 +295,7 @@
|
|
|
295
295
|
{#if store.loading}
|
|
296
296
|
<div class="flex flex-col gap-gutter p-gutter">
|
|
297
297
|
{#each Array.from({ length: 5 }, (_, i) => i) as i (i)}
|
|
298
|
-
<Skeleton class="h-
|
|
298
|
+
<Skeleton class="h-control rounded-control" />
|
|
299
299
|
{/each}
|
|
300
300
|
</div>
|
|
301
301
|
{:else if visible.length === 0}
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
role="option" child of the listbox. A wrapper element there
|
|
323
323
|
would put a non-option between them and break the relationship
|
|
324
324
|
screen readers rely on.
|
|
325
|
-
rounded-
|
|
325
|
+
rounded-control, not rounded-menu-item: item-rd is the radius for a row
|
|
326
326
|
inside a PANEL (it subtracts the panel's frame inset). A list
|
|
327
327
|
row on a plain surface takes its own tier radius — the
|
|
328
328
|
conversations-rail pattern. -->
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
{#snippet child({ props })}
|
|
332
332
|
<div
|
|
333
333
|
{...props}
|
|
334
|
-
class="group/row flex h-
|
|
334
|
+
class="group/row flex h-control cursor-pointer items-center gap-(--era-pill-inset-control) rounded-control px-(--era-pill-inset-control) era-text-trim {current
|
|
335
335
|
? 'bg-hover text-bright shadow-(--era-shadow-pressed)'
|
|
336
336
|
: 'hover:bg-highlight hover:shadow-highlight'}"
|
|
337
337
|
role="option"
|
|
@@ -347,11 +347,11 @@
|
|
|
347
347
|
onRowKeydown(e);
|
|
348
348
|
}}
|
|
349
349
|
>
|
|
350
|
-
<span class="flex size-
|
|
350
|
+
<span class="flex size-pill shrink-0 items-center justify-center">
|
|
351
351
|
{#if note.icon}
|
|
352
352
|
{note.icon}
|
|
353
353
|
{:else}
|
|
354
|
-
<FileText class="size-(--era-
|
|
354
|
+
<FileText class="size-(--era-glyph-pill) text-muted" />
|
|
355
355
|
{/if}
|
|
356
356
|
</span>
|
|
357
357
|
|
|
@@ -370,7 +370,7 @@
|
|
|
370
370
|
{formatAge(note.updatedAt)}
|
|
371
371
|
</span>
|
|
372
372
|
<span
|
|
373
|
-
class="hidden shrink-0 items-center gap-(--era-
|
|
373
|
+
class="hidden shrink-0 items-center gap-(--era-pill-inset-control) group-hover/row:flex"
|
|
374
374
|
>
|
|
375
375
|
<Button
|
|
376
376
|
icon
|
|
@@ -405,10 +405,10 @@
|
|
|
405
405
|
<ContextMenu.Content>
|
|
406
406
|
<ContextMenu.Item onSelect={() => store.togglePin(note.id)}>
|
|
407
407
|
{#if note.pinned}
|
|
408
|
-
<PinOff class="size-
|
|
408
|
+
<PinOff class="size-icon text-muted" />
|
|
409
409
|
Unpin note
|
|
410
410
|
{:else}
|
|
411
|
-
<Pin class="size-
|
|
411
|
+
<Pin class="size-icon text-muted" />
|
|
412
412
|
Pin note
|
|
413
413
|
{/if}
|
|
414
414
|
</ContextMenu.Item>
|
|
@@ -419,7 +419,7 @@
|
|
|
419
419
|
uses, not a direct delete: a destructive action should not
|
|
420
420
|
get easier to reach by arriving from a different gesture. -->
|
|
421
421
|
<ContextMenu.Item onSelect={() => (pendingDelete = note.id)}>
|
|
422
|
-
<Trash2 class="size-
|
|
422
|
+
<Trash2 class="size-icon text-destructive" />
|
|
423
423
|
Delete note
|
|
424
424
|
</ContextMenu.Item>
|
|
425
425
|
</ContextMenu.Content>
|
|
@@ -80,7 +80,7 @@ export function tokenPx(el, name) {
|
|
|
80
80
|
}
|
|
81
81
|
/** The five tier heights, in px, in the element's density context. */
|
|
82
82
|
export function tiers(el) {
|
|
83
|
-
return ['--era-h-
|
|
83
|
+
return ['--era-h-icon', '--era-h-pill', '--era-h-chip', '--era-h-control', '--era-h-bar'].map((name) => ({
|
|
84
84
|
name,
|
|
85
85
|
px: tokenPx(el, name)
|
|
86
86
|
}));
|
|
@@ -12,7 +12,7 @@ import { BOUNDED_TIER_MAX } from '../../measure.js';
|
|
|
12
12
|
*
|
|
13
13
|
* That blind spot shipped: the Switch thumb rested one border-width too far
|
|
14
14
|
* right at BOTH ends, so the gap at the left end and at the right end differed
|
|
15
|
-
* by 2px (dense 5 vs 3, touch 9 vs 7). --era-
|
|
15
|
+
* by 2px (dense 5 vs 3, touch 9 vs 7). --era-icon-inset-chip is measured from the
|
|
16
16
|
* track's OUTER edge, but a translate-x starts from the CONTENT box inside the
|
|
17
17
|
* 1px border, so offsetting by the raw token added the border on one side and
|
|
18
18
|
* subtracted it on the other. Vertically it was always right, because
|
|
@@ -5,8 +5,8 @@ import { BOUNDED_TIER_MAX } from '../../measure.js';
|
|
|
5
5
|
*
|
|
6
6
|
* Rule 5: every element that can hold a single glyph carries a min-width equal to
|
|
7
7
|
* its tier height, so one character renders as a perfect square (or circle, once
|
|
8
|
-
* rounded) instead of a skinny vertical pill. Icon buttons take min-w-(--era-h-
|
|
9
|
-
* Badge, Chip and the KV value cell take min-w-(--era-h-
|
|
8
|
+
* rounded) instead of a skinny vertical pill. Icon buttons take min-w-(--era-h-control);
|
|
9
|
+
* Badge, Chip and the KV value cell take min-w-(--era-h-pill).
|
|
10
10
|
*
|
|
11
11
|
* Drop the min-width and nothing looks wrong until content happens to BE one
|
|
12
12
|
* character — a badge showing "1", a count that ticks from 10 down to 9 — and the
|
|
@@ -59,10 +59,10 @@
|
|
|
59
59
|
|
|
60
60
|
{#if dev && open}
|
|
61
61
|
<div
|
|
62
|
-
class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-
|
|
62
|
+
class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-control) bg-surface font-mono text-body shadow-[inset_0_0_0_0.5px_var(--color-border),var(--era-shadow)]"
|
|
63
63
|
>
|
|
64
64
|
<header
|
|
65
|
-
class="flex items-center gap-(--era-
|
|
65
|
+
class="flex items-center gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) shadow-[inset_0_-0.5px_0_0_var(--color-border)]"
|
|
66
66
|
>
|
|
67
67
|
<strong class="text-bright">audits</strong>
|
|
68
68
|
<span class="text-muted">
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
{@const enabled = registry.isEnabled(r.audit.id)}
|
|
82
82
|
<details open={r.issues.length > 0}>
|
|
83
83
|
<summary
|
|
84
|
-
class="flex cursor-pointer items-center gap-(--era-
|
|
84
|
+
class="flex cursor-pointer items-center gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) hover:bg-(--era-highlight)"
|
|
85
85
|
>
|
|
86
86
|
<input
|
|
87
87
|
type="checkbox"
|
|
@@ -95,13 +95,13 @@
|
|
|
95
95
|
</span>
|
|
96
96
|
</summary>
|
|
97
97
|
{#if r.issues.length === 0}
|
|
98
|
-
<p class="px-(--era-inset-
|
|
98
|
+
<p class="px-(--era-inset-chip) py-(--era-gap) text-muted">
|
|
99
99
|
{r.audit.description}
|
|
100
100
|
</p>
|
|
101
101
|
{:else}
|
|
102
102
|
{#each r.issues as issue, i (i)}
|
|
103
103
|
<button
|
|
104
|
-
class="flex w-full items-start gap-(--era-
|
|
104
|
+
class="flex w-full items-start gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) text-left hover:bg-(--era-highlight)"
|
|
105
105
|
onclick={() => highlight(issue.element)}
|
|
106
106
|
>
|
|
107
107
|
<span class="text-destructive">●</span>
|
|
@@ -114,9 +114,9 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
116
|
<footer
|
|
117
|
-
class="flex items-center gap-(--era-gap) px-(--era-inset-
|
|
117
|
+
class="flex items-center gap-(--era-gap) px-(--era-inset-chip) py-(--era-gap) text-muted shadow-[inset_0_0.5px_0_0_var(--color-border)]"
|
|
118
118
|
>
|
|
119
|
-
<kbd class="rounded-(--era-rd-
|
|
119
|
+
<kbd class="rounded-(--era-rd-icon) bg-hover px-(--era-inset-chip) text-fg">
|
|
120
120
|
{isMac ? '⌘' : 'ctrl'}⇧{key.toUpperCase()}
|
|
121
121
|
</kbd>
|
|
122
122
|
<span>toggle</span>
|
package/dist/dev/measure.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare const TOL = 0.5;
|
|
|
13
13
|
* that false positive: a Card reported "radius step 5 ≠ implied gap 32.5"
|
|
14
14
|
* because its 57px optical padding was read as if it were a tier inset.
|
|
15
15
|
*
|
|
16
|
-
* The tallest tier is --era-h-
|
|
16
|
+
* The tallest tier is --era-h-bar, which peaks at 64px on touch.
|
|
17
17
|
*/
|
|
18
18
|
export declare const BOUNDED_TIER_MAX = 64;
|
|
19
19
|
/**
|
package/dist/dev/measure.js
CHANGED
|
@@ -34,7 +34,7 @@ export const TOL = 0.5;
|
|
|
34
34
|
* that false positive: a Card reported "radius step 5 ≠ implied gap 32.5"
|
|
35
35
|
* because its 57px optical padding was read as if it were a tier inset.
|
|
36
36
|
*
|
|
37
|
-
* The tallest tier is --era-h-
|
|
37
|
+
* The tallest tier is --era-h-bar, which peaks at 64px on touch.
|
|
38
38
|
*/
|
|
39
39
|
export const BOUNDED_TIER_MAX = 64;
|
|
40
40
|
/**
|
package/dist/docs/badge.md
CHANGED
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
|
|
16
16
|
- Non-interactive. For dismissible tokens use `Chip`. For labelled pairs use `KV`.
|
|
17
17
|
- Uses the `xxs` tier tokens (height, radius, inset).
|
|
18
|
-
- Inter-icon gap tightens to `--era-inset-
|
|
18
|
+
- Inter-icon gap tightens to `--era-inset-pill` when an SVG is present.
|
|
@@ -3,7 +3,7 @@ export interface CssUtility {
|
|
|
3
3
|
name: string;
|
|
4
4
|
/**
|
|
5
5
|
* Every class the doc comment governs. Usually one; a scale documented as a
|
|
6
|
-
* run of consecutive `@utility` blocks under a single comment (h-
|
|
6
|
+
* run of consecutive `@utility` blocks under a single comment (h-icon … h-bar)
|
|
7
7
|
* lists the whole ladder.
|
|
8
8
|
*/
|
|
9
9
|
names: string[];
|