@signal9/era-ui 8.0.0 → 10.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 +3 -3
- 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 +2 -2
- package/dist/ai/confirmation/confirmation-args.svelte +2 -2
- package/dist/ai/confirmation/confirmation.svelte +4 -4
- package/dist/ai/context/context.svelte +2 -2
- 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 +3 -3
- package/dist/ai/conversations/conversations-group.svelte +1 -1
- package/dist/ai/conversations/conversations-item.svelte +10 -10
- 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 +5 -5
- 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 +2 -2
- package/dist/ai/prompt-input/prompt-input-attachments.svelte +5 -5
- package/dist/ai/prompt-input/prompt-input-submit.svelte +4 -4
- 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 +6 -6
- 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 +3 -3
- package/dist/ai/swarm/swarm-actions.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 +5 -5
- 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/bubble-toolbar.svelte +3 -3
- package/dist/apps/notes/editor/slash-menu.svelte +7 -5
- package/dist/apps/notes/notes.svelte +20 -20
- 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 +4 -4
- package/dist/generated-docs/button.md +1 -1
- package/dist/generated-docs/chip.md +1 -1
- package/dist/generated-docs/input.md +1 -1
- package/dist/generated-docs/llms-full.txt +102 -122
- package/dist/generated-docs/llms.txt +11 -12
- package/dist/generated-docs/manifest.json +55 -68
- package/dist/generated-docs/utilities.json +45 -57
- package/dist/generated-docs/utilities.md +87 -106
- package/dist/os/notification-center.svelte +7 -7
- package/dist/os/pane.svelte +9 -7
- package/dist/os/taskbar.svelte +14 -14
- package/dist/os/toast.svelte +5 -5
- 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 +28 -20
- package/dist/ui/bar/bar.svelte.d.ts +31 -31
- package/dist/ui/button/button.svelte +4 -4
- package/dist/ui/button/button.svelte.d.ts +1 -1
- package/dist/ui/button/index.d.ts +1 -1
- package/dist/ui/button/variants.d.ts +9 -12
- package/dist/ui/button/variants.js +24 -26
- 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 +22 -18
- package/dist/ui/chip/chip.svelte.d.ts +8 -8
- 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 +3 -3
- 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 +8 -3
- 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 +5 -5
- package/dist/ui/input/input.svelte.d.ts +2 -2
- package/dist/ui/input/textarea.svelte +1 -1
- package/dist/ui/input/variants.d.ts +24 -24
- package/dist/ui/input/variants.js +10 -10
- 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 +3 -3
- package/dist/ui/pane/pane-content.svelte +1 -1
- package/dist/ui/pane/pane-handle.svelte +5 -5
- 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 +2 -2
- 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
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
|
|
166
166
|
{#snippet iconPicker(note: Note)}
|
|
167
167
|
<Popover.Root bind:open={iconPickerOpen}>
|
|
168
|
-
<Popover.Trigger icon size="
|
|
168
|
+
<Popover.Trigger icon size="pill" aria-label="Change icon" title="Change icon">
|
|
169
169
|
{#if note.icon}
|
|
170
170
|
<span aria-hidden="true">{note.icon}</span>
|
|
171
171
|
{:else}
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
{#each row as glyph (glyph)}
|
|
180
180
|
<Button
|
|
181
181
|
icon
|
|
182
|
-
size="
|
|
182
|
+
size="control"
|
|
183
183
|
active={note.icon === glyph}
|
|
184
184
|
aria-label={glyph}
|
|
185
185
|
onclick={() => {
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
{/each}
|
|
195
195
|
{#if note.icon}
|
|
196
196
|
<Button
|
|
197
|
-
size="
|
|
197
|
+
size="chip"
|
|
198
198
|
class="w-full"
|
|
199
199
|
onclick={() => {
|
|
200
200
|
store.setIcon(note.id, null);
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
{#snippet titleField(note: Note, cls: string)}
|
|
220
220
|
<Input
|
|
221
221
|
reveal
|
|
222
|
-
size="
|
|
222
|
+
size="pill"
|
|
223
223
|
class={cls}
|
|
224
224
|
aria-label="Note title"
|
|
225
225
|
placeholder="Untitled"
|
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
>
|
|
266
266
|
<!-- Sidebar: filter + note list -->
|
|
267
267
|
<div class="flex w-56 shrink-0 flex-col border-r border-divider-faded">
|
|
268
|
-
<!-- content="
|
|
268
|
+
<!-- content="pill": 24/30/36/48 of chrome around an 18/20/22/26 field and
|
|
269
269
|
button, with Bar deriving the two-tier concentric inset. A notes sidebar
|
|
270
270
|
is chrome around a list; at the lg/md pairing it was a 32px bar over
|
|
271
271
|
24px rows and the chrome outweighed the content. This is the tier pair
|
|
@@ -277,17 +277,17 @@
|
|
|
277
277
|
centred in 23px and sat 2.5px from the top against a 3px wall. Outset
|
|
278
278
|
costs no layout, so the bar keeps its full tier height and every child
|
|
279
279
|
sits the wall's distance from all four edges. -->
|
|
280
|
-
<Bar size="
|
|
280
|
+
<Bar size="control" content="pill" divider class="rounded-none">
|
|
281
281
|
<Input
|
|
282
282
|
icon={Search}
|
|
283
|
-
size="
|
|
283
|
+
size="pill"
|
|
284
284
|
class="min-w-0 flex-1"
|
|
285
285
|
type="text"
|
|
286
286
|
placeholder="Filter…"
|
|
287
287
|
aria-label="Filter notes"
|
|
288
288
|
bind:value={query}
|
|
289
289
|
/>
|
|
290
|
-
<Button icon size="
|
|
290
|
+
<Button icon size="pill" aria-label="New note" title="New note" onclick={createNote}>
|
|
291
291
|
<Plus />
|
|
292
292
|
</Button>
|
|
293
293
|
</Bar>
|
|
@@ -295,7 +295,7 @@
|
|
|
295
295
|
{#if store.loading}
|
|
296
296
|
<div class="flex flex-col gap-gutter p-gutter">
|
|
297
297
|
{#each Array.from({ length: 5 }, (_, i) => i) as i (i)}
|
|
298
|
-
<Skeleton class="h-
|
|
298
|
+
<Skeleton class="h-control rounded-control" />
|
|
299
299
|
{/each}
|
|
300
300
|
</div>
|
|
301
301
|
{:else if visible.length === 0}
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
role="option" child of the listbox. A wrapper element there
|
|
323
323
|
would put a non-option between them and break the relationship
|
|
324
324
|
screen readers rely on.
|
|
325
|
-
rounded-
|
|
325
|
+
rounded-control, not rounded-menu-item: item-rd is the radius for a row
|
|
326
326
|
inside a PANEL (it subtracts the panel's frame inset). A list
|
|
327
327
|
row on a plain surface takes its own tier radius — the
|
|
328
328
|
conversations-rail pattern. -->
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
{#snippet child({ props })}
|
|
332
332
|
<div
|
|
333
333
|
{...props}
|
|
334
|
-
class="group/row flex h-
|
|
334
|
+
class="group/row flex h-control cursor-pointer items-center gap-(--era-pill-inset-control) rounded-control px-(--era-pill-inset-control) era-text-trim {current
|
|
335
335
|
? 'bg-hover text-bright shadow-(--era-shadow-pressed)'
|
|
336
336
|
: 'hover:bg-highlight hover:shadow-highlight'}"
|
|
337
337
|
role="option"
|
|
@@ -347,11 +347,11 @@
|
|
|
347
347
|
onRowKeydown(e);
|
|
348
348
|
}}
|
|
349
349
|
>
|
|
350
|
-
<span class="flex size-
|
|
350
|
+
<span class="flex size-pill shrink-0 items-center justify-center">
|
|
351
351
|
{#if note.icon}
|
|
352
352
|
{note.icon}
|
|
353
353
|
{:else}
|
|
354
|
-
<FileText class="size-(--era-
|
|
354
|
+
<FileText class="size-(--era-glyph-pill) text-muted" />
|
|
355
355
|
{/if}
|
|
356
356
|
</span>
|
|
357
357
|
|
|
@@ -370,11 +370,11 @@
|
|
|
370
370
|
{formatAge(note.updatedAt)}
|
|
371
371
|
</span>
|
|
372
372
|
<span
|
|
373
|
-
class="hidden shrink-0 items-center gap-(--era-
|
|
373
|
+
class="hidden shrink-0 items-center gap-(--era-pill-inset-control) group-hover/row:flex"
|
|
374
374
|
>
|
|
375
375
|
<Button
|
|
376
376
|
icon
|
|
377
|
-
size="
|
|
377
|
+
size="pill"
|
|
378
378
|
aria-label={note.pinned ? 'Unpin note' : 'Pin note'}
|
|
379
379
|
title={note.pinned ? 'Unpin note' : 'Pin note'}
|
|
380
380
|
active={note.pinned}
|
|
@@ -387,7 +387,7 @@
|
|
|
387
387
|
</Button>
|
|
388
388
|
<Button
|
|
389
389
|
icon
|
|
390
|
-
size="
|
|
390
|
+
size="pill"
|
|
391
391
|
tone="destructive"
|
|
392
392
|
aria-label="Delete note"
|
|
393
393
|
title="Delete note"
|
|
@@ -405,10 +405,10 @@
|
|
|
405
405
|
<ContextMenu.Content>
|
|
406
406
|
<ContextMenu.Item onSelect={() => store.togglePin(note.id)}>
|
|
407
407
|
{#if note.pinned}
|
|
408
|
-
<PinOff class="size-
|
|
408
|
+
<PinOff class="size-icon text-muted" />
|
|
409
409
|
Unpin note
|
|
410
410
|
{:else}
|
|
411
|
-
<Pin class="size-
|
|
411
|
+
<Pin class="size-icon text-muted" />
|
|
412
412
|
Pin note
|
|
413
413
|
{/if}
|
|
414
414
|
</ContextMenu.Item>
|
|
@@ -419,7 +419,7 @@
|
|
|
419
419
|
uses, not a direct delete: a destructive action should not
|
|
420
420
|
get easier to reach by arriving from a different gesture. -->
|
|
421
421
|
<ContextMenu.Item onSelect={() => (pendingDelete = note.id)}>
|
|
422
|
-
<Trash2 class="size-
|
|
422
|
+
<Trash2 class="size-icon text-destructive" />
|
|
423
423
|
Delete note
|
|
424
424
|
</ContextMenu.Item>
|
|
425
425
|
</ContextMenu.Content>
|
|
@@ -444,7 +444,7 @@
|
|
|
444
444
|
header (see the snippets below) lives in the pane bar's centre and
|
|
445
445
|
drawing it twice would title the document twice. -->
|
|
446
446
|
{#if !pane}
|
|
447
|
-
<Bar size="
|
|
447
|
+
<Bar size="control" content="pill" divider class="rounded-none">
|
|
448
448
|
{@render iconPicker(selected)}
|
|
449
449
|
{@render titleField(selected, 'min-w-0 flex-1')}
|
|
450
450
|
<!-- Fixed-width so the badge appearing and clearing never nudges the
|
|
@@ -80,7 +80,7 @@ export function tokenPx(el, name) {
|
|
|
80
80
|
}
|
|
81
81
|
/** The five tier heights, in px, in the element's density context. */
|
|
82
82
|
export function tiers(el) {
|
|
83
|
-
return ['--era-h-
|
|
83
|
+
return ['--era-h-icon', '--era-h-pill', '--era-h-chip', '--era-h-control', '--era-h-bar'].map((name) => ({
|
|
84
84
|
name,
|
|
85
85
|
px: tokenPx(el, name)
|
|
86
86
|
}));
|
|
@@ -12,7 +12,7 @@ import { BOUNDED_TIER_MAX } from '../../measure.js';
|
|
|
12
12
|
*
|
|
13
13
|
* That blind spot shipped: the Switch thumb rested one border-width too far
|
|
14
14
|
* right at BOTH ends, so the gap at the left end and at the right end differed
|
|
15
|
-
* by 2px (dense 5 vs 3, touch 9 vs 7). --era-
|
|
15
|
+
* by 2px (dense 5 vs 3, touch 9 vs 7). --era-icon-inset-chip is measured from the
|
|
16
16
|
* track's OUTER edge, but a translate-x starts from the CONTENT box inside the
|
|
17
17
|
* 1px border, so offsetting by the raw token added the border on one side and
|
|
18
18
|
* subtracted it on the other. Vertically it was always right, because
|
|
@@ -5,8 +5,8 @@ import { BOUNDED_TIER_MAX } from '../../measure.js';
|
|
|
5
5
|
*
|
|
6
6
|
* Rule 5: every element that can hold a single glyph carries a min-width equal to
|
|
7
7
|
* its tier height, so one character renders as a perfect square (or circle, once
|
|
8
|
-
* rounded) instead of a skinny vertical pill. Icon buttons take min-w-(--era-h-
|
|
9
|
-
* Badge, Chip and the KV value cell take min-w-(--era-h-
|
|
8
|
+
* rounded) instead of a skinny vertical pill. Icon buttons take min-w-(--era-h-control);
|
|
9
|
+
* Badge, Chip and the KV value cell take min-w-(--era-h-pill).
|
|
10
10
|
*
|
|
11
11
|
* Drop the min-width and nothing looks wrong until content happens to BE one
|
|
12
12
|
* character — a badge showing "1", a count that ticks from 10 down to 9 — and the
|
|
@@ -59,10 +59,10 @@
|
|
|
59
59
|
|
|
60
60
|
{#if dev && open}
|
|
61
61
|
<div
|
|
62
|
-
class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-
|
|
62
|
+
class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-control) bg-surface font-mono text-body shadow-[inset_0_0_0_0.5px_var(--color-border),var(--era-shadow)]"
|
|
63
63
|
>
|
|
64
64
|
<header
|
|
65
|
-
class="flex items-center gap-(--era-
|
|
65
|
+
class="flex items-center gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) shadow-[inset_0_-0.5px_0_0_var(--color-border)]"
|
|
66
66
|
>
|
|
67
67
|
<strong class="text-bright">audits</strong>
|
|
68
68
|
<span class="text-muted">
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
{@const enabled = registry.isEnabled(r.audit.id)}
|
|
82
82
|
<details open={r.issues.length > 0}>
|
|
83
83
|
<summary
|
|
84
|
-
class="flex cursor-pointer items-center gap-(--era-
|
|
84
|
+
class="flex cursor-pointer items-center gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) hover:bg-(--era-highlight)"
|
|
85
85
|
>
|
|
86
86
|
<input
|
|
87
87
|
type="checkbox"
|
|
@@ -95,13 +95,13 @@
|
|
|
95
95
|
</span>
|
|
96
96
|
</summary>
|
|
97
97
|
{#if r.issues.length === 0}
|
|
98
|
-
<p class="px-(--era-inset-
|
|
98
|
+
<p class="px-(--era-inset-chip) py-(--era-gap) text-muted">
|
|
99
99
|
{r.audit.description}
|
|
100
100
|
</p>
|
|
101
101
|
{:else}
|
|
102
102
|
{#each r.issues as issue, i (i)}
|
|
103
103
|
<button
|
|
104
|
-
class="flex w-full items-start gap-(--era-
|
|
104
|
+
class="flex w-full items-start gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) text-left hover:bg-(--era-highlight)"
|
|
105
105
|
onclick={() => highlight(issue.element)}
|
|
106
106
|
>
|
|
107
107
|
<span class="text-destructive">●</span>
|
|
@@ -114,9 +114,9 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
116
|
<footer
|
|
117
|
-
class="flex items-center gap-(--era-gap) px-(--era-inset-
|
|
117
|
+
class="flex items-center gap-(--era-gap) px-(--era-inset-chip) py-(--era-gap) text-muted shadow-[inset_0_0.5px_0_0_var(--color-border)]"
|
|
118
118
|
>
|
|
119
|
-
<kbd class="rounded-(--era-rd-
|
|
119
|
+
<kbd class="rounded-(--era-rd-icon) bg-hover px-(--era-inset-chip) text-fg">
|
|
120
120
|
{isMac ? '⌘' : 'ctrl'}⇧{key.toUpperCase()}
|
|
121
121
|
</kbd>
|
|
122
122
|
<span>toggle</span>
|
package/dist/dev/measure.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare const TOL = 0.5;
|
|
|
13
13
|
* that false positive: a Card reported "radius step 5 ≠ implied gap 32.5"
|
|
14
14
|
* because its 57px optical padding was read as if it were a tier inset.
|
|
15
15
|
*
|
|
16
|
-
* The tallest tier is --era-h-
|
|
16
|
+
* The tallest tier is --era-h-bar, which peaks at 64px on touch.
|
|
17
17
|
*/
|
|
18
18
|
export declare const BOUNDED_TIER_MAX = 64;
|
|
19
19
|
/**
|
package/dist/dev/measure.js
CHANGED
|
@@ -34,7 +34,7 @@ export const TOL = 0.5;
|
|
|
34
34
|
* that false positive: a Card reported "radius step 5 ≠ implied gap 32.5"
|
|
35
35
|
* because its 57px optical padding was read as if it were a tier inset.
|
|
36
36
|
*
|
|
37
|
-
* The tallest tier is --era-h-
|
|
37
|
+
* The tallest tier is --era-h-bar, which peaks at 64px on touch.
|
|
38
38
|
*/
|
|
39
39
|
export const BOUNDED_TIER_MAX = 64;
|
|
40
40
|
/**
|
package/dist/docs/badge.md
CHANGED
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
|
|
16
16
|
- Non-interactive. For dismissible tokens use `Chip`. For labelled pairs use `KV`.
|
|
17
17
|
- Uses the `xxs` tier tokens (height, radius, inset).
|
|
18
|
-
- Inter-icon gap tightens to `--era-inset-
|
|
18
|
+
- Inter-icon gap tightens to `--era-inset-pill` when an SVG is present.
|
|
@@ -3,7 +3,7 @@ export interface CssUtility {
|
|
|
3
3
|
name: string;
|
|
4
4
|
/**
|
|
5
5
|
* Every class the doc comment governs. Usually one; a scale documented as a
|
|
6
|
-
* run of consecutive `@utility` blocks under a single comment (h-
|
|
6
|
+
* run of consecutive `@utility` blocks under a single comment (h-icon … h-bar)
|
|
7
7
|
* lists the whole ladder.
|
|
8
8
|
*/
|
|
9
9
|
names: string[];
|
|
@@ -65,7 +65,7 @@ function parseFile(file, source) {
|
|
|
65
65
|
const names = [match[2]];
|
|
66
66
|
let end = blockEnd(source, match.index + match[0].length - 1);
|
|
67
67
|
// One doc comment may govern a RUN of consecutive @utility blocks — a
|
|
68
|
-
// ladder like h-
|
|
68
|
+
// ladder like h-icon…h-bar shares one story, and repeating it five times
|
|
69
69
|
// would drown the docs. Attach every block that follows the previous one
|
|
70
70
|
// with nothing but whitespace in between; the next commented block never
|
|
71
71
|
// matches here because the outer pattern requires the comment.
|
|
@@ -100,8 +100,8 @@ export function parseUtilities(sources) {
|
|
|
100
100
|
.flatMap(([file, source]) => parseFile(file, source));
|
|
101
101
|
}
|
|
102
102
|
const INTRO = [
|
|
103
|
-
"era's styling API is pure class names — write `h-
|
|
104
|
-
'never the `h-(--era-h-
|
|
103
|
+
"era's styling API is pure class names — write `h-control rounded-control px-gutter shadow`,",
|
|
104
|
+
'never the `h-(--era-h-control)` var-class spelling. Everything below rides along',
|
|
105
105
|
'with the stylesheet and needs no import:',
|
|
106
106
|
'',
|
|
107
107
|
'```ts',
|
|
@@ -109,7 +109,7 @@ const INTRO = [
|
|
|
109
109
|
'```',
|
|
110
110
|
'',
|
|
111
111
|
'```svelte',
|
|
112
|
-
'<button class="h-
|
|
112
|
+
'<button class="h-control rounded-control px-inset-control shadow text-body">era styled</button>',
|
|
113
113
|
'```',
|
|
114
114
|
'',
|
|
115
115
|
'Alongside the `@utility` classes referenced below, era registers named theme',
|
|
@@ -119,8 +119,8 @@ const INTRO = [
|
|
|
119
119
|
'',
|
|
120
120
|
'| Stock-looking class | What it resolves to |',
|
|
121
121
|
'|---|---|',
|
|
122
|
-
'| `rounded-
|
|
123
|
-
'| `rounded-item` | menu-row radius, concentric inside a `rounded-
|
|
122
|
+
'| `rounded-icon/xxs/sm/md/lg` | the concentric radius ladder (collapses on `data-corners="square"`) |',
|
|
123
|
+
'| `rounded-menu-item` | menu-row radius, concentric inside a `rounded-control` panel |',
|
|
124
124
|
'| `shadow` / `shadow-lg` | resting control edge / floating panel chrome, per surface |',
|
|
125
125
|
'| `shadow-well` / `shadow-pressed` / `shadow-highlight` | recessed, pressed/latched, hover-material chrome |',
|
|
126
126
|
'| `bg-well` / `bg-elevated` / `bg-highlight` / `bg-overlay` | surface fills: resting, raised, transient feedback, modal scrim |',
|
|
@@ -130,9 +130,9 @@ const INTRO = [
|
|
|
130
130
|
'',
|
|
131
131
|
"Deliberate gaps: `w-*`/`min-w-*` tier names would shadow Tailwind's container",
|
|
132
132
|
'scale (`min-w-md` stays 28rem), and the concentric-inset tokens are advanced',
|
|
133
|
-
'enough to stay var-form — `min-w-(--era-h-
|
|
133
|
+
'enough to stay var-form — `min-w-(--era-h-control)` etc. remain the escape hatch.'
|
|
134
134
|
].join('\n');
|
|
135
|
-
/** `h-
|
|
135
|
+
/** `h-icon` for a single class, `h-icon · h-pill · … · h-bar` for a ladder. */
|
|
136
136
|
const label = (u) => u.names.join(' · ');
|
|
137
137
|
/** Renders the utilities reference — the generated `utilities.md` body. */
|
|
138
138
|
export function buildUtilitiesDoc(utilities) {
|
package/dist/docs/llms-txt.js
CHANGED
|
@@ -40,7 +40,7 @@ function orientation(origin) {
|
|
|
40
40
|
'lg = 4·sp bars, top-level containers 32 / 40 / 48 px',
|
|
41
41
|
'```',
|
|
42
42
|
'',
|
|
43
|
-
'Heights (`--era-h-*`), insets (`--era-inset-*`), radii (`--era-rd-*`), and concentric gaps (`--era-
|
|
43
|
+
'Heights (`--era-h-*`), insets (`--era-inset-*`), radii (`--era-rd-*`), and concentric gaps (`--era-icon-inset-chip`, `--era-pill-inset-control`, …) are all `calc()` chains off `--era-sp`. Never hard-code pixel values — setting `data-mode` on any ancestor re-derives the whole subtree. Type is the second density input (12 px at dense, 14 px above); the spacing atom moves with it.',
|
|
44
44
|
'',
|
|
45
45
|
'## Per-component docs',
|
|
46
46
|
'',
|