@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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<!-- size="xxs", the close-affordance tier (Pane.Close, the chip dismiss): an
|
|
8
8
|
18px hit target whose tier draws the 12px dismiss ink by itself. The <X>
|
|
9
|
-
used to carry size-(--era-h-
|
|
9
|
+
used to carry size-(--era-h-icon) — a class the Button variant's [&_svg]
|
|
10
10
|
selector outranks, so it claimed 14px while 10 shipped. -->
|
|
11
11
|
<Button icon size="xxs" aria-label="Close" {onclick}>
|
|
12
12
|
<X />
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
let { children, class: className }: { children?: Snippet; class?: string } = $props();
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
<div class={cn('min-h-0 flex-1 overflow-auto p-(--era-pad-
|
|
7
|
+
<div class={cn('min-h-0 flex-1 overflow-auto p-(--era-pad-card)', className)}>
|
|
8
8
|
{@render children?.()}
|
|
9
9
|
</div>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
<div
|
|
13
13
|
class={cn(
|
|
14
|
-
'flex h-(--era-h-
|
|
14
|
+
'flex h-(--era-h-bar) shrink-0 items-center justify-between gap-(--era-gap) border-b border-divider-faded px-(--era-pad-panel)',
|
|
15
15
|
className
|
|
16
16
|
)}
|
|
17
17
|
{...restProps}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
<div
|
|
13
13
|
class={cn(
|
|
14
|
-
'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-
|
|
14
|
+
'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow-lg)',
|
|
15
15
|
className
|
|
16
16
|
)}
|
|
17
17
|
{...restProps}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
<Step.Root status={streaming ? 'running' : 'done'} bind:open class={cn(className)}>
|
|
23
23
|
<Step.Summary>
|
|
24
|
-
<Brain class="size-(--era-h-
|
|
24
|
+
<Brain class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
|
|
25
25
|
{label}
|
|
26
26
|
</Step.Summary>
|
|
27
27
|
<Step.Content class="bg-transparent p-0 shadow-none">
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
21
|
<div class={cn('flex w-full items-center gap-(--era-gap) text-muted', className)}>
|
|
22
|
-
<Bookmark class="size-(--era-h-
|
|
22
|
+
<Bookmark class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
|
|
23
23
|
<Button variant="link" size="sm" onclick={onRestore}>
|
|
24
24
|
{#if children}{@render children()}{:else}{label}{/if}
|
|
25
25
|
</Button>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div
|
|
26
26
|
class={cn(
|
|
27
27
|
'flex min-w-0 flex-col gap-(--era-gap)',
|
|
28
|
-
ctrl.isDirty(key) && 'border-warning border-s-2 ps-(--era-pad-
|
|
28
|
+
ctrl.isDirty(key) && 'border-warning border-s-2 ps-(--era-pad-panel)'
|
|
29
29
|
)}
|
|
30
30
|
>
|
|
31
31
|
<span class="text-[0.625rem] leading-none tracking-[0.15em] text-muted uppercase"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}}
|
|
47
47
|
spellcheck={false}
|
|
48
48
|
class={cn(
|
|
49
|
-
'min-h-(--era-h-
|
|
49
|
+
'min-h-(--era-h-bar) font-mono text-body',
|
|
50
50
|
!ctrl.isValid(key) && 'border border-destructive'
|
|
51
51
|
)}
|
|
52
52
|
/>
|
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
|
|
20
20
|
<div
|
|
21
21
|
class={cn(
|
|
22
|
-
'flex min-w-0 flex-col gap-(--era-gap) rounded-(--era-rd-
|
|
22
|
+
'flex min-w-0 flex-col gap-(--era-gap) rounded-(--era-rd-bar) bg-(--era-surface-bg) p-(--era-pad-panel) shadow-(--era-shadow)',
|
|
23
23
|
className
|
|
24
24
|
)}
|
|
25
25
|
>
|
|
26
26
|
<div class="flex items-center gap-(--era-gap) text-body">
|
|
27
27
|
{#if approval === 'requested'}
|
|
28
|
-
<ShieldQuestion class="size-(--era-h-
|
|
28
|
+
<ShieldQuestion class="size-(--era-h-icon) shrink-0 text-warning" aria-hidden="true" />
|
|
29
29
|
{:else if approval === 'approved'}
|
|
30
|
-
<CircleCheck class="size-(--era-h-
|
|
30
|
+
<CircleCheck class="size-(--era-h-icon) shrink-0 text-success" aria-hidden="true" />
|
|
31
31
|
{:else}
|
|
32
|
-
<CircleX class="size-(--era-h-
|
|
32
|
+
<CircleX class="size-(--era-h-icon) shrink-0 text-destructive" aria-hidden="true" />
|
|
33
33
|
{/if}
|
|
34
34
|
<div class="min-w-0 flex-1 text-fg">{@render children?.()}</div>
|
|
35
35
|
</div>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<Popover.Root>
|
|
26
26
|
<Popover.Trigger size="sm" class={cn('gap-(--era-gap) tabular-nums', className)}>
|
|
27
27
|
{Math.round(percent * 100)}%
|
|
28
|
-
<svg viewBox="0 0 24 24" class="size-(--era-h-
|
|
28
|
+
<svg viewBox="0 0 24 24" class="size-(--era-h-icon) -rotate-90" aria-hidden="true">
|
|
29
29
|
<circle cx="12" cy="12" r="10" fill="none" stroke="var(--color-3)" stroke-width="3" />
|
|
30
30
|
<circle
|
|
31
31
|
cx="12"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
<div
|
|
22
22
|
class={cn(
|
|
23
|
-
'flex flex-1 flex-col items-center justify-center gap-(--era-gap) p-(--era-pad-
|
|
23
|
+
'flex flex-1 flex-col items-center justify-center gap-(--era-gap) p-(--era-pad-content) text-center',
|
|
24
24
|
className
|
|
25
25
|
)}
|
|
26
26
|
{...restProps}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
{#if !stick.pinned}
|
|
13
13
|
<div
|
|
14
|
-
class={cn('absolute bottom-(--era-pad-
|
|
14
|
+
class={cn('absolute bottom-(--era-pad-panel) left-1/2 z-10 -translate-x-1/2', className)}
|
|
15
15
|
transition:eraFly={{ y: 8 }}
|
|
16
16
|
>
|
|
17
17
|
<Button
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
class="rounded-full shadow-(--era-shadow-lg)"
|
|
22
22
|
onclick={() => stick.repin()}
|
|
23
23
|
>
|
|
24
|
-
<ArrowDown class="size-(--era-h-
|
|
24
|
+
<ArrowDown class="size-(--era-h-icon)" />
|
|
25
25
|
</Button>
|
|
26
26
|
</div>
|
|
27
27
|
{/if}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<div class={cn('flex min-w-0 flex-col gap-(--era-gap)', className)} {...restProps}>
|
|
20
20
|
{#if label}
|
|
21
21
|
<span
|
|
22
|
-
class="px-(--era-inset-
|
|
22
|
+
class="px-(--era-inset-control) text-[0.625rem] era-text-trim-caps leading-none tracking-[0.15em] text-muted uppercase"
|
|
23
23
|
>
|
|
24
24
|
{label}
|
|
25
25
|
</span>
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
<div
|
|
130
130
|
data-active={active || undefined}
|
|
131
131
|
class={cn(
|
|
132
|
-
// The trailing buttons are xxs-tier icon buttons: h-
|
|
132
|
+
// The trailing buttons are xxs-tier icon buttons: h-pill box + h-icon glyph =
|
|
133
133
|
// 2px of air around the glyph (xs/icon would hug it flush — density.css:
|
|
134
134
|
// "xs IS the icon tier"). pr is their concentric inset: a button's rounded
|
|
135
135
|
// box nests in the row's rd-md corner only when its right gap equals
|
|
@@ -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 h-(--era-h-
|
|
147
|
+
'group/row relative flex h-(--era-h-control) items-center gap-(--era-gap) rounded-(--era-rd-control) pr-(--era-pill-inset-control) pl-(--era-inset-control) text-body',
|
|
148
148
|
active
|
|
149
149
|
? 'bg-hover text-bright'
|
|
150
150
|
: 'text-fg hover:bg-(--era-highlight) hover:shadow-(--era-highlight-shadow) has-[[data-rail]:hover]:bg-transparent has-[[data-rail]:hover]:shadow-none',
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
{#if leading}
|
|
158
158
|
{@render leading()}
|
|
159
159
|
{:else}
|
|
160
|
-
<MessageSquare class="size-(--era-h-
|
|
160
|
+
<MessageSquare class="size-(--era-h-icon) shrink-0 text-muted" aria-hidden="true" />
|
|
161
161
|
{/if}
|
|
162
162
|
|
|
163
163
|
{#if status}
|
|
@@ -208,12 +208,12 @@
|
|
|
208
208
|
aria-pressed={starred}
|
|
209
209
|
onclick={toggleStar}
|
|
210
210
|
>
|
|
211
|
-
<Star class={cn('size-(--era-h-
|
|
211
|
+
<Star class={cn('size-(--era-h-icon)', starred && 'fill-warning text-warning')} />
|
|
212
212
|
</Button>
|
|
213
213
|
|
|
214
214
|
{#if showCancel}
|
|
215
215
|
<Button icon size="xxs" aria-label="Cancel generation" onclick={() => onCancel?.()}>
|
|
216
|
-
<X class="size-(--era-h-
|
|
216
|
+
<X class="size-(--era-h-icon)" />
|
|
217
217
|
</Button>
|
|
218
218
|
{/if}
|
|
219
219
|
|
|
@@ -226,9 +226,9 @@
|
|
|
226
226
|
onclick={onDeleteClick}
|
|
227
227
|
>
|
|
228
228
|
{#if armed}
|
|
229
|
-
<Check class="size-(--era-h-
|
|
229
|
+
<Check class="size-(--era-h-icon)" />
|
|
230
230
|
{:else}
|
|
231
|
-
<Trash2 class="size-(--era-h-
|
|
231
|
+
<Trash2 class="size-(--era-h-icon)" />
|
|
232
232
|
{/if}
|
|
233
233
|
</Button>
|
|
234
234
|
</div>
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
|
|
55
55
|
{#snippet head()}
|
|
56
56
|
{#if info.tone === 'warning'}
|
|
57
|
-
<TriangleAlert class="size-(--era-h-
|
|
57
|
+
<TriangleAlert class="size-(--era-h-icon) shrink-0 text-warning" aria-hidden="true" />
|
|
58
58
|
{:else}
|
|
59
|
-
<CircleX class="size-(--era-h-
|
|
59
|
+
<CircleX class="size-(--era-h-icon) shrink-0 text-destructive" aria-hidden="true" />
|
|
60
60
|
{/if}
|
|
61
61
|
<span class="min-w-0 flex-1 truncate text-fg">{summary}</span>
|
|
62
62
|
{/snippet}
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
bind:open
|
|
66
66
|
data-tone={info.tone}
|
|
67
67
|
class={cn(
|
|
68
|
-
'group/error flex min-w-0 flex-col gap-(--era-gap) rounded-(--era-rd-
|
|
68
|
+
'group/error flex min-w-0 flex-col gap-(--era-gap) rounded-(--era-rd-bar) bg-(--era-surface-bg) p-(--era-pad-panel) shadow-(--era-shadow)',
|
|
69
69
|
className
|
|
70
70
|
)}
|
|
71
71
|
{...restProps}
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
>
|
|
78
78
|
{@render head()}
|
|
79
79
|
<ChevronDown
|
|
80
|
-
class="size-(--era-h-
|
|
80
|
+
class="size-(--era-h-icon) shrink-0 transition-transform duration-(--era-duration) ease-(--era-ease) group-data-[state=open]/error:rotate-180"
|
|
81
81
|
aria-hidden="true"
|
|
82
82
|
/>
|
|
83
83
|
</Collapsible.Trigger>
|
package/dist/ai/image.svelte
CHANGED
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
aria-label="Previous source"
|
|
52
52
|
onclick={() => (index = (index - 1 + sources.length) % sources.length)}
|
|
53
53
|
>
|
|
54
|
-
<ChevronLeft class="size-(--era-h-
|
|
54
|
+
<ChevronLeft class="size-(--era-h-icon)" />
|
|
55
55
|
</Button>
|
|
56
56
|
<Button
|
|
57
57
|
icon
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
aria-label="Next source"
|
|
60
60
|
onclick={() => (index = (index + 1) % sources.length)}
|
|
61
61
|
>
|
|
62
|
-
<ChevronRight class="size-(--era-h-
|
|
62
|
+
<ChevronRight class="size-(--era-h-icon)" />
|
|
63
63
|
</Button>
|
|
64
64
|
</div>
|
|
65
65
|
</div>
|
package/dist/ai/loader.svelte
CHANGED
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
{#if ctrl.total > 1}
|
|
14
14
|
<ButtonGroup class={cn(className)}>
|
|
15
15
|
<Button icon size="sm" aria-label="Previous version" onclick={() => ctrl.previous()}>
|
|
16
|
-
<ChevronLeft class="size-(--era-h-
|
|
16
|
+
<ChevronLeft class="size-(--era-h-icon)" />
|
|
17
17
|
</Button>
|
|
18
|
-
<span class="flex items-center px-(--era-inset-
|
|
18
|
+
<span class="flex items-center px-(--era-inset-chip) text-body text-muted tabular-nums">
|
|
19
19
|
{ctrl.current + 1} of {ctrl.total}
|
|
20
20
|
</span>
|
|
21
21
|
<Button icon size="sm" aria-label="Next version" onclick={() => ctrl.next()}>
|
|
22
|
-
<ChevronRight class="size-(--era-h-
|
|
22
|
+
<ChevronRight class="size-(--era-h-icon)" />
|
|
23
23
|
</Button>
|
|
24
24
|
</ButtonGroup>
|
|
25
25
|
{/if}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<div
|
|
18
18
|
class={cn(
|
|
19
19
|
'min-w-0 text-body leading-body text-fg',
|
|
20
|
-
'group-data-[role=user]/message:max-w-[80%] group-data-[role=user]/message:rounded-(--era-rd-
|
|
20
|
+
'group-data-[role=user]/message:max-w-[80%] group-data-[role=user]/message:rounded-(--era-rd-control) group-data-[role=user]/message:bg-(--era-surface-bg-elevated) group-data-[role=user]/message:p-(--era-pad-panel) group-data-[role=user]/message:whitespace-pre-wrap group-data-[role=user]/message:shadow-(--era-shadow)',
|
|
21
21
|
className
|
|
22
22
|
)}
|
|
23
23
|
{...restProps}
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
|
|
85
85
|
<div
|
|
86
86
|
class={cn(
|
|
87
|
-
'flex items-center gap-(--era-inset-
|
|
87
|
+
'flex items-center gap-(--era-inset-chip) font-mono text-body era-text-trim text-muted tabular-nums',
|
|
88
88
|
className
|
|
89
89
|
)}
|
|
90
90
|
{...restProps}
|
|
@@ -103,14 +103,14 @@
|
|
|
103
103
|
class="inline-flex items-center text-muted transition-colors duration-(--era-duration) ease-(--era-ease) hover:text-fg"
|
|
104
104
|
aria-label="Context window breakdown"
|
|
105
105
|
>
|
|
106
|
-
<Info class="size-(--era-h-
|
|
106
|
+
<Info class="size-(--era-h-icon)" aria-hidden="true" />
|
|
107
107
|
</Tooltip.Trigger>
|
|
108
108
|
<Tooltip.Content
|
|
109
|
-
class="h-auto flex-col items-start gap-(--era-inset-
|
|
109
|
+
class="h-auto flex-col items-start gap-(--era-inset-pill) py-(--era-inset-pill) whitespace-normal"
|
|
110
110
|
>
|
|
111
111
|
{#each rows as [label, value] (label)}
|
|
112
112
|
<span
|
|
113
|
-
class="flex w-full items-center justify-between gap-(--era-inset-
|
|
113
|
+
class="flex w-full items-center justify-between gap-(--era-inset-control) tabular-nums"
|
|
114
114
|
>
|
|
115
115
|
<span class="text-muted">{label}</span>
|
|
116
116
|
<span>{formatTokens(value)}</span>
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
<DropdownMenu.Root>
|
|
39
39
|
<DropdownMenu.Trigger class={cn(className)}>
|
|
40
40
|
Open in chat
|
|
41
|
-
<ChevronDown class="size-(--era-h-
|
|
41
|
+
<ChevronDown class="size-(--era-h-icon)" />
|
|
42
42
|
</DropdownMenu.Trigger>
|
|
43
43
|
<DropdownMenu.Content align="start">
|
|
44
44
|
{#each include as id (id)}
|
|
45
45
|
<DropdownMenu.Item
|
|
46
46
|
onSelect={() => window.open(providers[id].url(query), '_blank', 'noreferrer')}
|
|
47
47
|
>
|
|
48
|
-
<ExternalLink class="size-(--era-h-
|
|
48
|
+
<ExternalLink class="size-(--era-h-icon) text-muted" />
|
|
49
49
|
{providers[id].title}
|
|
50
50
|
</DropdownMenu.Item>
|
|
51
51
|
{/each}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<Collapsible.Content
|
|
10
|
-
class={cn('flex flex-col gap-(--era-gap) overflow-hidden p-(--era-inset-
|
|
10
|
+
class={cn('flex flex-col gap-(--era-gap) overflow-hidden p-(--era-inset-control)', className)}
|
|
11
11
|
>
|
|
12
12
|
{@render children?.()}
|
|
13
13
|
</Collapsible.Content>
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
<Collapsible.Trigger
|
|
15
15
|
class={cn(
|
|
16
|
-
'flex h-(--era-h-
|
|
16
|
+
'flex h-(--era-h-control) w-full era-interactive cursor-pointer items-center gap-(--era-gap) rounded-(--era-rd-control) px-(--era-inset-control) text-body text-bright hover:bg-(--era-highlight)',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
>
|
|
20
20
|
{#if children}{@render children()}{:else}<span class="truncate font-medium">{title}</span>{/if}
|
|
21
|
-
<ChevronsUpDown class="ml-auto size-(--era-h-
|
|
21
|
+
<ChevronsUpDown class="ml-auto size-(--era-h-icon) shrink-0 text-muted" />
|
|
22
22
|
</Collapsible.Trigger>
|
package/dist/ai/plan/plan.svelte
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
bind:open
|
|
16
16
|
data-streaming={streaming || undefined}
|
|
17
17
|
class={cn(
|
|
18
|
-
'group/plan flex flex-col rounded-(--era-rd-
|
|
18
|
+
'group/plan flex flex-col rounded-(--era-rd-bar) bg-(--era-surface-bg) p-(--era-pad-panel) shadow-(--era-shadow)',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
>
|
|
@@ -16,15 +16,15 @@
|
|
|
16
16
|
<img
|
|
17
17
|
src={a.previewUrl}
|
|
18
18
|
alt={a.filename}
|
|
19
|
-
class="size-(--era-h-
|
|
19
|
+
class="size-(--era-h-bar) rounded-(--era-rd-bar) object-cover shadow-(--era-shadow)"
|
|
20
20
|
/>
|
|
21
21
|
{:else}
|
|
22
22
|
<!-- md control geometry, like a Button with an icon: wall inset and
|
|
23
|
-
icon gap both --era-inset-
|
|
23
|
+
icon gap both --era-inset-control, ink centered by era-text-trim. -->
|
|
24
24
|
<div
|
|
25
|
-
class="flex h-(--era-h-
|
|
25
|
+
class="flex h-(--era-h-control) items-center gap-(--era-inset-control) rounded-(--era-rd-control) bg-(--era-surface-bg) px-(--era-inset-control) text-body era-text-trim text-muted shadow-(--era-shadow)"
|
|
26
26
|
>
|
|
27
|
-
<Paperclip class="size-(--era-h-
|
|
27
|
+
<Paperclip class="size-(--era-h-icon) shrink-0" />
|
|
28
28
|
<span class="max-w-32 truncate">{a.filename}</span>
|
|
29
29
|
</div>
|
|
30
30
|
{/if}
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
icon
|
|
37
37
|
size="icon"
|
|
38
38
|
aria-label="Remove {a.filename}"
|
|
39
|
-
class="absolute -top-(--era-gap) -right-(--era-gap) opacity-0 shadow-(--era-shadow) group-hover/att:opacity-100 focus-visible:opacity-100 [&_svg]:size-(--era-
|
|
39
|
+
class="absolute -top-(--era-gap) -right-(--era-gap) opacity-0 shadow-(--era-shadow) group-hover/att:opacity-100 focus-visible:opacity-100 [&_svg]:size-(--era-glyph-pill)"
|
|
40
40
|
onclick={() => attachments.remove(a.id)}
|
|
41
41
|
>
|
|
42
42
|
<X />
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
}}
|
|
41
41
|
>
|
|
42
42
|
{#if status === 'submitted'}
|
|
43
|
-
<LoaderCircle class="size-(--era-h-
|
|
43
|
+
<LoaderCircle class="size-(--era-h-icon) animate-spin" />
|
|
44
44
|
{:else if status === 'streaming'}
|
|
45
|
-
<Square class="size-[calc(var(--era-h-
|
|
45
|
+
<Square class="size-[calc(var(--era-h-icon)*0.75)]" fill="currentColor" />
|
|
46
46
|
{:else}
|
|
47
|
-
<ArrowUp class="size-(--era-h-
|
|
47
|
+
<ArrowUp class="size-(--era-h-icon)" />
|
|
48
48
|
{/if}
|
|
49
49
|
</Button>
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
(only the submit path is gated).
|
|
41
41
|
|
|
42
42
|
Geometry: the single-line state must measure exactly like an md control
|
|
43
|
-
(Input = h-
|
|
43
|
+
(Input = h-control, px-(--era-inset-control), text-body, text-fg) so the toolbar
|
|
44
44
|
row of md buttons beside it sits on ONE tier with even gaps. Padding
|
|
45
45
|
does the vertical centering here (a textarea can't flex-center), so
|
|
46
|
-
py = (h-
|
|
46
|
+
py = (h-control − 1lh)/2 — exact at every density and any leading. Input's
|
|
47
47
|
era-text-trim doesn't apply: it trims the very line box this padding is
|
|
48
48
|
derived from and would top-anchor the text against min-h. -->
|
|
49
49
|
<textarea
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
onkeydown={onKeydown}
|
|
59
59
|
onpaste={onPaste}
|
|
60
60
|
class={cn(
|
|
61
|
-
'field-sizing-content max-h-48 min-h-(--era-h-
|
|
61
|
+
'field-sizing-content max-h-48 min-h-(--era-h-control) w-full resize-none bg-transparent px-(--era-inset-control) py-[calc((var(--era-h-control)-1lh)/2)] text-body leading-body text-fg outline-none placeholder:text-muted',
|
|
62
62
|
className
|
|
63
63
|
)}
|
|
64
64
|
{...restProps}></textarea>
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
// base fill while a button inside is hovered, so the highlight lands on the
|
|
91
91
|
// button, not the bar. (General rule for any highlighting container with
|
|
92
92
|
// interactive children.)
|
|
93
|
-
'flex w-full era-interactive flex-col rounded-(--era-rd-
|
|
93
|
+
'flex w-full era-interactive flex-col rounded-(--era-rd-bar) bg-(--era-field-bg) p-(--era-gap) text-body text-fg shadow-(--era-shadow-well) focus-within:bg-(--era-field-highlight) hover:bg-(--era-field-highlight) has-[button:hover]:bg-(--era-field-bg)',
|
|
94
94
|
className
|
|
95
95
|
)}
|
|
96
96
|
{...restProps}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
<li
|
|
13
13
|
class={cn(
|
|
14
|
-
'flex min-w-0 items-center gap-(--era-gap) rounded-(--era-rd-
|
|
14
|
+
'flex min-w-0 items-center gap-(--era-gap) rounded-(--era-rd-control) px-(--era-inset-control) py-(--era-gap) text-body hover:bg-(--era-highlight)',
|
|
15
15
|
completed ? 'text-muted line-through' : 'text-fg',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<ul
|
|
8
8
|
class={cn(
|
|
9
|
-
'flex max-h-48 flex-col gap-(--era-gap) overflow-y-auto rounded-(--era-rd-
|
|
9
|
+
'flex max-h-48 flex-col gap-(--era-gap) overflow-y-auto rounded-(--era-rd-bar) bg-(--era-surface-bg) p-(--era-pad-panel) shadow-(--era-shadow)',
|
|
10
10
|
className
|
|
11
11
|
)}
|
|
12
12
|
>
|
|
@@ -72,13 +72,13 @@
|
|
|
72
72
|
}
|
|
73
73
|
.era-response :global(blockquote) {
|
|
74
74
|
border-inline-start: 2px solid var(--color-border);
|
|
75
|
-
padding-inline-start: var(--era-pad-
|
|
75
|
+
padding-inline-start: var(--era-pad-panel);
|
|
76
76
|
color: var(--color-muted);
|
|
77
77
|
}
|
|
78
78
|
.era-response :global(code) {
|
|
79
79
|
font-family: var(--font-mono, monospace);
|
|
80
80
|
background: var(--color-2);
|
|
81
|
-
border-radius: var(--era-rd-
|
|
81
|
+
border-radius: var(--era-rd-pill);
|
|
82
82
|
padding-inline: 0.25em;
|
|
83
83
|
}
|
|
84
84
|
.era-response :global(strong) {
|
|
@@ -83,15 +83,15 @@
|
|
|
83
83
|
role="status"
|
|
84
84
|
aria-live="polite"
|
|
85
85
|
class={cn(
|
|
86
|
-
'flex flex-col rounded-(--era-rd-
|
|
86
|
+
'flex flex-col rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow)',
|
|
87
87
|
className
|
|
88
88
|
)}
|
|
89
89
|
{...restProps}
|
|
90
90
|
>
|
|
91
|
-
<div class="flex h-(--era-h-
|
|
91
|
+
<div class="flex h-(--era-h-control) items-center gap-(--era-gap) px-(--era-inset-control)">
|
|
92
92
|
<!-- leading status dot + label -->
|
|
93
93
|
<span
|
|
94
|
-
class="flex items-center gap-(--era-inset-
|
|
94
|
+
class="flex items-center gap-(--era-inset-pill) font-mono text-body {style.text} era-text-trim"
|
|
95
95
|
>
|
|
96
96
|
<span class={cn('size-1.5 shrink-0 rounded-full', style.dot, style.pulse && 'animate-pulse')}
|
|
97
97
|
></span>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
|
|
117
117
|
{#if style.active && oncancel}
|
|
118
118
|
<Button size="xs" tone="destructive" onclick={() => oncancel?.()}>
|
|
119
|
-
<X class="size-(--era-h-
|
|
119
|
+
<X class="size-(--era-h-icon)" aria-hidden="true" />
|
|
120
120
|
Cancel
|
|
121
121
|
</Button>
|
|
122
122
|
{/if}
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
{#if latest}
|
|
126
126
|
<div
|
|
127
127
|
class={cn(
|
|
128
|
-
'truncate px-(--era-inset-
|
|
128
|
+
'truncate px-(--era-inset-control) pb-(--era-inset-chip) font-mono text-body',
|
|
129
129
|
LOG_TONE[latest.tone]
|
|
130
130
|
)}
|
|
131
131
|
>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
{...restProps}
|
|
56
56
|
>
|
|
57
57
|
<!-- size-2, the library's dot size (conversations row, run status, swarm) —
|
|
58
|
-
NOT a tier height: h-
|
|
58
|
+
NOT a tier height: h-pill is the pill tier (18-26px), which rendered this
|
|
59
59
|
as a bullet taller than the line it marks. -->
|
|
60
60
|
<span class="size-2 shrink-0 rounded-full bg-current" aria-hidden="true"></span>
|
|
61
61
|
<span class="min-w-0 flex-1 truncate">
|
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
rel="noreferrer"
|
|
12
12
|
class="flex items-center gap-(--era-gap) text-body text-fg hover:text-bright hover:underline"
|
|
13
13
|
>
|
|
14
|
-
<BookOpen class="size-(--era-h-
|
|
14
|
+
<BookOpen class="size-(--era-h-icon) shrink-0 text-muted" aria-hidden="true" />
|
|
15
15
|
<span class="truncate">{title ?? href}</span>
|
|
16
16
|
</a>
|
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<Step.Summary>
|
|
10
|
-
<BookMarked class="size-(--era-h-
|
|
10
|
+
<BookMarked class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
|
|
11
11
|
{#if children}{@render children()}{:else}Used {count} source{count === 1 ? '' : 's'}{/if}
|
|
12
12
|
</Step.Summary>
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
{:else}
|
|
98
98
|
<div class="flex min-w-0 flex-col gap-(--era-gap)">
|
|
99
99
|
{@render tag(kind, label)}
|
|
100
|
-
<div class="border-l border-divider pl-(--era-inset-
|
|
100
|
+
<div class="border-l border-divider pl-(--era-inset-control)">
|
|
101
101
|
<Self value={v} depth={depth + 1} />
|
|
102
102
|
</div>
|
|
103
103
|
</div>
|