@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
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<DateRangePicker.Segment
|
|
13
13
|
bind:ref
|
|
14
14
|
class={cn(
|
|
15
|
-
'inline-flex h-(--era-h-
|
|
15
|
+
'inline-flex h-(--era-h-chip) items-center rounded-(--era-rd-chip) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
18
18
|
{...restProps}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<DateRangePicker.Trigger
|
|
15
15
|
bind:ref
|
|
16
16
|
class={cn(
|
|
17
|
-
'ml-auto flex size-(--era-h-
|
|
17
|
+
'ml-auto flex size-(--era-h-chip) shrink-0 items-center justify-center rounded-(--era-rd-chip) text-muted hover:bg-(--era-highlight) hover:text-fg focus:outline-none',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
{#if children}
|
|
23
23
|
{@render children()}
|
|
24
24
|
{:else}
|
|
25
|
-
<CalendarDays class="size-(--era-h-
|
|
25
|
+
<CalendarDays class="size-(--era-h-icon)" />
|
|
26
26
|
{/if}
|
|
27
27
|
</DateRangePicker.Trigger>
|
|
@@ -31,14 +31,16 @@
|
|
|
31
31
|
bind:ref
|
|
32
32
|
class={cn(
|
|
33
33
|
'fixed top-1/2 left-1/2 z-50 flex w-full max-w-md -translate-x-1/2 -translate-y-1/2 flex-col border border-divider bg-(--era-surface-bg) shadow-(--era-shadow-lg) glass-blur',
|
|
34
|
-
header
|
|
34
|
+
header
|
|
35
|
+
? 'rounded-(--era-rd-control)'
|
|
36
|
+
: 'gap-(--era-gap) rounded-(--era-rd-bar) p-(--era-pad-card)',
|
|
35
37
|
className
|
|
36
38
|
)}
|
|
37
39
|
{...restProps}
|
|
38
40
|
>
|
|
39
41
|
{#if header}
|
|
40
42
|
{@render header()}
|
|
41
|
-
<div class="flex min-h-0 flex-col gap-(--era-gap) p-(--era-pad-
|
|
43
|
+
<div class="flex min-h-0 flex-col gap-(--era-gap) p-(--era-pad-card)">
|
|
42
44
|
{@render children?.()}
|
|
43
45
|
</div>
|
|
44
46
|
{:else}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
variant IS the cap law (outset divider, rd-md corners), shared with
|
|
22
22
|
Pane.Handle. What this part adds:
|
|
23
23
|
|
|
24
|
-
· the leading side at --era-inset-
|
|
24
|
+
· the leading side at --era-inset-control: a title has no corner to nest, so
|
|
25
25
|
it takes the text inset, the same asymmetry the pane and the
|
|
26
26
|
Conversations row document
|
|
27
27
|
· the × is the dismiss family's: an xxs `Dialog.Close` whose tier
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
`header` snippet, so the bar spans the panel edge to edge and the panel's
|
|
32
32
|
radius follows this corner region (rd-md — the same law that sizes the
|
|
33
33
|
pane's own corners). -->
|
|
34
|
-
<Bar size="md" content="xxs" divider class={cn('pl-(--era-inset-
|
|
34
|
+
<Bar size="md" content="xxs" divider class={cn('pl-(--era-inset-control) select-none', className)}>
|
|
35
35
|
{@render children?.()}
|
|
36
36
|
{#if dismissable}
|
|
37
37
|
<Close icon size="xxs" tone="destructive" aria-label="Close" class="ml-auto">
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
bind:ref
|
|
15
15
|
bind:checked
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex h-(--era-h-
|
|
17
|
+
'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
// floating menu, like the context menu it should match: full radius, a
|
|
30
30
|
// gutter of air, shadow doing the separating.
|
|
31
31
|
class={cn(
|
|
32
|
-
'z-50 w-max min-w-(--bits-dropdown-menu-anchor-width) overflow-hidden rounded-(--era-rd-
|
|
32
|
+
'z-50 w-max min-w-(--bits-dropdown-menu-anchor-width) overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
|
|
33
33
|
className
|
|
34
34
|
)}
|
|
35
35
|
{sideOffset}
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
<DropdownMenu.GroupHeading
|
|
13
13
|
bind:ref
|
|
14
|
-
class={cn(
|
|
14
|
+
class={cn(
|
|
15
|
+
'flex h-(--era-h-control) items-center px-(--era-inset-control) text-body text-muted',
|
|
16
|
+
className
|
|
17
|
+
)}
|
|
15
18
|
{...restProps}
|
|
16
19
|
/>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<DropdownMenu.Item
|
|
14
14
|
bind:ref
|
|
15
15
|
class={cn(
|
|
16
|
-
'flex h-(--era-h-
|
|
16
|
+
'flex h-(--era-h-control) cursor-pointer items-center gap-(--era-gap) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
{...restProps}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<DropdownMenu.RadioItem
|
|
13
13
|
bind:ref
|
|
14
14
|
class={cn(
|
|
15
|
-
'flex h-(--era-h-
|
|
15
|
+
'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
18
18
|
{...restProps}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<DropdownMenu.SubContent
|
|
16
16
|
bind:ref
|
|
17
17
|
class={cn(
|
|
18
|
-
'z-50 w-max overflow-hidden rounded-(--era-rd-
|
|
18
|
+
'z-50 w-max overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
{sideOffset}
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
<DropdownMenu.SubTrigger
|
|
15
15
|
bind:ref
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex h-(--era-h-
|
|
17
|
+
'flex h-(--era-h-control) cursor-pointer items-center justify-between gap-(--era-icon-inset-chip) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[state=open]:bg-hover',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
21
21
|
>
|
|
22
22
|
{@render children?.()}
|
|
23
|
-
<ChevronRight class="size-(--era-h-
|
|
23
|
+
<ChevronRight class="size-(--era-h-icon) text-muted" />
|
|
24
24
|
</DropdownMenu.SubTrigger>
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
<DropdownMenu.Trigger
|
|
15
15
|
bind:ref
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex h-(--era-h-
|
|
17
|
+
'flex h-(--era-h-control) w-full items-center justify-between gap-(--era-icon-inset-chip) rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) px-(--era-inset-control) text-body text-fg shadow-(--era-shadow) focus:bg-(--era-highlight) focus:outline-none disabled:opacity-50 data-[state=open]:rounded-b-none data-[state=open]:shadow-(--era-shadow-pressed)',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
21
21
|
>
|
|
22
22
|
{@render children?.()}
|
|
23
|
-
<ChevronDown class="size-(--era-h-
|
|
23
|
+
<ChevronDown class="size-(--era-h-icon) text-muted" />
|
|
24
24
|
</DropdownMenu.Trigger>
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
data-dragging={dragging || undefined}
|
|
75
75
|
data-disabled={disabled || undefined}
|
|
76
76
|
class={cn(
|
|
77
|
-
'flex h-(--era-h-
|
|
77
|
+
'flex h-(--era-h-control) w-full items-center gap-(--era-gap) rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) px-(--era-inset-control) font-mono text-body leading-none text-fg shadow-(--era-shadow-well) transition-colors duration-(--era-duration) focus-within:bg-(--era-highlight) hover:bg-(--era-highlight) data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[dragging]:bg-(--era-highlight) data-[dragging]:text-bright',
|
|
78
78
|
className
|
|
79
79
|
)}
|
|
80
80
|
ondragenter={onDragEnter}
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
ondragover={onDragOver}
|
|
83
83
|
ondrop={onDrop}
|
|
84
84
|
>
|
|
85
|
-
<Upload class="size-(--era-h-
|
|
85
|
+
<Upload class="size-(--era-h-icon) shrink-0" />
|
|
86
86
|
<span class="truncate {files && files.length > 0 ? 'text-bright' : 'text-muted'}">
|
|
87
87
|
{label()}
|
|
88
88
|
</span>
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
/** Lucide glyph rendered inside the field, left of the text. */
|
|
25
25
|
icon?: Component<IconProps> | null;
|
|
26
26
|
/**
|
|
27
|
-
* Field tier. `
|
|
27
|
+
* Field tier. `pill` is badge height — for compact chrome where the field
|
|
28
28
|
* sits level with xxs buttons. See inputVariants.
|
|
29
29
|
*/
|
|
30
30
|
size?: 'md' | 'xxs';
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
|
|
52
52
|
// The field's glyph is the icon tier OF ITS OWN TIER, which is what puts it on
|
|
53
53
|
// the same optical footing as the icon button beside it: an md field pairs
|
|
54
|
-
// with a default button (h-
|
|
54
|
+
// with a default button (h-icon glyph), an xxs field with a pill-tier button
|
|
55
55
|
// (icon-xxs). One size for both would leave the two glyphs in one bar drawn at
|
|
56
56
|
// different weights.
|
|
57
|
-
const glyphClass = $derived(size === 'xxs' ? 'size-(--era-
|
|
57
|
+
const glyphClass = $derived(size === 'xxs' ? 'size-(--era-glyph-pill)' : 'size-(--era-h-icon)');
|
|
58
58
|
</script>
|
|
59
59
|
|
|
60
60
|
{#if icon}
|
|
@@ -6,7 +6,7 @@ type $$ComponentProps = Omit<HTMLInputAttributes, 'size'> & {
|
|
|
6
6
|
/** Lucide glyph rendered inside the field, left of the text. */
|
|
7
7
|
icon?: Component<IconProps> | null;
|
|
8
8
|
/**
|
|
9
|
-
* Field tier. `
|
|
9
|
+
* Field tier. `pill` is badge height — for compact chrome where the field
|
|
10
10
|
* sits level with xxs buttons. See inputVariants.
|
|
11
11
|
*/
|
|
12
12
|
size?: 'md' | 'xxs';
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
inputVariants({ height: 'auto' }),
|
|
22
22
|
// It grows, so the vertical inset has to be stated: the tier height is what
|
|
23
23
|
// centres one line of text in every other field, and there isn't one here.
|
|
24
|
-
'resize-y py-(--era-inset-
|
|
24
|
+
'resize-y py-(--era-inset-control)',
|
|
25
25
|
className
|
|
26
26
|
)}
|
|
27
27
|
{...restProps}></textarea>
|
|
@@ -50,18 +50,18 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
50
50
|
* - `md` (default) — THE field, and the pairing an md bar's md content
|
|
51
51
|
* expects. Its --era-field-px is glyph-advance derived: the padding a
|
|
52
52
|
* STRING of text wants, not a single centred glyph.
|
|
53
|
-
* - `
|
|
53
|
+
* - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
|
|
54
54
|
* SMALLEST tier that can hold body text at all: its inset is
|
|
55
|
-
* (h-
|
|
56
|
-
* below (h-
|
|
55
|
+
* (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
|
|
56
|
+
* below (h-icon) IS the text size and has none left. For compact chrome —
|
|
57
57
|
* a filter that sits level with an xxs icon button, a title bar that
|
|
58
58
|
* shouldn't outweigh the document under it. Side padding is
|
|
59
|
-
* --era-pill-
|
|
59
|
+
* --era-pill-px, exactly what Badge and Chip use, so a field and a pill
|
|
60
60
|
* on this tier read as one family.
|
|
61
61
|
*/
|
|
62
62
|
size: {
|
|
63
|
-
md: "h-(--era-h-
|
|
64
|
-
xxs: "h-(--era-h-
|
|
63
|
+
md: "h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)";
|
|
64
|
+
xxs: "h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)";
|
|
65
65
|
};
|
|
66
66
|
/**
|
|
67
67
|
* Height OVERRIDES, for the fields that are not their tier's height. No
|
|
@@ -69,7 +69,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
69
69
|
*/
|
|
70
70
|
height: {
|
|
71
71
|
full: "h-full";
|
|
72
|
-
auto: "h-auto min-h-(--era-h-
|
|
72
|
+
auto: "h-auto min-h-(--era-h-control)";
|
|
73
73
|
};
|
|
74
74
|
/**
|
|
75
75
|
* Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
|
|
@@ -80,7 +80,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
80
80
|
* below.
|
|
81
81
|
*/
|
|
82
82
|
pad: {
|
|
83
|
-
trailing: "ps-(--era-field-px) pe-(--era-
|
|
83
|
+
trailing: "ps-(--era-field-px) pe-(--era-chip-inset-control)";
|
|
84
84
|
none: "px-0";
|
|
85
85
|
};
|
|
86
86
|
}, undefined, "flex w-full era-interactive text-body text-fg placeholder:text-muted", {
|
|
@@ -118,18 +118,18 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
118
118
|
* - `md` (default) — THE field, and the pairing an md bar's md content
|
|
119
119
|
* expects. Its --era-field-px is glyph-advance derived: the padding a
|
|
120
120
|
* STRING of text wants, not a single centred glyph.
|
|
121
|
-
* - `
|
|
121
|
+
* - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
|
|
122
122
|
* SMALLEST tier that can hold body text at all: its inset is
|
|
123
|
-
* (h-
|
|
124
|
-
* below (h-
|
|
123
|
+
* (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
|
|
124
|
+
* below (h-icon) IS the text size and has none left. For compact chrome —
|
|
125
125
|
* a filter that sits level with an xxs icon button, a title bar that
|
|
126
126
|
* shouldn't outweigh the document under it. Side padding is
|
|
127
|
-
* --era-pill-
|
|
127
|
+
* --era-pill-px, exactly what Badge and Chip use, so a field and a pill
|
|
128
128
|
* on this tier read as one family.
|
|
129
129
|
*/
|
|
130
130
|
size: {
|
|
131
|
-
md: "h-(--era-h-
|
|
132
|
-
xxs: "h-(--era-h-
|
|
131
|
+
md: "h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)";
|
|
132
|
+
xxs: "h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)";
|
|
133
133
|
};
|
|
134
134
|
/**
|
|
135
135
|
* Height OVERRIDES, for the fields that are not their tier's height. No
|
|
@@ -137,7 +137,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
137
137
|
*/
|
|
138
138
|
height: {
|
|
139
139
|
full: "h-full";
|
|
140
|
-
auto: "h-auto min-h-(--era-h-
|
|
140
|
+
auto: "h-auto min-h-(--era-h-control)";
|
|
141
141
|
};
|
|
142
142
|
/**
|
|
143
143
|
* Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
|
|
@@ -148,7 +148,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
148
148
|
* below.
|
|
149
149
|
*/
|
|
150
150
|
pad: {
|
|
151
|
-
trailing: "ps-(--era-field-px) pe-(--era-
|
|
151
|
+
trailing: "ps-(--era-field-px) pe-(--era-chip-inset-control)";
|
|
152
152
|
none: "px-0";
|
|
153
153
|
};
|
|
154
154
|
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
@@ -186,18 +186,18 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
186
186
|
* - `md` (default) — THE field, and the pairing an md bar's md content
|
|
187
187
|
* expects. Its --era-field-px is glyph-advance derived: the padding a
|
|
188
188
|
* STRING of text wants, not a single centred glyph.
|
|
189
|
-
* - `
|
|
189
|
+
* - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
|
|
190
190
|
* SMALLEST tier that can hold body text at all: its inset is
|
|
191
|
-
* (h-
|
|
192
|
-
* below (h-
|
|
191
|
+
* (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
|
|
192
|
+
* below (h-icon) IS the text size and has none left. For compact chrome —
|
|
193
193
|
* a filter that sits level with an xxs icon button, a title bar that
|
|
194
194
|
* shouldn't outweigh the document under it. Side padding is
|
|
195
|
-
* --era-pill-
|
|
195
|
+
* --era-pill-px, exactly what Badge and Chip use, so a field and a pill
|
|
196
196
|
* on this tier read as one family.
|
|
197
197
|
*/
|
|
198
198
|
size: {
|
|
199
|
-
md: "h-(--era-h-
|
|
200
|
-
xxs: "h-(--era-h-
|
|
199
|
+
md: "h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)";
|
|
200
|
+
xxs: "h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)";
|
|
201
201
|
};
|
|
202
202
|
/**
|
|
203
203
|
* Height OVERRIDES, for the fields that are not their tier's height. No
|
|
@@ -205,7 +205,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
205
205
|
*/
|
|
206
206
|
height: {
|
|
207
207
|
full: "h-full";
|
|
208
|
-
auto: "h-auto min-h-(--era-h-
|
|
208
|
+
auto: "h-auto min-h-(--era-h-control)";
|
|
209
209
|
};
|
|
210
210
|
/**
|
|
211
211
|
* Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
|
|
@@ -216,7 +216,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
|
|
|
216
216
|
* below.
|
|
217
217
|
*/
|
|
218
218
|
pad: {
|
|
219
|
-
trailing: "ps-(--era-field-px) pe-(--era-
|
|
219
|
+
trailing: "ps-(--era-field-px) pe-(--era-chip-inset-control)";
|
|
220
220
|
none: "px-0";
|
|
221
221
|
};
|
|
222
222
|
}, undefined>>;
|
|
@@ -53,18 +53,18 @@ export const inputVariants = tv({
|
|
|
53
53
|
* - `md` (default) — THE field, and the pairing an md bar's md content
|
|
54
54
|
* expects. Its --era-field-px is glyph-advance derived: the padding a
|
|
55
55
|
* STRING of text wants, not a single centred glyph.
|
|
56
|
-
* - `
|
|
56
|
+
* - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
|
|
57
57
|
* SMALLEST tier that can hold body text at all: its inset is
|
|
58
|
-
* (h-
|
|
59
|
-
* below (h-
|
|
58
|
+
* (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
|
|
59
|
+
* below (h-icon) IS the text size and has none left. For compact chrome —
|
|
60
60
|
* a filter that sits level with an xxs icon button, a title bar that
|
|
61
61
|
* shouldn't outweigh the document under it. Side padding is
|
|
62
|
-
* --era-pill-
|
|
62
|
+
* --era-pill-px, exactly what Badge and Chip use, so a field and a pill
|
|
63
63
|
* on this tier read as one family.
|
|
64
64
|
*/
|
|
65
65
|
size: {
|
|
66
|
-
md: 'h-(--era-h-
|
|
67
|
-
xxs: 'h-(--era-h-
|
|
66
|
+
md: 'h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)',
|
|
67
|
+
xxs: 'h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)'
|
|
68
68
|
},
|
|
69
69
|
/**
|
|
70
70
|
* Height OVERRIDES, for the fields that are not their tier's height. No
|
|
@@ -73,12 +73,12 @@ export const inputVariants = tv({
|
|
|
73
73
|
height: {
|
|
74
74
|
// h-full, NOT a tier height: a bare input's container IS the field, so it
|
|
75
75
|
// takes that container's height. Keeping a tier height here made a bare
|
|
76
|
-
// input inside an h-
|
|
76
|
+
// input inside an h-control Bar overflow it by the bar's border — a −0.5px
|
|
77
77
|
// gap, which is the even-gap law failing by a hair rather than obviously.
|
|
78
78
|
full: 'h-full',
|
|
79
79
|
// h-auto is load-bearing — it is what outranks the tier's own height so
|
|
80
80
|
// the field can grow with its content (Textarea).
|
|
81
|
-
auto: 'h-auto min-h-(--era-h-
|
|
81
|
+
auto: 'h-auto min-h-(--era-h-control)'
|
|
82
82
|
},
|
|
83
83
|
/**
|
|
84
84
|
* Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
|
|
@@ -89,7 +89,7 @@ export const inputVariants = tv({
|
|
|
89
89
|
* below.
|
|
90
90
|
*/
|
|
91
91
|
pad: {
|
|
92
|
-
trailing: 'ps-(--era-field-px) pe-(--era-
|
|
92
|
+
trailing: 'ps-(--era-field-px) pe-(--era-chip-inset-control)',
|
|
93
93
|
none: 'px-0'
|
|
94
94
|
}
|
|
95
95
|
},
|
package/dist/ui/kv/kv.svelte
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
// shrink-0 + nowrap like Badge/Chip: the overflow-hidden here is for the
|
|
25
25
|
// key cell's squared corners, not a licence to crush — squeezed, this pill
|
|
26
26
|
// clipped its value instead of bleeding it, which is quieter but no truer.
|
|
27
|
-
'inline-flex h-(--era-h-
|
|
27
|
+
'inline-flex h-(--era-h-pill) shrink-0 items-center overflow-hidden rounded-(--era-rd-pill) bg-fill font-mono text-body era-text-trim leading-none whitespace-nowrap shadow-(--era-shadow)',
|
|
28
28
|
className
|
|
29
29
|
)}
|
|
30
30
|
{...restProps}
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
actually runs — see era-token-ink. Stretching gives that block a full-
|
|
36
36
|
height box for align-content to centre the trimmed line in. -->
|
|
37
37
|
<span
|
|
38
|
-
class="era-token-ink min-w-(--era-h-
|
|
38
|
+
class="era-token-ink min-w-(--era-h-pill) self-stretch px-(--era-inset-chip) text-muted tabular-nums"
|
|
39
39
|
>{value}</span
|
|
40
40
|
>
|
|
41
41
|
</span>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<LinkPreview.Content
|
|
16
16
|
bind:ref
|
|
17
17
|
class={cn(
|
|
18
|
-
'z-50 max-w-xs rounded-(--era-rd-
|
|
18
|
+
'z-50 max-w-xs rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-inset-control) text-body shadow-(--era-shadow-lg) glass-blur',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
{sideOffset}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
bind:ref
|
|
15
15
|
bind:checked
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex h-(--era-h-
|
|
17
|
+
'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
// floating menu, like the context menu it should match: full radius, a
|
|
30
30
|
// gutter of air, shadow doing the separating.
|
|
31
31
|
class={cn(
|
|
32
|
-
'z-50 w-max min-w-(--bits-menubar-menu-anchor-width) overflow-hidden rounded-(--era-rd-
|
|
32
|
+
'z-50 w-max min-w-(--bits-menubar-menu-anchor-width) overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
|
|
33
33
|
className
|
|
34
34
|
)}
|
|
35
35
|
{sideOffset}
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
<Menubar.GroupHeading
|
|
13
13
|
bind:ref
|
|
14
|
-
class={cn(
|
|
14
|
+
class={cn(
|
|
15
|
+
'flex h-(--era-h-control) items-center px-(--era-inset-control) text-body text-muted',
|
|
16
|
+
className
|
|
17
|
+
)}
|
|
15
18
|
{...restProps}
|
|
16
19
|
/>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<Menubar.Item
|
|
14
14
|
bind:ref
|
|
15
15
|
class={cn(
|
|
16
|
-
'flex h-(--era-h-
|
|
16
|
+
'flex h-(--era-h-control) cursor-pointer items-center gap-(--era-gap) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
{...restProps}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<Menubar.RadioItem
|
|
9
9
|
bind:ref
|
|
10
10
|
class={cn(
|
|
11
|
-
'flex h-(--era-h-
|
|
11
|
+
'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
|
|
12
12
|
className
|
|
13
13
|
)}
|
|
14
14
|
{...restProps}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<Menubar.Root
|
|
9
9
|
bind:ref
|
|
10
10
|
class={cn(
|
|
11
|
-
'flex h-(--era-h-
|
|
11
|
+
'flex h-(--era-h-bar) items-center rounded-(--era-rd-bar) bg-(--era-surface-bg) px-(--era-gap) shadow-(--era-shadow)',
|
|
12
12
|
className
|
|
13
13
|
)}
|
|
14
14
|
{...restProps}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<Menubar.SubContent
|
|
16
16
|
bind:ref
|
|
17
17
|
class={cn(
|
|
18
|
-
'z-50 w-max overflow-hidden rounded-(--era-rd-
|
|
18
|
+
'z-50 w-max overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
{sideOffset}
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
<Menubar.SubTrigger
|
|
15
15
|
bind:ref
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex h-(--era-h-
|
|
17
|
+
'flex h-(--era-h-control) cursor-pointer items-center justify-between gap-(--era-icon-inset-chip) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[state=open]:bg-hover',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
21
21
|
>
|
|
22
22
|
{@render children?.()}
|
|
23
|
-
<ChevronRight class="size-(--era-h-
|
|
23
|
+
<ChevronRight class="size-(--era-h-icon) text-muted" />
|
|
24
24
|
</Menubar.SubTrigger>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<Menubar.Trigger
|
|
14
14
|
bind:ref
|
|
15
15
|
class={cn(
|
|
16
|
-
'flex h-(--era-h-
|
|
16
|
+
'flex h-(--era-h-control) items-center gap-(--era-gap) rounded-(--era-rd-control) px-(--era-inset-control) text-body text-fg hover:bg-(--era-highlight) focus:outline-none disabled:opacity-50 has-[svg]:gap-(--era-inset-control) data-[state=open]:rounded-b-none data-[state=open]:bg-hover',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
{...restProps}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{min}
|
|
21
21
|
{max}
|
|
22
22
|
class={cn(
|
|
23
|
-
'h-(--era-sp) w-full overflow-hidden rounded-(--era-rd-
|
|
23
|
+
'h-(--era-sp) w-full overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) shadow-(--era-shadow-well)',
|
|
24
24
|
className
|
|
25
25
|
)}
|
|
26
26
|
{...restProps}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
} = $props();
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
|
-
<!-- A raw icon Button (size="xxs" = h-
|
|
16
|
+
<!-- A raw icon Button (size="xxs" = h-pill, rd-xxs), a tight SQUARE. No
|
|
17
17
|
data-pane-control: it stays in the drag zone, so a press-and-drag moves the
|
|
18
18
|
pane while a clean click still closes (neodrag starts a drag only on
|
|
19
19
|
movement and suppresses the trailing click after a real drag). Its natural
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
xxs rather than the tighter `icon` size, which is what the handle's tier
|
|
24
24
|
asks for. The GLYPH is deliberately OFF the sub-tier ladder: sp+5, where the
|
|
25
|
-
ladder offers sp+4 (12px at dense, the xxs sub-tier) and the h-
|
|
25
|
+
ladder offers sp+4 (12px at dense, the xxs sub-tier) and the h-icon floor
|
|
26
26
|
(14px). Both were tried and both are wrong here by a pixel — 12 reads
|
|
27
27
|
visibly lighter than the reference terminal app's close button, 14 reads
|
|
28
28
|
heavier — and a close button is the one control in the chrome you must be
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
its content inside the flex column. -->
|
|
20
20
|
<div
|
|
21
21
|
bind:this={ref}
|
|
22
|
-
class={cn('min-h-0 flex-1 overflow-auto overscroll-contain p-(--era-pad-
|
|
22
|
+
class={cn('min-h-0 flex-1 overflow-auto overscroll-contain p-(--era-pad-card)', className)}
|
|
23
23
|
{...restProps}
|
|
24
24
|
>
|
|
25
25
|
{@render children?.()}
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
WHOLE top — up to the very top pixel — is draggable. data-pane-handle marks
|
|
29
29
|
it as the neodrag allow-zone. Transparent over the pane's rounded surface:
|
|
30
30
|
the TOP corners defer to the pane radius, while the BOTTOM corners round to
|
|
31
|
-
--era-rd-
|
|
31
|
+
--era-rd-control — so the inset divider curves up at the ends and the bar reads
|
|
32
32
|
as a long pill. The corners axis collapses the radius to 0 in square mode,
|
|
33
33
|
so it's flat there and pill-shaped only when rounded.
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
control ⊃ pill, not chip ⊃ icon: a title bar is the densest chrome in the library and
|
|
36
36
|
was a tier too short for it — 22px at dense against the 24 the reference
|
|
37
37
|
terminal app uses, with 14px controls where it uses 18. The pairing is what
|
|
38
|
-
carries that: content="xxs" puts the walls on --era-
|
|
38
|
+
carries that: content="xxs" puts the walls on --era-pill-inset-control (3/5/7/11),
|
|
39
39
|
which is the 3px that app hardcodes for exactly this bar. -->
|
|
40
40
|
<Bar
|
|
41
41
|
bind:ref
|