@signal9/era-ui 7.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/note-editor.svelte +7 -364
- package/dist/apps/notes/note-editor.svelte.d.ts +1 -0
- 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 +100 -120
- package/dist/generated-docs/llms.txt +12 -13
- 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 +384 -0
- 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 +2 -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>
|