@signal9/era-ui 10.1.0 → 12.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/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 +5 -10
- 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 +2 -2
- 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 +2 -2
- 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/llm-shell/llm-shell.svelte +4 -4
- package/dist/apps/notes/notes.svelte +8 -8
- package/dist/dev/audit/audits/even-container-padding.js +2 -2
- package/dist/dev/audit/audits/single-glyph-square.js +2 -2
- package/dist/dev/audit-overlay.svelte +7 -7
- package/dist/docs/css-utilities.d.ts +31 -0
- package/dist/docs/css-utilities.js +141 -7
- package/dist/docs/quickstart.md +5 -5
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/llms-full.txt +359 -94
- package/dist/generated-docs/llms.txt +18 -7
- package/dist/generated-docs/manifest.json +355 -49
- package/dist/generated-docs/utilities.json +336 -41
- package/dist/generated-docs/utilities.md +341 -87
- 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 +117 -79
- package/dist/styles/themes.css +49 -42
- 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 +7 -7
- package/dist/ui/bar/bar.svelte.d.ts +15 -15
- package/dist/ui/button/button.svelte +1 -1
- 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 +7 -9
- 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/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
package/dist/os/pane.svelte
CHANGED
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
// outline-(--color-7) rather than `outline-7`, which Tailwind reads as a 7px
|
|
83
83
|
// outline WIDTH — the numeric colour scale collides with the width scale on
|
|
84
84
|
// border-* and outline-*, so those two always take the paren-var form here.
|
|
85
|
-
focused ? 'outline -outline-offset-1 outline-(--color-7)' : 'opacity-95 shadow-
|
|
85
|
+
focused ? 'outline -outline-offset-1 outline-(--color-7)' : 'opacity-95 shadow-sm',
|
|
86
86
|
pane.state === 'minimized' && 'hidden'
|
|
87
87
|
)}
|
|
88
88
|
>
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
from the edge against 5px above and below it — read as crowded because it
|
|
95
95
|
was. --era-inset-control is (h-control − text)/2, so the label now starts the same
|
|
96
96
|
distance in from the edge as it sits from the top. -->
|
|
97
|
-
<Pane.Handle class="gap-
|
|
97
|
+
<Pane.Handle class="gap-gutter pl-inset-control" center={pane.center}>
|
|
98
98
|
{#if pane.lead}
|
|
99
99
|
<!-- The app replaced the whole icon+title cluster. Its content lives in
|
|
100
100
|
the drag zone like the default one; anything interactive in it
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
{:else}
|
|
104
104
|
{#if pane.icon}
|
|
105
105
|
{@const Icon = pane.icon}
|
|
106
|
-
<Icon class="size-
|
|
106
|
+
<Icon class="size-icon shrink-0 text-muted" />
|
|
107
107
|
{/if}
|
|
108
108
|
<span class={cn('truncate text-body', focused ? 'text-bright' : 'text-muted')}
|
|
109
109
|
>{pane.title}</span
|
|
@@ -140,9 +140,7 @@
|
|
|
140
140
|
icon
|
|
141
141
|
size="pill"
|
|
142
142
|
tone={armed === 'minimize' ? 'warning' : armed === 'maximize' ? 'success' : 'destructive'}
|
|
143
|
-
class={armed === 'maximize'
|
|
144
|
-
? '[&_svg]:size-(--era-glyph-pill)'
|
|
145
|
-
: '[&_svg]:size-(--era-h-icon)'}
|
|
143
|
+
class={armed === 'maximize' ? '[&_svg]:size-glyph-pill' : '[&_svg]:size-icon'}
|
|
146
144
|
aria-label="Close (right-click minimizes, middle-click maximizes)"
|
|
147
145
|
onclick={() => pm.close(pane.id)}
|
|
148
146
|
oncontextmenu={(e: MouseEvent) => e.preventDefault()}
|
package/dist/os/taskbar.svelte
CHANGED
|
@@ -202,17 +202,12 @@
|
|
|
202
202
|
bind:this={ref}
|
|
203
203
|
bind:clientHeight={barHeight}
|
|
204
204
|
class={cn(
|
|
205
|
-
'absolute flex h-
|
|
205
|
+
'absolute flex h-bar items-center gap-gutter bg-elevated px-inset-chip shadow-lg glass-blur',
|
|
206
206
|
floating
|
|
207
|
-
? cn(
|
|
208
|
-
'inset-x-(--era-gap) rounded-(--era-rd-bar)',
|
|
209
|
-
position === 'top' ? 'top-(--era-gap)' : 'bottom-(--era-gap)'
|
|
210
|
-
)
|
|
207
|
+
? cn('inset-x-gutter rounded-bar', position === 'top' ? 'top-gutter' : 'bottom-gutter')
|
|
211
208
|
: cn(
|
|
212
209
|
'inset-x-0 border-divider-faded',
|
|
213
|
-
position === 'top'
|
|
214
|
-
? 'top-0 rounded-b-(--era-rd-bar) border-b'
|
|
215
|
-
: 'bottom-0 rounded-t-(--era-rd-bar) border-t'
|
|
210
|
+
position === 'top' ? 'top-0 rounded-b-bar border-b' : 'bottom-0 rounded-t-bar border-t'
|
|
216
211
|
),
|
|
217
212
|
LAYER.taskbar,
|
|
218
213
|
className
|
|
@@ -232,10 +227,10 @@
|
|
|
232
227
|
/>
|
|
233
228
|
|
|
234
229
|
{#if pinned.length}
|
|
235
|
-
<div class="flex shrink-0 items-center gap-
|
|
230
|
+
<div class="flex shrink-0 items-center gap-gutter">
|
|
236
231
|
{#each pinned as p (p.appId)}
|
|
237
232
|
<Button icon size="control" aria-label={p.title} onclick={() => pm.open(p.appId)}>
|
|
238
|
-
{#if p.icon}{@const Icon = p.icon}<Icon class="size-
|
|
233
|
+
{#if p.icon}{@const Icon = p.icon}<Icon class="size-icon" />{/if}
|
|
239
234
|
</Button>
|
|
240
235
|
{/each}
|
|
241
236
|
</div>
|
|
@@ -250,7 +245,7 @@
|
|
|
250
245
|
gap between the bar's other groups. -->
|
|
251
246
|
{#if tabPanes.length > 0}
|
|
252
247
|
<div
|
|
253
|
-
class="scrollbar-none flex max-w-[40%] min-w-0 shrink-0 items-center gap-
|
|
248
|
+
class="scrollbar-none flex max-w-[40%] min-w-0 shrink-0 items-center gap-gutter overflow-x-auto"
|
|
254
249
|
>
|
|
255
250
|
{#each tabPanes as win (win.id)}
|
|
256
251
|
<Button
|
|
@@ -273,7 +268,7 @@
|
|
|
273
268
|
win.state === 'minimized' && showWindows !== 'minimized' && 'opacity-60'
|
|
274
269
|
)}
|
|
275
270
|
>
|
|
276
|
-
{#if win.icon}{@const Icon = win.icon}<Icon class="size-
|
|
271
|
+
{#if win.icon}{@const Icon = win.icon}<Icon class="size-icon shrink-0" />{/if}
|
|
277
272
|
<span class="truncate">{win.title}</span>
|
|
278
273
|
</Button>
|
|
279
274
|
{/each}
|
|
@@ -284,7 +279,7 @@
|
|
|
284
279
|
once there's something to switch between (and only when the bar exposes
|
|
285
280
|
workspaces at all). -->
|
|
286
281
|
{#if showWorkspaces && pm.workspaces.length > 1}
|
|
287
|
-
<div class="flex shrink-0 items-center gap-
|
|
282
|
+
<div class="flex shrink-0 items-center gap-gutter">
|
|
288
283
|
{#each pm.workspaces as ws, i (ws.id)}
|
|
289
284
|
<Button
|
|
290
285
|
icon
|
|
@@ -301,7 +296,7 @@
|
|
|
301
296
|
{/if}
|
|
302
297
|
|
|
303
298
|
<!-- System tray -->
|
|
304
|
-
<div class="flex shrink-0 items-center gap-
|
|
299
|
+
<div class="flex shrink-0 items-center gap-gutter">
|
|
305
300
|
{@render end?.()}
|
|
306
301
|
<!-- The bell only exists while there's something unread — silent means
|
|
307
302
|
no dead chrome (the center stays reachable via onNotifications
|
|
@@ -309,7 +304,7 @@
|
|
|
309
304
|
{#if notif.unread > 0}
|
|
310
305
|
<div class="relative">
|
|
311
306
|
<Button icon size="control" aria-label="Notifications" onclick={onNotifications}>
|
|
312
|
-
<Bell class="size-
|
|
307
|
+
<Bell class="size-icon" />
|
|
313
308
|
</Button>
|
|
314
309
|
<span
|
|
315
310
|
class="absolute -top-0.5 -right-0.5 flex min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[0.65rem] leading-4 text-primary-fg"
|
|
@@ -336,7 +331,7 @@
|
|
|
336
331
|
<div
|
|
337
332
|
data-mode="touch"
|
|
338
333
|
class={cn(
|
|
339
|
-
'absolute right-
|
|
334
|
+
'absolute right-gutter bottom-[max(var(--era-gap),env(safe-area-inset-bottom))] sm:hidden',
|
|
340
335
|
LAYER.taskbar
|
|
341
336
|
)}
|
|
342
337
|
>
|
|
@@ -350,10 +345,10 @@
|
|
|
350
345
|
size="control"
|
|
351
346
|
tone="accent"
|
|
352
347
|
aria-label="Open command bar"
|
|
353
|
-
class="shadow-
|
|
348
|
+
class="shadow-lg"
|
|
354
349
|
onclick={() => commandBar?.focusInput()}
|
|
355
350
|
>
|
|
356
|
-
<Terminal class="size-
|
|
351
|
+
<Terminal class="size-icon" />
|
|
357
352
|
</Button>
|
|
358
353
|
</div>
|
|
359
354
|
{/if}
|
package/dist/os/toast.svelte
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const notif = getNotifications();
|
|
9
9
|
|
|
10
10
|
const accent: Record<AppNotification['tone'], string> = {
|
|
11
|
-
default: 'bg-
|
|
11
|
+
default: 'bg-highlight',
|
|
12
12
|
accent: 'bg-primary',
|
|
13
13
|
success: 'bg-success',
|
|
14
14
|
destructive: 'bg-destructive'
|
|
@@ -16,20 +16,15 @@
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<div
|
|
19
|
-
class="pointer-events-auto relative flex w-80 gap-
|
|
19
|
+
class="pointer-events-auto relative flex w-80 gap-inset-chip overflow-hidden rounded-bar bg-elevated p-card shadow-lg glass-blur"
|
|
20
20
|
>
|
|
21
|
-
<span
|
|
22
|
-
class={cn(
|
|
23
|
-
'absolute inset-y-(--era-panel-inset) left-(--era-panel-inset) w-1 rounded-full',
|
|
24
|
-
accent[n.tone]
|
|
25
|
-
)}
|
|
26
|
-
></span>
|
|
21
|
+
<span class={cn('absolute inset-y-menu left-menu w-1 rounded-full', accent[n.tone])}></span>
|
|
27
22
|
{#if n.icon}
|
|
28
23
|
{@const Icon = n.icon}
|
|
29
|
-
<Icon class="mt-0.5 size-
|
|
24
|
+
<Icon class="mt-0.5 size-chip shrink-0 text-muted" />
|
|
30
25
|
{/if}
|
|
31
26
|
<div class="min-w-0 flex-1">
|
|
32
|
-
<div class="flex items-start gap-
|
|
27
|
+
<div class="flex items-start gap-gutter">
|
|
33
28
|
<p class="min-w-0 flex-1 truncate text-body text-bright">{n.title}</p>
|
|
34
29
|
<!-- The dismiss family's ×: xxs tier, whose default glyph is the 12px
|
|
35
30
|
dismiss ink (the size class that sat on the <X> lost to the Button
|
|
@@ -46,7 +41,7 @@
|
|
|
46
41
|
</div>
|
|
47
42
|
{#if n.body}<p class="mt-0.5 text-body leading-body break-words text-muted">{n.body}</p>{/if}
|
|
48
43
|
{#if n.actions.length}
|
|
49
|
-
<div class="mt-
|
|
44
|
+
<div class="mt-inset-chip flex flex-wrap gap-gutter">
|
|
50
45
|
{#each n.actions as action (action.label)}
|
|
51
46
|
<Button
|
|
52
47
|
size="icon"
|
package/dist/os/toaster.svelte
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
desktop; each toast re-enables its own. -->
|
|
17
17
|
<div
|
|
18
18
|
class={cn(
|
|
19
|
-
'pointer-events-none absolute right-
|
|
19
|
+
'pointer-events-none absolute right-card bottom-(--era-h-bar) flex flex-col-reverse gap-inset-chip',
|
|
20
20
|
LAYER.toast,
|
|
21
21
|
className
|
|
22
22
|
)}
|
package/dist/styles/density.css
CHANGED
|
@@ -74,7 +74,6 @@
|
|
|
74
74
|
* --era-pad-content 2·so 16 / 22.5 / 30 / 48 — full content panels (docs sections)
|
|
75
75
|
*
|
|
76
76
|
* Whitespace share rises with mode: pad-md / h-control = 0.33 dense → 0.50 touch.
|
|
77
|
-
* --era-content-p is kept as an alias of --era-pad-content.
|
|
78
77
|
*
|
|
79
78
|
* IDENTITY USED AT NESTING SITES
|
|
80
79
|
* ==============================
|
|
@@ -312,7 +311,6 @@
|
|
|
312
311
|
--era-pad-content: calc(var(--era-so) * 2); /* 16/22.5/30/48 */
|
|
313
312
|
|
|
314
313
|
/* Content padding — alias of pad-lg (formerly 4·sp − 16 ≈ the same curve) */
|
|
315
|
-
--era-content-p: var(--era-pad-content);
|
|
316
314
|
}
|
|
317
315
|
|
|
318
316
|
/* -------------------------------------------------- */
|
package/dist/styles/index.css
CHANGED
|
@@ -491,6 +491,56 @@
|
|
|
491
491
|
--color-elevated: var(--era-surface-bg-elevated);
|
|
492
492
|
--color-highlight: var(--era-highlight);
|
|
493
493
|
--color-overlay: var(--era-overlay-bg);
|
|
494
|
+
/* THE SPACING SCALE — one entry per token, from which Tailwind derives the
|
|
495
|
+
* WHOLE directional family: p/px/py/pt/pr/pb/pl/ps/pe, every margin, gap and
|
|
496
|
+
* gap-x/y, inset/top/right/bottom/left, translate, and the sizing prefixes.
|
|
497
|
+
*
|
|
498
|
+
* These were hand-written `@utility` blocks, which could only ever cover the
|
|
499
|
+
* spellings someone remembered to write: `px-gutter` existed and `mt-gutter`
|
|
500
|
+
* did not, `p-inset-control` existed and `pl-inset-control` did not, so the
|
|
501
|
+
* library fell back to `mt-(--era-gap)` in exactly the places the named API
|
|
502
|
+
* was supposed to cover. One line here replaces twenty blocks and leaves no
|
|
503
|
+
* spelling missing.
|
|
504
|
+
*
|
|
505
|
+
* ONLY genuine spacing belongs here. The namespace is shared across
|
|
506
|
+
* h/w/p/m/gap, so a name registered here means the same length in ALL of
|
|
507
|
+
* them — true of a gap or an inset, false of a TIER HEIGHT. Tiers stay
|
|
508
|
+
* hand-written per prefix below, and the two vocabularies deliberately share
|
|
509
|
+
* no word: icon/pill/chip/control/bar are heights; gutter, card, panel,
|
|
510
|
+
* content, menu, field and the inset-* names are spacing. Registering a tier
|
|
511
|
+
* name here would silently make `px-control` mean 24px of side padding. */
|
|
512
|
+
--spacing-gutter: var(--era-gap);
|
|
513
|
+
--spacing-panel: var(--era-pad-panel);
|
|
514
|
+
--spacing-card: var(--era-pad-card);
|
|
515
|
+
--spacing-content: var(--era-pad-content);
|
|
516
|
+
--spacing-menu: var(--era-panel-inset);
|
|
517
|
+
--spacing-field: var(--era-field-px);
|
|
518
|
+
/* @use text-symmetric content padding — (tier − text)/2, the inset that
|
|
519
|
+
* vertically centres body text in its tier; px-inset-control is a text
|
|
520
|
+
* button's side padding, p-inset-control a code block's. */
|
|
521
|
+
--spacing-inset-pill: var(--era-inset-pill);
|
|
522
|
+
--spacing-inset-chip: var(--era-inset-chip);
|
|
523
|
+
--spacing-inset-control: var(--era-inset-control);
|
|
524
|
+
/* @use the concentric inset for a nested pair — (h-container − h-child)/2,
|
|
525
|
+
* the gap that makes a child control sit evenly inside its container, and
|
|
526
|
+
* the radius step that keeps their corners concentric. Named for the pair it
|
|
527
|
+
* joins: gap-icon-inset-control seats an icon in a control. */
|
|
528
|
+
--spacing-icon-inset-pill: var(--era-icon-inset-pill);
|
|
529
|
+
--spacing-icon-inset-chip: var(--era-icon-inset-chip);
|
|
530
|
+
--spacing-icon-inset-control: var(--era-icon-inset-control);
|
|
531
|
+
--spacing-icon-inset-bar: var(--era-icon-inset-bar);
|
|
532
|
+
--spacing-pill-inset-chip: var(--era-pill-inset-chip);
|
|
533
|
+
--spacing-pill-inset-control: var(--era-pill-inset-control);
|
|
534
|
+
--spacing-chip-inset-control: var(--era-chip-inset-control);
|
|
535
|
+
--spacing-chip-inset-bar: var(--era-chip-inset-bar);
|
|
536
|
+
/* @use the glyph size for a tier — the INK inside the box, not the box
|
|
537
|
+
* (size-glyph-pill is the dismiss × in a pill, size-pill is the pill). */
|
|
538
|
+
--spacing-glyph-icon: var(--era-glyph-icon);
|
|
539
|
+
--spacing-glyph-pill: var(--era-glyph-pill);
|
|
540
|
+
/* @use the recessed field fill — bg-field is a text input's resting well,
|
|
541
|
+
* bg-field-highlight its focused/hovered face. */
|
|
542
|
+
--color-field: var(--era-field-bg);
|
|
543
|
+
--color-field-highlight: var(--era-field-highlight);
|
|
494
544
|
/* Motion — bare transition utilities default to the motion axis, so
|
|
495
545
|
* `transition-colors` alone is on-design (0s at instant, longer at extra).
|
|
496
546
|
* ease-base/duration-base name the axis explicitly for overrides. */
|
|
@@ -539,12 +589,13 @@
|
|
|
539
589
|
/* ------------------------------------------------------------------ */
|
|
540
590
|
/* Named tier + spacing utilities */
|
|
541
591
|
/* */
|
|
542
|
-
/*
|
|
543
|
-
/* is
|
|
544
|
-
/*
|
|
545
|
-
/*
|
|
546
|
-
/*
|
|
547
|
-
/*
|
|
592
|
+
/* What is left here is what the SPACING SCALE above cannot express: */
|
|
593
|
+
/* a tier is a HEIGHT, and the spacing namespace is shared across */
|
|
594
|
+
/* h/w/p/m/gap, so registering `control` there would silently make */
|
|
595
|
+
/* px-control mean 24px of side padding. Tier names therefore get one */
|
|
596
|
+
/* hand-written block per prefix that needs them, and the two */
|
|
597
|
+
/* vocabularies share no word. Kept terse; the ladder itself is */
|
|
598
|
+
/* documented in density.css and on the /spacing page. */
|
|
548
599
|
/* ------------------------------------------------------------------ */
|
|
549
600
|
|
|
550
601
|
/* @use the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip
|
|
@@ -584,6 +635,46 @@
|
|
|
584
635
|
min-height: var(--era-h-bar);
|
|
585
636
|
}
|
|
586
637
|
|
|
638
|
+
/* @use a tier-sized WIDTH — the horizontal twin of the h-* ladder, for a rail or
|
|
639
|
+
* a column measured in tiers rather than in content. */
|
|
640
|
+
@utility w-icon {
|
|
641
|
+
width: var(--era-h-icon);
|
|
642
|
+
}
|
|
643
|
+
@utility w-pill {
|
|
644
|
+
width: var(--era-h-pill);
|
|
645
|
+
}
|
|
646
|
+
@utility w-chip {
|
|
647
|
+
width: var(--era-h-chip);
|
|
648
|
+
}
|
|
649
|
+
@utility w-control {
|
|
650
|
+
width: var(--era-h-control);
|
|
651
|
+
}
|
|
652
|
+
@utility w-bar {
|
|
653
|
+
width: var(--era-h-bar);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
/* @use a minimum tier WIDTH — the floor that makes a single-glyph control render
|
|
657
|
+
* as a square rather than a skinny pill (min-w-control on an icon button,
|
|
658
|
+
* min-w-pill on a badge). These could not exist before the ladder was renamed:
|
|
659
|
+
* the old rungs were sm/md/lg, and Tailwind's container scale already owns
|
|
660
|
+
* min-w-md and min-w-lg, so the names collided and every call site had to write
|
|
661
|
+
* min-w-(--era-h-control) by hand. icon/pill/chip/control/bar collide with nothing. */
|
|
662
|
+
@utility min-w-icon {
|
|
663
|
+
min-width: var(--era-h-icon);
|
|
664
|
+
}
|
|
665
|
+
@utility min-w-pill {
|
|
666
|
+
min-width: var(--era-h-pill);
|
|
667
|
+
}
|
|
668
|
+
@utility min-w-chip {
|
|
669
|
+
min-width: var(--era-h-chip);
|
|
670
|
+
}
|
|
671
|
+
@utility min-w-control {
|
|
672
|
+
min-width: var(--era-h-control);
|
|
673
|
+
}
|
|
674
|
+
@utility min-w-bar {
|
|
675
|
+
min-width: var(--era-h-bar);
|
|
676
|
+
}
|
|
677
|
+
|
|
587
678
|
/* @use a tier-sized square — size-icon is THE icon size (a Lucide glyph beside
|
|
588
679
|
* body text), size-control a square control face. */
|
|
589
680
|
@utility size-icon {
|
|
@@ -607,53 +698,6 @@
|
|
|
607
698
|
height: var(--era-h-bar);
|
|
608
699
|
}
|
|
609
700
|
|
|
610
|
-
/* @use the inter-element gap (sp/2) — flex/grid gap between sibling controls,
|
|
611
|
-
* and the matching gutter padding a scrollable list or rail owes its rows on
|
|
612
|
-
* all four sides (p-gutter on the rail = gap-gutter between its rows). */
|
|
613
|
-
@utility gap-gutter {
|
|
614
|
-
gap: var(--era-gap);
|
|
615
|
-
}
|
|
616
|
-
@utility p-gutter {
|
|
617
|
-
padding: var(--era-gap);
|
|
618
|
-
}
|
|
619
|
-
@utility px-gutter {
|
|
620
|
-
padding-inline: var(--era-gap);
|
|
621
|
-
}
|
|
622
|
-
@utility py-gutter {
|
|
623
|
-
padding-block: var(--era-gap);
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
/* @use text-symmetric content padding — (tier − text)/2, the inset that
|
|
627
|
-
* vertically centers body text in its tier; px-inset-control is a text button's
|
|
628
|
-
* side padding, p-inset-control a code block's. */
|
|
629
|
-
@utility p-inset-pill {
|
|
630
|
-
padding: var(--era-inset-pill);
|
|
631
|
-
}
|
|
632
|
-
@utility p-inset-chip {
|
|
633
|
-
padding: var(--era-inset-chip);
|
|
634
|
-
}
|
|
635
|
-
@utility p-inset-control {
|
|
636
|
-
padding: var(--era-inset-control);
|
|
637
|
-
}
|
|
638
|
-
@utility px-inset-pill {
|
|
639
|
-
padding-inline: var(--era-inset-pill);
|
|
640
|
-
}
|
|
641
|
-
@utility px-inset-chip {
|
|
642
|
-
padding-inline: var(--era-inset-chip);
|
|
643
|
-
}
|
|
644
|
-
@utility px-inset-control {
|
|
645
|
-
padding-inline: var(--era-inset-control);
|
|
646
|
-
}
|
|
647
|
-
@utility py-inset-pill {
|
|
648
|
-
padding-block: var(--era-inset-pill);
|
|
649
|
-
}
|
|
650
|
-
@utility py-inset-chip {
|
|
651
|
-
padding-block: var(--era-inset-chip);
|
|
652
|
-
}
|
|
653
|
-
@utility py-inset-control {
|
|
654
|
-
padding-block: var(--era-inset-control);
|
|
655
|
-
}
|
|
656
|
-
|
|
657
701
|
/* @use pill side padding — the wider-than-vertical horizontal breathing room
|
|
658
702
|
* badge/chip text wants (glyph-advance derived, ~2× the vertical inset). */
|
|
659
703
|
@utility px-pill {
|
|
@@ -662,24 +706,25 @@
|
|
|
662
706
|
@utility px-chip {
|
|
663
707
|
padding-inline: var(--era-chip-px);
|
|
664
708
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
* the named form of px-(--era-field-px). */
|
|
668
|
-
@utility px-field {
|
|
669
|
-
padding-inline: var(--era-field-px);
|
|
709
|
+
@utility pl-pill {
|
|
710
|
+
padding-left: var(--era-pill-px);
|
|
670
711
|
}
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
* and menu-adjacent chrome, p-card for cards/dialogs/popovers, p-content for
|
|
674
|
-
* full content panels. Grows super-linearly with density so whitespace holds
|
|
675
|
-
* its perceived share as controls loosen. */
|
|
676
|
-
@utility p-panel {
|
|
677
|
-
padding: var(--era-pad-panel);
|
|
712
|
+
@utility pr-pill {
|
|
713
|
+
padding-right: var(--era-pill-px);
|
|
678
714
|
}
|
|
679
|
-
@utility
|
|
680
|
-
padding: var(--era-
|
|
715
|
+
@utility pl-chip {
|
|
716
|
+
padding-left: var(--era-chip-px);
|
|
681
717
|
}
|
|
682
|
-
|
|
718
|
+
@utility pr-chip {
|
|
719
|
+
padding-right: var(--era-chip-px);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/* @use padding for a content panel that sits UNDER a section header row — the
|
|
723
|
+
* even-padding exception, and the reason it is not called p-section: it
|
|
724
|
+
* deliberately under-pays the block start. For an evenly padded content panel
|
|
725
|
+
* use p-section, which is the plain token.
|
|
726
|
+
*
|
|
727
|
+
* A content panel always follows a section header ROW, and that row already
|
|
683
728
|
* contributes its own slack: the heading's text sits in an h-bar bar, so there
|
|
684
729
|
* is (h-bar − text)/2 of empty bar under its glyphs before the panel even
|
|
685
730
|
* starts. Padding the panel evenly on top of that spends the space twice — the
|
|
@@ -688,7 +733,7 @@
|
|
|
688
733
|
*
|
|
689
734
|
* So the block-start pays only the REMAINDER. The target is the indent: the
|
|
690
735
|
* space under a heading should measure the same as the space beside the text,
|
|
691
|
-
* which is --era-content
|
|
736
|
+
* which is --era-pad-content. The header row already supplies (h-bar − text)/2 of
|
|
692
737
|
* it, so the panel adds what's left, and heading-to-paragraph reads equal to
|
|
693
738
|
* the paragraph's own inset. Subtracting one --era-gap (the previous rule) left
|
|
694
739
|
* the header's slack unaccounted for and the heading still detached.
|
|
@@ -696,16 +741,9 @@
|
|
|
696
741
|
* Both terms are density-derived, so the equality holds at every mode; the
|
|
697
742
|
* max() is the floor for a hypothetical mode where the row's slack would
|
|
698
743
|
* exceed the inset outright. */
|
|
699
|
-
@utility p-
|
|
700
|
-
padding: var(--era-content
|
|
701
|
-
padding-top: max(0px, calc(var(--era-content
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
/* @use menu-panel padding — the surface-owned inset (0 on flat, 2px on
|
|
705
|
-
* glass/bevel) that keeps row highlights inside a floating panel's frame;
|
|
706
|
-
* pairs with rounded-menu-item on the rows. */
|
|
707
|
-
@utility p-menu {
|
|
708
|
-
padding: var(--era-panel-inset);
|
|
744
|
+
@utility p-section {
|
|
745
|
+
padding: var(--era-pad-content);
|
|
746
|
+
padding-top: max(0px, calc(var(--era-pad-content) - (var(--era-h-bar) - var(--era-text)) / 2));
|
|
709
747
|
}
|
|
710
748
|
|
|
711
749
|
/* @use the motion axis as an explicit transition-duration — for the rare case
|
package/dist/styles/themes.css
CHANGED
|
@@ -335,39 +335,46 @@
|
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
/* -------------------------------------------------- */
|
|
338
|
-
/* Sand — dark (
|
|
338
|
+
/* Sand — dark (saturated warm amber, mint contrast) */
|
|
339
339
|
/* -------------------------------------------------- */
|
|
340
340
|
:root[data-theme='sand'],
|
|
341
341
|
[data-theme='sand'].dark {
|
|
342
342
|
color-scheme: dark;
|
|
343
343
|
|
|
344
|
-
--color-1: oklch(0.
|
|
345
|
-
--color-2: oklch(0.
|
|
346
|
-
--color-3: oklch(0.
|
|
347
|
-
--color-4: oklch(0.
|
|
348
|
-
--color-5: oklch(0.
|
|
349
|
-
--color-6: oklch(0.
|
|
350
|
-
--color-7: oklch(0.
|
|
351
|
-
--color-8: oklch(0.
|
|
352
|
-
--color-9: oklch(0.
|
|
353
|
-
--color-10: oklch(0.
|
|
354
|
-
--color-11: oklch(0.
|
|
355
|
-
--color-12: oklch(0.
|
|
344
|
+
--color-1: oklch(0.5 0.1 70);
|
|
345
|
+
--color-2: oklch(0.55 0.11 68);
|
|
346
|
+
--color-3: oklch(0.6 0.12 65);
|
|
347
|
+
--color-4: oklch(0.65 0.13 62);
|
|
348
|
+
--color-5: oklch(0.7 0.14 60);
|
|
349
|
+
--color-6: oklch(0.75 0.12 58);
|
|
350
|
+
--color-7: oklch(0.8 0.1 55);
|
|
351
|
+
--color-8: oklch(0.82 0.08 52);
|
|
352
|
+
--color-9: oklch(0.855 0.065 50);
|
|
353
|
+
--color-10: oklch(0.89 0.05 48);
|
|
354
|
+
--color-11: oklch(0.915 0.035 46);
|
|
355
|
+
--color-12: oklch(0.945 0.022 44);
|
|
356
356
|
|
|
357
357
|
--color-border: var(--color-5);
|
|
358
358
|
--color-surface: var(--color-2);
|
|
359
359
|
--color-hover: color-mix(in oklch, var(--color-3) 80%, var(--color-2));
|
|
360
360
|
--color-fg: var(--color-11);
|
|
361
361
|
|
|
362
|
+
/* Accent INK. Every one of these used to be var(--color-1), which read as
|
|
363
|
+
* near-black ink on a bright accent while the scale's floor was L 0.25. This
|
|
364
|
+
* scale bottoms out at L 0.5, so that spelling collapsed to 2.48:1 on
|
|
365
|
+
* success — and no step in the palette is dark enough to replace it. A
|
|
366
|
+
* literal, at the palette's own hue so it still reads as sand. */
|
|
367
|
+
--color-ink: oklch(0.24 0.03 60);
|
|
368
|
+
|
|
362
369
|
--color-primary: oklch(0.8 0.034 54);
|
|
363
|
-
--color-primary-fg: var(--color-
|
|
370
|
+
--color-primary-fg: var(--color-ink);
|
|
364
371
|
--color-primary-hover: color-mix(in oklch, var(--color-primary) 80%, var(--color-success));
|
|
365
372
|
--color-destructive: oklch(0.615 0.15 33);
|
|
366
373
|
--color-destructive-fg: var(--color-12);
|
|
367
374
|
--color-success: oklch(0.71 0.09 164);
|
|
368
|
-
--color-success-fg: var(--color-
|
|
375
|
+
--color-success-fg: var(--color-ink);
|
|
369
376
|
--color-warning: oklch(0.78 0.1 85);
|
|
370
|
-
--color-warning-fg: var(--color-
|
|
377
|
+
--color-warning-fg: var(--color-ink);
|
|
371
378
|
}
|
|
372
379
|
|
|
373
380
|
/* -------------------------------------------------- */
|
|
@@ -377,22 +384,22 @@
|
|
|
377
384
|
:root[data-theme='sand']:not(.dark) {
|
|
378
385
|
color-scheme: light;
|
|
379
386
|
|
|
380
|
-
--color-1: oklch(0.
|
|
381
|
-
--color-2: oklch(0.
|
|
382
|
-
--color-3: oklch(0.
|
|
383
|
-
--color-4: oklch(0.
|
|
384
|
-
--color-5: oklch(0.
|
|
385
|
-
--color-6: oklch(0.
|
|
386
|
-
--color-7: oklch(0.
|
|
387
|
-
--color-8: oklch(0.
|
|
388
|
-
--color-9: oklch(0.
|
|
389
|
-
--color-10: oklch(0.
|
|
390
|
-
--color-11: oklch(0.
|
|
391
|
-
--color-12: oklch(0.
|
|
387
|
+
--color-1: oklch(0.945 0.022 44);
|
|
388
|
+
--color-2: oklch(0.915 0.035 46);
|
|
389
|
+
--color-3: oklch(0.89 0.05 48);
|
|
390
|
+
--color-4: oklch(0.855 0.065 50);
|
|
391
|
+
--color-5: oklch(0.82 0.08 52);
|
|
392
|
+
--color-6: oklch(0.8 0.1 55);
|
|
393
|
+
--color-7: oklch(0.75 0.12 58);
|
|
394
|
+
--color-8: oklch(0.7 0.14 60);
|
|
395
|
+
--color-9: oklch(0.65 0.13 62);
|
|
396
|
+
--color-10: oklch(0.6 0.12 65);
|
|
397
|
+
--color-11: oklch(0.55 0.11 68);
|
|
398
|
+
--color-12: oklch(0.5 0.1 70);
|
|
392
399
|
|
|
393
400
|
--color-border: var(--color-5);
|
|
394
401
|
--color-surface: var(--color-2);
|
|
395
|
-
--color-hover: oklch(
|
|
402
|
+
--color-hover: color-mix(in oklch, var(--color-3) 80%, var(--color-2));
|
|
396
403
|
--color-fg: var(--color-11);
|
|
397
404
|
|
|
398
405
|
--color-primary: oklch(0.55 0.12 58);
|
|
@@ -410,22 +417,22 @@
|
|
|
410
417
|
[data-theme='sand'].light {
|
|
411
418
|
color-scheme: light;
|
|
412
419
|
|
|
413
|
-
--color-1: oklch(0.
|
|
414
|
-
--color-2: oklch(0.
|
|
415
|
-
--color-3: oklch(0.
|
|
416
|
-
--color-4: oklch(0.
|
|
417
|
-
--color-5: oklch(0.
|
|
418
|
-
--color-6: oklch(0.
|
|
419
|
-
--color-7: oklch(0.
|
|
420
|
-
--color-8: oklch(0.
|
|
421
|
-
--color-9: oklch(0.
|
|
422
|
-
--color-10: oklch(0.
|
|
423
|
-
--color-11: oklch(0.
|
|
424
|
-
--color-12: oklch(0.
|
|
420
|
+
--color-1: oklch(0.945 0.022 44);
|
|
421
|
+
--color-2: oklch(0.915 0.035 46);
|
|
422
|
+
--color-3: oklch(0.89 0.05 48);
|
|
423
|
+
--color-4: oklch(0.855 0.065 50);
|
|
424
|
+
--color-5: oklch(0.82 0.08 52);
|
|
425
|
+
--color-6: oklch(0.8 0.1 55);
|
|
426
|
+
--color-7: oklch(0.75 0.12 58);
|
|
427
|
+
--color-8: oklch(0.7 0.14 60);
|
|
428
|
+
--color-9: oklch(0.65 0.13 62);
|
|
429
|
+
--color-10: oklch(0.6 0.12 65);
|
|
430
|
+
--color-11: oklch(0.55 0.11 68);
|
|
431
|
+
--color-12: oklch(0.5 0.1 70);
|
|
425
432
|
|
|
426
433
|
--color-border: var(--color-5);
|
|
427
434
|
--color-surface: var(--color-2);
|
|
428
|
-
--color-hover: oklch(
|
|
435
|
+
--color-hover: color-mix(in oklch, var(--color-3) 80%, var(--color-2));
|
|
429
436
|
--color-fg: var(--color-11);
|
|
430
437
|
|
|
431
438
|
--color-primary: oklch(0.55 0.12 58);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<Accordion.Content
|
|
9
9
|
bind:ref
|
|
10
10
|
class={cn(
|
|
11
|
-
'overflow-hidden border-t border-divider-faded p-
|
|
11
|
+
'overflow-hidden border-t border-divider-faded p-content text-body leading-body text-muted',
|
|
12
12
|
className
|
|
13
13
|
)}
|
|
14
14
|
{...restProps}
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
<Accordion.Trigger
|
|
15
15
|
bind:ref
|
|
16
16
|
class={cn(
|
|
17
|
-
'flex h-
|
|
17
|
+
'flex h-control w-full items-center justify-between gap-icon-inset-chip rounded-control px-inset-control text-body text-fg hover:bg-highlight hover:shadow-highlight focus:outline-none disabled:opacity-50',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
21
21
|
>
|
|
22
22
|
{@render children?.()}
|
|
23
|
-
<ChevronDown class="size-
|
|
23
|
+
<ChevronDown class="size-icon text-muted" />
|
|
24
24
|
</Accordion.Trigger>
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<AlertDialog.Portal>
|
|
14
|
-
<AlertDialog.Overlay class="fixed inset-0 z-50 bg-
|
|
14
|
+
<AlertDialog.Overlay class="fixed inset-0 z-50 bg-overlay" />
|
|
15
15
|
<AlertDialog.Content
|
|
16
16
|
bind:ref
|
|
17
17
|
class={cn(
|
|
18
|
-
'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 gap-
|
|
18
|
+
'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 gap-gutter rounded-bar border border-divider bg-well p-card shadow-lg glass-blur',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
{...restProps}
|
|
@@ -10,10 +10,6 @@
|
|
|
10
10
|
}: PartProps<AspectRatio.RootProps> = $props();
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
|
-
<AspectRatio.Root
|
|
14
|
-
bind:ref
|
|
15
|
-
class={cn('overflow-hidden rounded-(--era-rd-control)', className)}
|
|
16
|
-
{...restProps}
|
|
17
|
-
>
|
|
13
|
+
<AspectRatio.Root bind:ref class={cn('overflow-hidden rounded-control', className)} {...restProps}>
|
|
18
14
|
{@render children?.()}
|
|
19
15
|
</AspectRatio.Root>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<Avatar.Fallback
|
|
14
14
|
bind:ref
|
|
15
15
|
class={cn(
|
|
16
|
-
'inline-flex size-full items-center justify-center bg-
|
|
16
|
+
'inline-flex size-full items-center justify-center bg-elevated text-body text-muted',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
{...restProps}
|