@signal9/era-ui 10.0.0 → 11.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/actions/actions.svelte +1 -1
- package/dist/ai/artifact/artifact-actions.svelte +1 -1
- 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 -4
- package/dist/ai/chain-of-thought/chain-of-thought-step.svelte +3 -3
- package/dist/ai/chain-of-thought/chain-of-thought.svelte +1 -1
- package/dist/ai/checkpoint.svelte +2 -2
- package/dist/ai/confirmation/confirmation-actions.svelte +1 -1
- package/dist/ai/confirmation/confirmation-args.svelte +4 -4
- package/dist/ai/confirmation/confirmation.svelte +5 -8
- package/dist/ai/context/context.svelte +3 -3
- package/dist/ai/conversation/conversation-content.svelte +1 -4
- package/dist/ai/conversation/conversation-empty-state.svelte +1 -1
- package/dist/ai/conversation/conversation-scroll-button.svelte +3 -3
- package/dist/ai/conversations/conversations-group.svelte +2 -2
- package/dist/ai/conversations/conversations-item.svelte +8 -8
- package/dist/ai/conversations/conversations-root.svelte +2 -2
- package/dist/ai/error-panel/error-panel.svelte +7 -7
- package/dist/ai/image.svelte +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/ai/inline-citation/inline-citation.svelte +5 -5
- package/dist/ai/loader.svelte +1 -4
- package/dist/ai/message/message-branch-selector.svelte +3 -3
- package/dist/ai/message/message-branch.svelte +1 -1
- package/dist/ai/message/message-content.svelte +1 -1
- package/dist/ai/message/message-toolbar.svelte +1 -1
- package/dist/ai/message/message-usage.svelte +5 -7
- package/dist/ai/message/message.svelte +1 -1
- package/dist/ai/model-selector/model-selector.svelte +2 -2
- 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 -4
- 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 +2 -2
- package/dist/ai/prompt-input/prompt-input-textarea.svelte +2 -2
- package/dist/ai/prompt-input/prompt-input-toolbar.svelte +1 -1
- 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 +1 -1
- package/dist/ai/run-status/run-status.svelte +7 -11
- package/dist/ai/runtime-feed/runtime-feed-item.svelte +1 -4
- package/dist/ai/runtime-feed/runtime-feed-root.svelte +1 -1
- package/dist/ai/sources/source.svelte +2 -2
- package/dist/ai/sources/sources-trigger.svelte +1 -1
- package/dist/ai/structured-value/structured-value.svelte +4 -4
- package/dist/ai/suggestion/suggestion.svelte +1 -1
- package/dist/ai/suggestion/suggestions.svelte +1 -1
- package/dist/ai/swarm/swarm-agent.svelte +3 -3
- package/dist/ai/swarm/swarm-artifact.svelte +2 -2
- package/dist/ai/swarm/swarm-barrier.svelte +3 -3
- package/dist/ai/swarm/swarm-barriers.svelte +1 -4
- package/dist/ai/swarm/swarm-counts.svelte +2 -2
- package/dist/ai/swarm/swarm-footer.svelte +4 -3
- package/dist/ai/swarm/swarm-grid.svelte +2 -2
- package/dist/ai/swarm/swarm-header.svelte +2 -2
- package/dist/ai/swarm/swarm-node.svelte +7 -9
- package/dist/ai/swarm/swarm-role.svelte +6 -3
- package/dist/ai/swarm/swarm-root.svelte +1 -4
- package/dist/ai/swarm/swarm-sandbox.svelte +4 -7
- package/dist/ai/swarm/swarm-tree.svelte +2 -2
- package/dist/ai/task/task-content.svelte +1 -4
- package/dist/ai/task/task-trigger.svelte +1 -1
- package/dist/ai/tool/tool-chip.svelte +3 -3
- package/dist/ai/tool/tool-chips.svelte +3 -3
- package/dist/ai/tool/tool-exec.svelte +4 -4
- package/dist/ai/tool/tool-header.svelte +1 -1
- package/dist/ai/web-preview/web-preview.svelte +4 -9
- package/dist/ai/workflow/canvas.svelte +1 -1
- package/dist/ai/workflow/node.svelte +3 -3
- package/dist/apps/index.d.ts +3 -3
- package/dist/apps/index.js +3 -3
- package/dist/apps/llm-shell/llm-shell.svelte +4 -4
- package/dist/apps/notes/editor/slash-menu.svelte +2 -4
- package/dist/apps/notes/notes.svelte +8 -8
- package/dist/dev/audit/audits/anonymous-text.d.ts +2 -0
- package/dist/dev/audit/audits/anonymous-text.js +73 -0
- package/dist/dev/audit/audits/even-container-padding.js +2 -2
- package/dist/dev/audit/audits/index.d.ts +2 -1
- package/dist/dev/audit/audits/index.js +3 -1
- package/dist/dev/audit/audits/single-glyph-square.js +2 -2
- package/dist/dev/audit/types.d.ts +1 -1
- package/dist/dev/audit-overlay.svelte +7 -7
- package/dist/docs/css-utilities.d.ts +31 -0
- package/dist/docs/css-utilities.js +142 -8
- package/dist/docs/llms-txt.js +2 -2
- package/dist/docs/notes.md +3 -3
- package/dist/docs/quickstart.md +5 -5
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/llms-full.txt +455 -110
- package/dist/generated-docs/llms.txt +29 -14
- package/dist/generated-docs/manifest.json +382 -55
- package/dist/generated-docs/notes.md +3 -3
- package/dist/generated-docs/utilities.json +359 -45
- package/dist/generated-docs/utilities.md +423 -93
- package/dist/os/notification-center.svelte +11 -17
- package/dist/os/pane-manager.svelte.d.ts +1 -1
- package/dist/os/pane.svelte +4 -6
- package/dist/os/taskbar.svelte +13 -18
- package/dist/os/toast.svelte +6 -11
- package/dist/os/toaster.svelte +1 -1
- package/dist/styles/density.css +0 -2
- package/dist/styles/index.css +160 -84
- package/dist/ui/accordion/accordion-content.svelte +1 -1
- package/dist/ui/accordion/accordion-trigger.svelte +2 -2
- package/dist/ui/alert-dialog/alert-dialog-content.svelte +2 -2
- package/dist/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/dist/ui/aspect-ratio/aspect-ratio.svelte +1 -5
- package/dist/ui/avatar/avatar-fallback.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 +8 -8
- package/dist/ui/bar/bar.svelte.d.ts +16 -16
- package/dist/ui/button/button.svelte +13 -2
- package/dist/ui/button/variants.d.ts +4 -4
- 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-grid-row.svelte +1 -1
- package/dist/ui/calendar/calendar-grid.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/calendar/calendar-root.svelte +1 -1
- package/dist/ui/card/card.svelte +10 -10
- package/dist/ui/card/card.svelte.d.ts +16 -16
- package/dist/ui/checkbox/checkbox-group.svelte +1 -1
- package/dist/ui/checkbox/checkbox.svelte +1 -1
- package/dist/ui/chip/chip.svelte +15 -7
- package/dist/ui/chip/chip.svelte.d.ts +7 -7
- package/dist/ui/code-block/code-block.svelte +3 -9
- 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 +1 -6
- package/dist/ui/combobox/combobox-group-heading.svelte +1 -4
- package/dist/ui/combobox/combobox-input.svelte +1 -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 +1 -4
- package/dist/ui/command/command-group-items.svelte +1 -5
- 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 +2 -2
- package/dist/ui/command/command-viewport.svelte +1 -1
- package/dist/ui/command-bar/command-bar.svelte +9 -13
- package/dist/ui/context-menu/context-menu-checkbox-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-content.svelte +2 -2
- package/dist/ui/context-menu/context-menu-group-heading.svelte +1 -4
- 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 +2 -2
- package/dist/ui/date-field/date-field-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-calendar.svelte +1 -1
- package/dist/ui/date-picker/date-picker-content.svelte +1 -4
- package/dist/ui/date-picker/date-picker-day.svelte +1 -1
- package/dist/ui/date-picker/date-picker-grid-row.svelte +1 -1
- package/dist/ui/date-picker/date-picker-grid.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-calendar.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -4
- package/dist/ui/date-range-picker/date-range-picker-day.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-grid-row.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-grid.svelte +1 -5
- 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 +3 -5
- package/dist/ui/dialog/dialog-header.svelte +1 -6
- package/dist/ui/dialog/dialog-overlay.svelte +1 -5
- package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +2 -2
- package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +1 -4
- 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/index.js +1 -1
- package/dist/ui/input/input.svelte +2 -2
- package/dist/ui/input/textarea.svelte +1 -1
- package/dist/ui/input/variants.d.ts +18 -18
- package/dist/ui/input/variants.js +6 -6
- package/dist/ui/kv/kv.svelte +2 -3
- 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 +2 -2
- package/dist/ui/menubar/menubar-group-heading.svelte +1 -4
- 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 -4
- 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 +2 -2
- package/dist/ui/pagination/pagination-next-button.svelte +1 -1
- package/dist/ui/pagination/pagination-prev-button.svelte +1 -1
- package/dist/ui/pagination/pagination-root.svelte +1 -1
- package/dist/ui/pane/pane-content.svelte +1 -1
- package/dist/ui/pane/pane-root.svelte +1 -1
- 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/popover/popover-trigger.svelte +1 -4
- package/dist/ui/progress/progress.svelte +2 -2
- package/dist/ui/radio-group/radio-group-item.svelte +2 -2
- package/dist/ui/radio-group/radio-group-root.svelte +1 -1
- package/dist/ui/rating-group/rating-group-item.svelte +1 -1
- package/dist/ui/rating-group/rating-group-root.svelte +1 -1
- package/dist/ui/scroll-area/scroll-area-scrollbar.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 +7 -6
- package/dist/ui/select/select-group-heading.svelte +1 -4
- 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/separator/separator.svelte +1 -1
- package/dist/ui/sheet/sheet-content.svelte +3 -3
- package/dist/ui/sheet/sheet-content.svelte.d.ts +4 -4
- package/dist/ui/skeleton/skeleton.svelte +4 -4
- package/dist/ui/skeleton/skeleton.svelte.d.ts +10 -10
- package/dist/ui/slider/slider-range.svelte +1 -1
- package/dist/ui/slider/slider-thumb.svelte +1 -1
- package/dist/ui/slider/slider-tick.svelte +1 -1
- package/dist/ui/step/step-content.svelte +1 -1
- package/dist/ui/step/step-section.svelte +1 -1
- package/dist/ui/step/step-summary.svelte +7 -7
- package/dist/ui/switch/switch.svelte +2 -2
- package/dist/ui/table/table-cell.svelte +1 -1
- package/dist/ui/table/table-head-cell.svelte +1 -1
- package/dist/ui/table/table-row.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/toggle-group/toggle-group-root.svelte +1 -1
- package/dist/ui/tooltip/tooltip-content.svelte +1 -1
- package/dist/ui/video-player/video-player.svelte +44 -47
- package/dist/utils/index.js +1 -1
- package/package.json +4 -3
|
@@ -10,6 +10,6 @@
|
|
|
10
10
|
}: HTMLAttributes<HTMLDivElement> & { children?: Snippet } = $props();
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
|
-
<div class={cn('flex items-center gap-
|
|
13
|
+
<div class={cn('flex items-center gap-gutter', className)} {...restProps}>
|
|
14
14
|
{@render children?.()}
|
|
15
15
|
</div>
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
let { children, class: className }: { children?: Snippet; class?: string } = $props();
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
<div class={cn('flex shrink-0 items-center gap-
|
|
7
|
+
<div class={cn('flex shrink-0 items-center gap-gutter', className)}>
|
|
8
8
|
{@render children?.()}
|
|
9
9
|
</div>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<!-- size="pill", 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-
|
|
9
|
+
used to carry size-icon — a class the Button variant's [&_svg]
|
|
10
10
|
selector outranks, so it claimed 14px while 10 shipped. -->
|
|
11
11
|
<Button icon size="pill" 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-
|
|
7
|
+
<div class={cn('min-h-0 flex-1 overflow-auto p-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-
|
|
14
|
+
'flex h-bar shrink-0 items-center justify-between gap-gutter border-b border-divider-faded px-panel',
|
|
15
15
|
className
|
|
16
16
|
)}
|
|
17
17
|
{...restProps}
|
|
@@ -10,10 +10,7 @@
|
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
12
|
<div
|
|
13
|
-
class={cn(
|
|
14
|
-
'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow-lg)',
|
|
15
|
-
className
|
|
16
|
-
)}
|
|
13
|
+
class={cn('flex min-h-0 flex-col overflow-hidden rounded-bar bg-well shadow-lg', className)}
|
|
17
14
|
{...restProps}
|
|
18
15
|
>
|
|
19
16
|
{@render children?.()}
|
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
|
|
22
22
|
<!-- One reasoning step on the rail: icon column with a connector line, label
|
|
23
23
|
colored by status (active steps read brighter). -->
|
|
24
|
-
<div class="flex min-w-0 gap-
|
|
24
|
+
<div class="flex min-w-0 gap-gutter">
|
|
25
25
|
<div class="flex flex-col items-center">
|
|
26
26
|
<Icon
|
|
27
27
|
class={cn(
|
|
28
|
-
'size-
|
|
28
|
+
'size-icon shrink-0',
|
|
29
29
|
status === 'active'
|
|
30
30
|
? 'text-bright'
|
|
31
31
|
: status === 'pending'
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
/>
|
|
37
37
|
<span class="w-px flex-1 bg-divider-faded"></span>
|
|
38
38
|
</div>
|
|
39
|
-
<div class="flex min-w-0 flex-col gap-1 pb-
|
|
39
|
+
<div class="flex min-w-0 flex-col gap-1 pb-gutter">
|
|
40
40
|
<span class={cn('text-body', status === 'active' ? 'text-bright' : 'text-fg')}>{label}</span>
|
|
41
41
|
{#if description}<span class="text-body text-muted">{description}</span>{/if}
|
|
42
42
|
</div>
|
|
@@ -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-
|
|
24
|
+
<Brain class="size-icon shrink-0" aria-hidden="true" />
|
|
25
25
|
{label}
|
|
26
26
|
</Step.Summary>
|
|
27
27
|
<Step.Content class="bg-transparent p-0 shadow-none">
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
} = $props();
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
|
-
<div class={cn('flex w-full items-center gap-
|
|
22
|
-
<Bookmark class="size-
|
|
21
|
+
<div class={cn('flex w-full items-center gap-gutter text-muted', className)}>
|
|
22
|
+
<Bookmark class="size-icon shrink-0" aria-hidden="true" />
|
|
23
23
|
<Button variant="link" size="chip" onclick={onRestore}>
|
|
24
24
|
{#if children}{@render children()}{:else}{label}{/if}
|
|
25
25
|
</Button>
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
let { children, class: className }: { children?: Snippet; class?: string } = $props();
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
<div class={cn('flex items-center justify-end gap-
|
|
7
|
+
<div class={cn('flex items-center justify-end gap-gutter', className)}>
|
|
8
8
|
{@render children?.()}
|
|
9
9
|
</div>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
const jsonText = $state<Record<string, string>>({});
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
|
-
<div class={cn('flex min-w-0 flex-col gap-
|
|
19
|
+
<div class={cn('flex min-w-0 flex-col gap-gutter', className)}>
|
|
20
20
|
{#if ctrl.entries.length === 0}
|
|
21
21
|
<span class="text-body text-muted">No arguments</span>
|
|
22
22
|
{:else}
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
{@const kind = ctrl.kindOf(key)}
|
|
25
25
|
<div
|
|
26
26
|
class={cn(
|
|
27
|
-
'flex min-w-0 flex-col gap-
|
|
28
|
-
ctrl.isDirty(key) && 'border-warning border-s-2 ps-
|
|
27
|
+
'flex min-w-0 flex-col gap-gutter',
|
|
28
|
+
ctrl.isDirty(key) && 'border-warning border-s-2 ps-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-
|
|
49
|
+
'min-h-bar font-mono text-body',
|
|
50
50
|
!ctrl.isValid(key) && 'border border-destructive'
|
|
51
51
|
)}
|
|
52
52
|
/>
|
|
@@ -18,18 +18,15 @@
|
|
|
18
18
|
</script>
|
|
19
19
|
|
|
20
20
|
<div
|
|
21
|
-
class={cn(
|
|
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
|
-
className
|
|
24
|
-
)}
|
|
21
|
+
class={cn('flex min-w-0 flex-col gap-gutter rounded-bar bg-well p-panel shadow-sm', className)}
|
|
25
22
|
>
|
|
26
|
-
<div class="flex items-center gap-
|
|
23
|
+
<div class="flex items-center gap-gutter text-body">
|
|
27
24
|
{#if approval === 'requested'}
|
|
28
|
-
<ShieldQuestion class="size-
|
|
25
|
+
<ShieldQuestion class="size-icon shrink-0 text-warning" aria-hidden="true" />
|
|
29
26
|
{:else if approval === 'approved'}
|
|
30
|
-
<CircleCheck class="size-
|
|
27
|
+
<CircleCheck class="size-icon shrink-0 text-success" aria-hidden="true" />
|
|
31
28
|
{:else}
|
|
32
|
-
<CircleX class="size-
|
|
29
|
+
<CircleX class="size-icon shrink-0 text-destructive" aria-hidden="true" />
|
|
33
30
|
{/if}
|
|
34
31
|
<div class="min-w-0 flex-1 text-fg">{@render children?.()}</div>
|
|
35
32
|
</div>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<Popover.Root>
|
|
26
|
-
<Popover.Trigger size="chip" class={cn('gap-
|
|
26
|
+
<Popover.Trigger size="chip" class={cn('gap-gutter tabular-nums', className)}>
|
|
27
27
|
{Math.round(percent * 100)}%
|
|
28
|
-
<svg viewBox="0 0 24 24" class="size-
|
|
28
|
+
<svg viewBox="0 0 24 24" class="size-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"
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
/>
|
|
41
41
|
</svg>
|
|
42
42
|
</Popover.Trigger>
|
|
43
|
-
<Popover.Content align="end" class="flex w-56 flex-col gap-
|
|
43
|
+
<Popover.Content align="end" class="flex w-56 flex-col gap-gutter">
|
|
44
44
|
{#if modelId}<p class="text-body text-muted">{modelId}</p>{/if}
|
|
45
45
|
<KV key="used" value={fmt.format(usedTokens)} />
|
|
46
46
|
<KV key="max" value={fmt.format(maxTokens)} />
|
|
@@ -24,10 +24,7 @@
|
|
|
24
24
|
>
|
|
25
25
|
<div
|
|
26
26
|
{@attach stick.content}
|
|
27
|
-
class={cn(
|
|
28
|
-
'mx-auto flex w-full max-w-2xl flex-col gap-(--era-pad-content) p-(--era-pad-card)',
|
|
29
|
-
className
|
|
30
|
-
)}
|
|
27
|
+
class={cn('mx-auto flex w-full max-w-2xl flex-col gap-content p-card', className)}
|
|
31
28
|
{...restProps}
|
|
32
29
|
>
|
|
33
30
|
{@render children?.()}
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
|
|
12
12
|
{#if !stick.pinned}
|
|
13
13
|
<div
|
|
14
|
-
class={cn('absolute bottom-
|
|
14
|
+
class={cn('absolute bottom-panel left-1/2 z-10 -translate-x-1/2', className)}
|
|
15
15
|
transition:eraFly={{ y: 8 }}
|
|
16
16
|
>
|
|
17
17
|
<Button
|
|
18
18
|
icon
|
|
19
19
|
size="control"
|
|
20
20
|
aria-label="Scroll to bottom"
|
|
21
|
-
class="rounded-full shadow-
|
|
21
|
+
class="rounded-full shadow-lg"
|
|
22
22
|
onclick={() => stick.repin()}
|
|
23
23
|
>
|
|
24
|
-
<ArrowDown class="size-
|
|
24
|
+
<ArrowDown class="size-icon" />
|
|
25
25
|
</Button>
|
|
26
26
|
</div>
|
|
27
27
|
{/if}
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<!-- A time-bucket section: the step-section label idiom over its stack of rows. -->
|
|
19
|
-
<div class={cn('flex min-w-0 flex-col gap-
|
|
19
|
+
<div class={cn('flex min-w-0 flex-col gap-gutter', className)} {...restProps}>
|
|
20
20
|
{#if label}
|
|
21
21
|
<span
|
|
22
|
-
class="px-
|
|
22
|
+
class="px-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>
|
|
@@ -144,10 +144,10 @@
|
|
|
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-
|
|
147
|
+
'group/row relative flex h-control items-center gap-gutter rounded-control pr-pill-inset-control pl-inset-control text-body',
|
|
148
148
|
active
|
|
149
149
|
? 'bg-hover text-bright'
|
|
150
|
-
: 'text-fg hover:bg-
|
|
150
|
+
: 'text-fg hover:bg-highlight hover:shadow-highlight has-[[data-rail]:hover]:bg-transparent has-[[data-rail]:hover]:shadow-none',
|
|
151
151
|
className
|
|
152
152
|
)}
|
|
153
153
|
onmouseleave={disarm}
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
{#if leading}
|
|
158
158
|
{@render leading()}
|
|
159
159
|
{:else}
|
|
160
|
-
<MessageSquare class="size-
|
|
160
|
+
<MessageSquare class="size-icon shrink-0 text-muted" aria-hidden="true" />
|
|
161
161
|
{/if}
|
|
162
162
|
|
|
163
163
|
{#if status}
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
button, which should keep the row highlighted. -->
|
|
200
200
|
<div
|
|
201
201
|
data-rail
|
|
202
|
-
class="flex shrink-0 items-center gap-
|
|
202
|
+
class="flex shrink-0 items-center gap-gutter opacity-0 group-hover/row:opacity-100 focus-within:opacity-100"
|
|
203
203
|
>
|
|
204
204
|
<Button
|
|
205
205
|
icon
|
|
@@ -208,12 +208,12 @@
|
|
|
208
208
|
aria-pressed={starred}
|
|
209
209
|
onclick={toggleStar}
|
|
210
210
|
>
|
|
211
|
-
<Star class={cn('size-
|
|
211
|
+
<Star class={cn('size-icon', starred && 'fill-warning text-warning')} />
|
|
212
212
|
</Button>
|
|
213
213
|
|
|
214
214
|
{#if showCancel}
|
|
215
215
|
<Button icon size="pill" aria-label="Cancel generation" onclick={() => onCancel?.()}>
|
|
216
|
-
<X class="size-
|
|
216
|
+
<X class="size-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-
|
|
229
|
+
<Check class="size-icon" />
|
|
230
230
|
{:else}
|
|
231
|
-
<Trash2 class="size-
|
|
231
|
+
<Trash2 class="size-icon" />
|
|
232
232
|
{/if}
|
|
233
233
|
</Button>
|
|
234
234
|
</div>
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
|
|
18
18
|
<!-- The rail: a sticky header slot over a chromeless scroll column. min-h-0 lets
|
|
19
19
|
the list shrink inside a flex parent so only the list scrolls, not the page. -->
|
|
20
|
-
<div class={cn('flex min-h-0 flex-col gap-
|
|
20
|
+
<div class={cn('flex min-h-0 flex-col gap-gutter', className)} {...restProps}>
|
|
21
21
|
{#if header}
|
|
22
22
|
<div class="shrink-0">{@render header()}</div>
|
|
23
23
|
{/if}
|
|
24
|
-
<div class="scrollbar-none flex min-h-0 flex-1 flex-col gap-
|
|
24
|
+
<div class="scrollbar-none flex min-h-0 flex-1 flex-col gap-gutter overflow-y-auto">
|
|
25
25
|
{@render children?.()}
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
|
|
55
55
|
{#snippet head()}
|
|
56
56
|
{#if info.tone === 'warning'}
|
|
57
|
-
<TriangleAlert class="size-
|
|
57
|
+
<TriangleAlert class="size-icon shrink-0 text-warning" aria-hidden="true" />
|
|
58
58
|
{:else}
|
|
59
|
-
<CircleX class="size-
|
|
59
|
+
<CircleX class="size-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-
|
|
68
|
+
'group/error flex min-w-0 flex-col gap-gutter rounded-bar bg-well p-panel shadow-sm',
|
|
69
69
|
className
|
|
70
70
|
)}
|
|
71
71
|
{...restProps}
|
|
@@ -73,16 +73,16 @@
|
|
|
73
73
|
{#if showDetail}
|
|
74
74
|
<!-- The whole summary row toggles the raw detail; quiet until hovered. -->
|
|
75
75
|
<Collapsible.Trigger
|
|
76
|
-
class="flex w-full min-w-0 era-interactive cursor-pointer items-center gap-
|
|
76
|
+
class="flex w-full min-w-0 era-interactive cursor-pointer items-center gap-gutter text-body text-muted"
|
|
77
77
|
>
|
|
78
78
|
{@render head()}
|
|
79
79
|
<ChevronDown
|
|
80
|
-
class="size-
|
|
80
|
+
class="size-icon shrink-0 transition-transform duration-base ease-base group-data-[state=open]/error:rotate-180"
|
|
81
81
|
aria-hidden="true"
|
|
82
82
|
/>
|
|
83
83
|
</Collapsible.Trigger>
|
|
84
84
|
{:else}
|
|
85
|
-
<div class="flex min-w-0 items-center gap-
|
|
85
|
+
<div class="flex min-w-0 items-center gap-gutter text-body">
|
|
86
86
|
{@render head()}
|
|
87
87
|
</div>
|
|
88
88
|
{/if}
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
|
|
94
94
|
{#if showDetail}
|
|
95
95
|
<Collapsible.Content class="era-collapse">
|
|
96
|
-
<div class="pt-
|
|
96
|
+
<div class="pt-gutter">
|
|
97
97
|
<CodeBlock code={rawDetail} />
|
|
98
98
|
</div>
|
|
99
99
|
</Collapsible.Content>
|
package/dist/ai/image.svelte
CHANGED
package/dist/ai/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// era-ui take on Vercel's AI Elements (via the Svelte port). Namespaced parts
|
|
3
3
|
// for the families, flat exports for the singles. `workflow/` is deliberately
|
|
4
4
|
// NOT exported here: it depends on @xyflow/svelte and lives on its own
|
|
5
|
-
// subpath (`@
|
|
5
|
+
// subpath (`@signal9/era-ui/ai/workflow`) so the dependency stays opt-in.
|
|
6
6
|
export * as Conversation from './conversation/index.js';
|
|
7
7
|
export * as Message from './message/index.js';
|
|
8
8
|
export * as PromptInput from './prompt-input/index.js';
|
|
@@ -40,18 +40,18 @@
|
|
|
40
40
|
>{host(sources[0]?.href ?? '')}{sources.length > 1 ? ` +${sources.length - 1}` : ''}</Badge
|
|
41
41
|
>
|
|
42
42
|
</LinkPreview.Trigger>
|
|
43
|
-
<LinkPreview.Content class="flex w-72 flex-col gap-
|
|
43
|
+
<LinkPreview.Content class="flex w-72 flex-col gap-gutter">
|
|
44
44
|
{#if sources.length > 1}
|
|
45
45
|
<div class="flex items-center justify-between">
|
|
46
46
|
<span class="text-body text-muted tabular-nums">{index + 1} of {sources.length}</span>
|
|
47
|
-
<div class="flex gap-
|
|
47
|
+
<div class="flex gap-gutter">
|
|
48
48
|
<Button
|
|
49
49
|
icon
|
|
50
50
|
size="icon"
|
|
51
51
|
aria-label="Previous source"
|
|
52
52
|
onclick={() => (index = (index - 1 + sources.length) % sources.length)}
|
|
53
53
|
>
|
|
54
|
-
<ChevronLeft class="size-
|
|
54
|
+
<ChevronLeft class="size-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-
|
|
62
|
+
<ChevronRight class="size-icon" />
|
|
63
63
|
</Button>
|
|
64
64
|
</div>
|
|
65
65
|
</div>
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
{active.title ?? active.href}
|
|
75
75
|
</a>
|
|
76
76
|
{#if active.quote}
|
|
77
|
-
<blockquote class="border-divider-faded border-s-2 ps-
|
|
77
|
+
<blockquote class="border-divider-faded border-s-2 ps-gutter text-body text-muted">
|
|
78
78
|
{active.quote}
|
|
79
79
|
</blockquote>
|
|
80
80
|
{/if}
|
package/dist/ai/loader.svelte
CHANGED
|
@@ -5,7 +5,4 @@
|
|
|
5
5
|
let { class: className }: { class?: string } = $props();
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
|
-
<LoaderCircle
|
|
9
|
-
class={cn('size-(--era-h-icon) animate-spin text-muted', className)}
|
|
10
|
-
aria-label="Loading"
|
|
11
|
-
/>
|
|
8
|
+
<LoaderCircle class={cn('size-icon animate-spin text-muted', className)} aria-label="Loading" />
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
{#if ctrl.total > 1}
|
|
14
14
|
<ButtonGroup class={cn(className)}>
|
|
15
15
|
<Button icon size="chip" aria-label="Previous version" onclick={() => ctrl.previous()}>
|
|
16
|
-
<ChevronLeft class="size-
|
|
16
|
+
<ChevronLeft class="size-icon" />
|
|
17
17
|
</Button>
|
|
18
|
-
<span class="flex items-center px-
|
|
18
|
+
<span class="flex items-center px-inset-chip text-body text-muted tabular-nums">
|
|
19
19
|
{ctrl.current + 1} of {ctrl.total}
|
|
20
20
|
</span>
|
|
21
21
|
<Button icon size="chip" aria-label="Next version" onclick={() => ctrl.next()}>
|
|
22
|
-
<ChevronRight class="size-
|
|
22
|
+
<ChevronRight class="size-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-
|
|
20
|
+
'group-data-[role=user]/message:max-w-[80%] group-data-[role=user]/message:rounded-control group-data-[role=user]/message:bg-elevated group-data-[role=user]/message:p-panel group-data-[role=user]/message:whitespace-pre-wrap group-data-[role=user]/message:shadow-sm',
|
|
21
21
|
className
|
|
22
22
|
)}
|
|
23
23
|
{...restProps}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
hovered (the convention), always reachable by keyboard focus. -->
|
|
15
15
|
<div
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex items-center gap-
|
|
17
|
+
'flex items-center gap-gutter opacity-0 transition-opacity duration-base ease-base group-hover/message:opacity-100 focus-within:opacity-100',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
|
|
85
85
|
<div
|
|
86
86
|
class={cn(
|
|
87
|
-
'flex items-center gap-
|
|
87
|
+
'flex items-center gap-inset-chip font-mono text-body leading-none text-muted tabular-nums',
|
|
88
88
|
className
|
|
89
89
|
)}
|
|
90
90
|
{...restProps}
|
|
@@ -100,18 +100,16 @@
|
|
|
100
100
|
<Tooltip.Provider delayDuration={150}>
|
|
101
101
|
<Tooltip.Root>
|
|
102
102
|
<Tooltip.Trigger
|
|
103
|
-
class="inline-flex items-center text-muted transition-colors duration-
|
|
103
|
+
class="inline-flex items-center text-muted transition-colors duration-base ease-base hover:text-fg"
|
|
104
104
|
aria-label="Context window breakdown"
|
|
105
105
|
>
|
|
106
|
-
<Info class="size-
|
|
106
|
+
<Info class="size-icon" aria-hidden="true" />
|
|
107
107
|
</Tooltip.Trigger>
|
|
108
108
|
<Tooltip.Content
|
|
109
|
-
class="h-auto flex-col items-start gap-
|
|
109
|
+
class="h-auto flex-col items-start gap-inset-pill py-inset-pill whitespace-normal"
|
|
110
110
|
>
|
|
111
111
|
{#each rows as [label, value] (label)}
|
|
112
|
-
<span
|
|
113
|
-
class="flex w-full items-center justify-between gap-(--era-inset-control) tabular-nums"
|
|
114
|
-
>
|
|
112
|
+
<span class="flex w-full items-center justify-between gap-inset-control tabular-nums">
|
|
115
113
|
<span class="text-muted">{label}</span>
|
|
116
114
|
<span>{formatTokens(value)}</span>
|
|
117
115
|
</span>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</script>
|
|
22
22
|
|
|
23
23
|
<Dialog.Root bind:open>
|
|
24
|
-
<Dialog.Content class={cn('max-w-md p-
|
|
24
|
+
<Dialog.Content class={cn('max-w-md p-gutter', className)}>
|
|
25
25
|
<Command.Root bare>
|
|
26
26
|
<Command.Input icon={Search} placeholder="Search models…" autofocus />
|
|
27
27
|
<Command.List>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<img
|
|
44
44
|
src="https://models.dev/logos/{m.provider}.svg"
|
|
45
45
|
alt=""
|
|
46
|
-
class="size-
|
|
46
|
+
class="size-icon shrink-0 dark:invert"
|
|
47
47
|
/>
|
|
48
48
|
{/if}
|
|
49
49
|
<span class="truncate">{m.name}</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-
|
|
41
|
+
<ChevronDown class="size-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-
|
|
48
|
+
<ExternalLink class="size-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-
|
|
10
|
+
class={cn('flex flex-col gap-gutter overflow-hidden p-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-
|
|
16
|
+
'flex h-control w-full era-interactive cursor-pointer items-center gap-gutter rounded-control px-inset-control text-body text-bright hover:bg-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-
|
|
21
|
+
<ChevronsUpDown class="ml-auto size-icon shrink-0 text-muted" />
|
|
22
22
|
</Collapsible.Trigger>
|
package/dist/ai/plan/plan.svelte
CHANGED
|
@@ -14,10 +14,7 @@
|
|
|
14
14
|
<Collapsible.Root
|
|
15
15
|
bind:open
|
|
16
16
|
data-streaming={streaming || undefined}
|
|
17
|
-
class={cn(
|
|
18
|
-
'group/plan flex flex-col rounded-(--era-rd-bar) bg-(--era-surface-bg) p-(--era-pad-panel) shadow-(--era-shadow)',
|
|
19
|
-
className
|
|
20
|
-
)}
|
|
17
|
+
class={cn('group/plan flex flex-col rounded-bar bg-well p-panel shadow-sm', className)}
|
|
21
18
|
>
|
|
22
19
|
{@render children?.()}
|
|
23
20
|
</Collapsible.Root>
|