@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
package/dist/styles/prose.css
CHANGED
|
@@ -147,15 +147,15 @@
|
|
|
147
147
|
|
|
148
148
|
/* Code — inline chips take the xxs radius, blocks the lg one a Card uses. */
|
|
149
149
|
.era-notes-prose .tiptap code {
|
|
150
|
-
padding: 1px var(--era-inset-
|
|
151
|
-
border-radius: var(--era-rd-
|
|
150
|
+
padding: 1px var(--era-inset-pill);
|
|
151
|
+
border-radius: var(--era-rd-pill);
|
|
152
152
|
background: var(--era-surface-bg-elevated);
|
|
153
153
|
}
|
|
154
154
|
.era-notes-prose .tiptap pre {
|
|
155
155
|
overflow-x: auto;
|
|
156
156
|
margin: 0 0 var(--era-gap);
|
|
157
|
-
padding: var(--era-inset-
|
|
158
|
-
border-radius: var(--era-rd-
|
|
157
|
+
padding: var(--era-inset-control);
|
|
158
|
+
border-radius: var(--era-rd-bar);
|
|
159
159
|
background: var(--color-surface);
|
|
160
160
|
box-shadow: var(--era-shadow);
|
|
161
161
|
}
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
/* Blockquote */
|
|
204
204
|
.era-notes-prose .tiptap blockquote {
|
|
205
205
|
margin: 0 0 var(--era-gap);
|
|
206
|
-
padding-left: var(--era-inset-
|
|
206
|
+
padding-left: var(--era-inset-control);
|
|
207
207
|
border-left: 2px solid var(--era-divider-color);
|
|
208
208
|
color: var(--color-muted);
|
|
209
209
|
}
|
|
@@ -241,9 +241,9 @@
|
|
|
241
241
|
}
|
|
242
242
|
.era-notes-prose .tiptap .task-item input[type='checkbox'] {
|
|
243
243
|
flex-shrink: 0;
|
|
244
|
-
width: calc(var(--era-h-
|
|
245
|
-
height: calc(var(--era-h-
|
|
246
|
-
border-radius: var(--era-rd-
|
|
244
|
+
width: calc(var(--era-h-icon) - 4px);
|
|
245
|
+
height: calc(var(--era-h-icon) - 4px);
|
|
246
|
+
border-radius: var(--era-rd-icon);
|
|
247
247
|
background: var(--era-surface-bg-elevated);
|
|
248
248
|
box-shadow: var(--era-shadow-well);
|
|
249
249
|
appearance: none;
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
}
|
|
308
308
|
.era-notes-prose .tiptap .note-table td,
|
|
309
309
|
.era-notes-prose .tiptap .note-table th {
|
|
310
|
-
padding: var(--era-inset-
|
|
310
|
+
padding: var(--era-inset-chip) var(--era-inset-control);
|
|
311
311
|
border: 1px solid var(--era-divider-color);
|
|
312
312
|
text-align: left;
|
|
313
313
|
vertical-align: top;
|
|
@@ -325,8 +325,8 @@
|
|
|
325
325
|
/* Details (collapsible) */
|
|
326
326
|
.era-notes-prose .tiptap details {
|
|
327
327
|
margin: 0 0 var(--era-gap);
|
|
328
|
-
padding: var(--era-inset-
|
|
329
|
-
border-radius: var(--era-rd-
|
|
328
|
+
padding: var(--era-inset-chip) var(--era-inset-control);
|
|
329
|
+
border-radius: var(--era-rd-control);
|
|
330
330
|
background: var(--era-surface-bg-elevated);
|
|
331
331
|
box-shadow: var(--era-shadow);
|
|
332
332
|
}
|
|
@@ -343,7 +343,7 @@
|
|
|
343
343
|
.era-notes-prose .tiptap img {
|
|
344
344
|
max-width: 100%;
|
|
345
345
|
height: auto;
|
|
346
|
-
border-radius: var(--era-rd-
|
|
346
|
+
border-radius: var(--era-rd-control);
|
|
347
347
|
}
|
|
348
348
|
|
|
349
349
|
/*
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
|
|
162
162
|
/* Concentric radius for a row inside a panel: the panel's radius minus its
|
|
163
163
|
* inset. Declared on the universal selector (like the density ladder) so it
|
|
164
|
-
* re-derives against each element's own --era-rd-
|
|
164
|
+
* re-derives against each element's own --era-rd-control — density subtree
|
|
165
165
|
* overrides stay correct.
|
|
166
166
|
*
|
|
167
167
|
* NO SURFACE GATE. This used to be multiplied by --era-item-rd-scale, which
|
|
@@ -172,13 +172,13 @@
|
|
|
172
172
|
* owns radii, globally, with no exceptions for a consumer to discover.
|
|
173
173
|
*
|
|
174
174
|
* The gate was also redundant. The formula already answers both axes on its
|
|
175
|
-
* own: at data-corners="square" --era-rd-
|
|
175
|
+
* own: at data-corners="square" --era-rd-control collapses to 0, so this collapses
|
|
176
176
|
* with it; on flat --era-panel-inset is 0, so a flush full-width row simply
|
|
177
177
|
* takes the panel's own radius — which is the concentric answer for a row
|
|
178
178
|
* whose panel has no frame to nest inside. Flat menus keep their flush,
|
|
179
179
|
* full-width rows; only the highlight's corners now follow the axis. */
|
|
180
180
|
* {
|
|
181
|
-
--era-item-rd: max(0px, calc(var(--era-rd-
|
|
181
|
+
--era-item-rd: max(0px, calc(var(--era-rd-control) - var(--era-panel-inset)));
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
/*
|
|
@@ -110,8 +110,8 @@
|
|
|
110
110
|
/*
|
|
111
111
|
* SMALL-BUTTON SINK — the depression, scaled to the keycap.
|
|
112
112
|
*
|
|
113
|
-
* The 1px content sink is tuned for a default (h-
|
|
114
|
-
* the box. On the h-
|
|
113
|
+
* The 1px content sink is tuned for a default (h-control) button, where it is ~4% of
|
|
114
|
+
* the box. On the h-icon tier — size="xs" and size="icon", the 14px squares a
|
|
115
115
|
* pane's close X is built from — that same 1px is ~7% of the box and the glyph,
|
|
116
116
|
* which fills the button, visibly drops too far on press. Half the sink
|
|
117
117
|
* (proportional: 14/24 ≈ 0.58, rounded to 0.5) puts the small keycap's travel
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
<Accordion.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) px-(--era-inset-control) text-body text-fg hover:bg-(--era-highlight) hover:shadow-(--era-highlight-shadow) focus:outline-none disabled:opacity-50',
|
|
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
|
</Accordion.Trigger>
|
|
@@ -15,7 +15,7 @@
|
|
|
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-(--era-gap) rounded-(--era-rd-
|
|
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-(--era-gap) rounded-(--era-rd-bar) border border-divider bg-(--era-surface-bg) p-(--era-pad-card) shadow-(--era-shadow-lg) glass-blur',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
{...restProps}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<Avatar.Root
|
|
14
14
|
bind:ref
|
|
15
15
|
class={cn(
|
|
16
|
-
'inline-flex size-(--era-h-
|
|
16
|
+
'inline-flex size-(--era-h-control) shrink-0 items-center justify-center overflow-hidden rounded-full bg-(--era-surface-bg-elevated) text-fg shadow-(--era-shadow)',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
{...restProps}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
// that cost. A badge holding an icon must stay flex to lay the icon out
|
|
20
20
|
// beside the text, and keeps the general trim — its line-height:1 plus
|
|
21
21
|
// flex centring, which is the best available when the text is anonymous.
|
|
22
|
-
base: 'inline-flex h-(--era-h-
|
|
22
|
+
base: 'inline-flex h-(--era-h-pill) min-w-(--era-h-pill) shrink-0 items-center justify-center gap-(--era-gap) rounded-(--era-rd-pill) px-(--era-pill-px) font-mono text-body leading-none whitespace-nowrap has-[svg]:gap-(--era-inset-pill) era-text-trim not-has-[svg]:era-token-ink',
|
|
23
23
|
variants: {
|
|
24
24
|
tone: {
|
|
25
25
|
default: 'bg-fill text-fg',
|
|
@@ -6,7 +6,7 @@ export declare const badgeVariants: import("tailwind-variants").TVReturnType<{
|
|
|
6
6
|
success: "bg-success text-success-fg";
|
|
7
7
|
warning: "bg-warning text-warning-fg";
|
|
8
8
|
};
|
|
9
|
-
}, undefined, "inline-flex h-(--era-h-
|
|
9
|
+
}, undefined, "inline-flex h-(--era-h-pill) min-w-(--era-h-pill) shrink-0 items-center justify-center gap-(--era-gap) rounded-(--era-rd-pill) px-(--era-pill-px) font-mono text-body leading-none whitespace-nowrap has-[svg]:gap-(--era-inset-pill) era-text-trim not-has-[svg]:era-token-ink", {
|
|
10
10
|
tone: {
|
|
11
11
|
default: "bg-fill text-fg";
|
|
12
12
|
accent: "bg-primary text-primary-fg";
|
package/dist/ui/bar/bar.svelte
CHANGED
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
base: 'flex items-center era-text-trim',
|
|
14
14
|
variants: {
|
|
15
15
|
size: {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
chip: 'h-(--era-h-chip) rounded-(--era-rd-chip)',
|
|
17
|
+
control: 'h-(--era-h-control) rounded-(--era-rd-control)',
|
|
18
|
+
bar: 'h-(--era-h-bar) rounded-(--era-rd-bar)'
|
|
19
19
|
},
|
|
20
20
|
/**
|
|
21
21
|
* The tier of the CONTROLS inside, because that is what the bar's own
|
|
@@ -25,15 +25,15 @@
|
|
|
25
25
|
* had each restated the two-tier value by hand, and the geometry spec had
|
|
26
26
|
* been rewritten twice chasing which token they were restating.
|
|
27
27
|
*
|
|
28
|
-
* - `tier` (default) — one tier smaller, the pairing above.
|
|
29
|
-
* and
|
|
30
|
-
* - `
|
|
28
|
+
* - `tier` (default) — one tier smaller, the pairing above. chip⊃icon, control⊃chip
|
|
29
|
+
* and bar⊃control all equal sp/2, which is why one token covers every size.
|
|
30
|
+
* - `pill` — the compact pairing: pills and fields (a filter beside an
|
|
31
31
|
* xxs icon button, a title bar). Two tiers down, so the inset differs
|
|
32
32
|
* per size and comes from the compounds below.
|
|
33
33
|
*/
|
|
34
34
|
content: {
|
|
35
|
-
tier: 'gap-(--era-
|
|
36
|
-
|
|
35
|
+
tier: 'gap-(--era-icon-inset-chip) px-(--era-icon-inset-chip)',
|
|
36
|
+
pill: ''
|
|
37
37
|
},
|
|
38
38
|
/**
|
|
39
39
|
* The flush header bar capping a panel — Pane.Handle, Dialog.Header,
|
|
@@ -54,20 +54,28 @@
|
|
|
54
54
|
* both. Collapses to flat in square mode like every radius.
|
|
55
55
|
*/
|
|
56
56
|
divider: {
|
|
57
|
-
true: 'shrink-0 rounded-t-none rounded-b-(--era-rd-
|
|
57
|
+
true: 'shrink-0 rounded-t-none rounded-b-(--era-rd-control) [box-shadow:0_1px_0_var(--color-divider-faded)]',
|
|
58
58
|
false: ''
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
compoundVariants: [
|
|
62
|
-
//
|
|
63
|
-
{
|
|
64
|
-
|
|
62
|
+
// control ⊃ pill = (3sp − sp − 10)/2 — the named token.
|
|
63
|
+
{
|
|
64
|
+
size: 'control',
|
|
65
|
+
content: 'pill',
|
|
66
|
+
class: 'gap-(--era-pill-inset-control) px-(--era-pill-inset-control)'
|
|
67
|
+
},
|
|
68
|
+
// chip ⊃ pill — its own token, not the text inset it used to borrow. The two
|
|
65
69
|
// were the same number only while type was 14px at every density; dense's
|
|
66
|
-
// 12px broke the tie and left this pairing a pixel wide. (
|
|
70
|
+
// 12px broke the tie and left this pairing a pixel wide. (bar ⊃ pill has no
|
|
67
71
|
// token because nothing pairs a page header with pill-tier controls.)
|
|
68
|
-
{
|
|
72
|
+
{
|
|
73
|
+
size: 'chip',
|
|
74
|
+
content: 'pill',
|
|
75
|
+
class: 'gap-(--era-pill-inset-chip) px-(--era-pill-inset-chip)'
|
|
76
|
+
}
|
|
69
77
|
],
|
|
70
|
-
defaultVariants: { size: '
|
|
78
|
+
defaultVariants: { size: 'bar', content: 'tier', divider: false }
|
|
71
79
|
});
|
|
72
80
|
</script>
|
|
73
81
|
|
|
@@ -77,7 +85,7 @@
|
|
|
77
85
|
|
|
78
86
|
let {
|
|
79
87
|
ref = $bindable(null),
|
|
80
|
-
size = '
|
|
88
|
+
size = 'bar',
|
|
81
89
|
content = 'tier',
|
|
82
90
|
divider = false,
|
|
83
91
|
children,
|
|
@@ -86,13 +94,13 @@
|
|
|
86
94
|
}: HTMLAttributes<HTMLDivElement> & {
|
|
87
95
|
ref?: HTMLDivElement | null;
|
|
88
96
|
/** Height tier (scales with density). Default `lg` — a full toolbar. */
|
|
89
|
-
size?: '
|
|
97
|
+
size?: 'chip' | 'control' | 'bar';
|
|
90
98
|
/**
|
|
91
99
|
* Tier of the controls inside — drives the bar's padding and gap so they
|
|
92
|
-
* stay concentric to them. `tier` (default) is one tier smaller; `
|
|
93
|
-
* the compact pairing (
|
|
100
|
+
* stay concentric to them. `tier` (default) is one tier smaller; `pill` is
|
|
101
|
+
* the compact pairing (pills/fields in an sm or md bar).
|
|
94
102
|
*/
|
|
95
|
-
content?: 'tier' | '
|
|
103
|
+
content?: 'tier' | 'pill';
|
|
96
104
|
/** The flush cap-a-panel chrome: outset divider below, bottom rd-md. */
|
|
97
105
|
divider?: boolean;
|
|
98
106
|
children?: Snippet;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
2
2
|
size: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
chip: "h-(--era-h-chip) rounded-(--era-rd-chip)";
|
|
4
|
+
control: "h-(--era-h-control) rounded-(--era-rd-control)";
|
|
5
|
+
bar: "h-(--era-h-bar) rounded-(--era-rd-bar)";
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
8
|
* The tier of the CONTROLS inside, because that is what the bar's own
|
|
@@ -12,15 +12,15 @@ export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
|
12
12
|
* had each restated the two-tier value by hand, and the geometry spec had
|
|
13
13
|
* been rewritten twice chasing which token they were restating.
|
|
14
14
|
*
|
|
15
|
-
* - `tier` (default) — one tier smaller, the pairing above.
|
|
16
|
-
* and
|
|
17
|
-
* - `
|
|
15
|
+
* - `tier` (default) — one tier smaller, the pairing above. chip⊃icon, control⊃chip
|
|
16
|
+
* and bar⊃control all equal sp/2, which is why one token covers every size.
|
|
17
|
+
* - `pill` — the compact pairing: pills and fields (a filter beside an
|
|
18
18
|
* xxs icon button, a title bar). Two tiers down, so the inset differs
|
|
19
19
|
* per size and comes from the compounds below.
|
|
20
20
|
*/
|
|
21
21
|
content: {
|
|
22
|
-
tier: "gap-(--era-
|
|
23
|
-
|
|
22
|
+
tier: "gap-(--era-icon-inset-chip) px-(--era-icon-inset-chip)";
|
|
23
|
+
pill: "";
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
26
26
|
* The flush header bar capping a panel — Pane.Handle, Dialog.Header,
|
|
@@ -41,14 +41,14 @@ export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
|
41
41
|
* both. Collapses to flat in square mode like every radius.
|
|
42
42
|
*/
|
|
43
43
|
divider: {
|
|
44
|
-
true: "shrink-0 rounded-t-none rounded-b-(--era-rd-
|
|
44
|
+
true: "shrink-0 rounded-t-none rounded-b-(--era-rd-control) [box-shadow:0_1px_0_var(--color-divider-faded)]";
|
|
45
45
|
false: "";
|
|
46
46
|
};
|
|
47
47
|
}, undefined, "flex items-center era-text-trim", {
|
|
48
48
|
size: {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
chip: "h-(--era-h-chip) rounded-(--era-rd-chip)";
|
|
50
|
+
control: "h-(--era-h-control) rounded-(--era-rd-control)";
|
|
51
|
+
bar: "h-(--era-h-bar) rounded-(--era-rd-bar)";
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
54
|
* The tier of the CONTROLS inside, because that is what the bar's own
|
|
@@ -58,15 +58,15 @@ export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
|
58
58
|
* had each restated the two-tier value by hand, and the geometry spec had
|
|
59
59
|
* been rewritten twice chasing which token they were restating.
|
|
60
60
|
*
|
|
61
|
-
* - `tier` (default) — one tier smaller, the pairing above.
|
|
62
|
-
* and
|
|
63
|
-
* - `
|
|
61
|
+
* - `tier` (default) — one tier smaller, the pairing above. chip⊃icon, control⊃chip
|
|
62
|
+
* and bar⊃control all equal sp/2, which is why one token covers every size.
|
|
63
|
+
* - `pill` — the compact pairing: pills and fields (a filter beside an
|
|
64
64
|
* xxs icon button, a title bar). Two tiers down, so the inset differs
|
|
65
65
|
* per size and comes from the compounds below.
|
|
66
66
|
*/
|
|
67
67
|
content: {
|
|
68
|
-
tier: "gap-(--era-
|
|
69
|
-
|
|
68
|
+
tier: "gap-(--era-icon-inset-chip) px-(--era-icon-inset-chip)";
|
|
69
|
+
pill: "";
|
|
70
70
|
};
|
|
71
71
|
/**
|
|
72
72
|
* The flush header bar capping a panel — Pane.Handle, Dialog.Header,
|
|
@@ -87,14 +87,14 @@ export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
|
87
87
|
* both. Collapses to flat in square mode like every radius.
|
|
88
88
|
*/
|
|
89
89
|
divider: {
|
|
90
|
-
true: "shrink-0 rounded-t-none rounded-b-(--era-rd-
|
|
90
|
+
true: "shrink-0 rounded-t-none rounded-b-(--era-rd-control) [box-shadow:0_1px_0_var(--color-divider-faded)]";
|
|
91
91
|
false: "";
|
|
92
92
|
};
|
|
93
93
|
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
94
94
|
size: {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
chip: "h-(--era-h-chip) rounded-(--era-rd-chip)";
|
|
96
|
+
control: "h-(--era-h-control) rounded-(--era-rd-control)";
|
|
97
|
+
bar: "h-(--era-h-bar) rounded-(--era-rd-bar)";
|
|
98
98
|
};
|
|
99
99
|
/**
|
|
100
100
|
* The tier of the CONTROLS inside, because that is what the bar's own
|
|
@@ -104,15 +104,15 @@ export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
|
104
104
|
* had each restated the two-tier value by hand, and the geometry spec had
|
|
105
105
|
* been rewritten twice chasing which token they were restating.
|
|
106
106
|
*
|
|
107
|
-
* - `tier` (default) — one tier smaller, the pairing above.
|
|
108
|
-
* and
|
|
109
|
-
* - `
|
|
107
|
+
* - `tier` (default) — one tier smaller, the pairing above. chip⊃icon, control⊃chip
|
|
108
|
+
* and bar⊃control all equal sp/2, which is why one token covers every size.
|
|
109
|
+
* - `pill` — the compact pairing: pills and fields (a filter beside an
|
|
110
110
|
* xxs icon button, a title bar). Two tiers down, so the inset differs
|
|
111
111
|
* per size and comes from the compounds below.
|
|
112
112
|
*/
|
|
113
113
|
content: {
|
|
114
|
-
tier: "gap-(--era-
|
|
115
|
-
|
|
114
|
+
tier: "gap-(--era-icon-inset-chip) px-(--era-icon-inset-chip)";
|
|
115
|
+
pill: "";
|
|
116
116
|
};
|
|
117
117
|
/**
|
|
118
118
|
* The flush header bar capping a panel — Pane.Handle, Dialog.Header,
|
|
@@ -133,7 +133,7 @@ export declare const barVariants: import("tailwind-variants").TVReturnType<{
|
|
|
133
133
|
* both. Collapses to flat in square mode like every radius.
|
|
134
134
|
*/
|
|
135
135
|
divider: {
|
|
136
|
-
true: "shrink-0 rounded-t-none rounded-b-(--era-rd-
|
|
136
|
+
true: "shrink-0 rounded-t-none rounded-b-(--era-rd-control) [box-shadow:0_1px_0_var(--color-divider-faded)]";
|
|
137
137
|
false: "";
|
|
138
138
|
};
|
|
139
139
|
}, undefined>>;
|
|
@@ -142,13 +142,13 @@ import type { Snippet } from 'svelte';
|
|
|
142
142
|
type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
|
|
143
143
|
ref?: HTMLDivElement | null;
|
|
144
144
|
/** Height tier (scales with density). Default `lg` — a full toolbar. */
|
|
145
|
-
size?: '
|
|
145
|
+
size?: 'chip' | 'control' | 'bar';
|
|
146
146
|
/**
|
|
147
147
|
* Tier of the controls inside — drives the bar's padding and gap so they
|
|
148
|
-
* stay concentric to them. `tier` (default) is one tier smaller; `
|
|
149
|
-
* the compact pairing (
|
|
148
|
+
* stay concentric to them. `tier` (default) is one tier smaller; `pill` is
|
|
149
|
+
* the compact pairing (pills/fields in an sm or md bar).
|
|
150
150
|
*/
|
|
151
|
-
content?: 'tier' | '
|
|
151
|
+
content?: 'tier' | 'pill';
|
|
152
152
|
/** The flush cap-a-panel chrome: outset divider below, bottom rd-md. */
|
|
153
153
|
divider?: boolean;
|
|
154
154
|
children?: Snippet;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
let {
|
|
9
9
|
ref = $bindable(null),
|
|
10
10
|
tone = 'default',
|
|
11
|
-
size = '
|
|
11
|
+
size = 'control',
|
|
12
12
|
variant = 'filled',
|
|
13
13
|
active = false,
|
|
14
14
|
icon = false,
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
...restProps
|
|
21
21
|
}: Button.RootProps & {
|
|
22
22
|
tone?: 'default' | 'accent' | 'destructive' | 'success' | 'warning';
|
|
23
|
-
size?: '
|
|
23
|
+
size?: 'control' | 'chip' | 'pill' | 'icon';
|
|
24
24
|
variant?: 'filled' | 'link';
|
|
25
25
|
active?: boolean;
|
|
26
26
|
icon?: boolean;
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
`size` is exposed for the same reason: bevel sinks a pressed icon by a fixed
|
|
51
51
|
1px, which is ~4% of a default button but ~7% of a 14px icon button, so the
|
|
52
52
|
smallest tier reads as over-travelling. The surface halves the sink for
|
|
53
|
-
size="
|
|
53
|
+
size="icon"/"icon" (see bevel.css), and it can only do that if the size is on the
|
|
54
54
|
DOM. Geometry lives in tv() compound classes, which CSS cannot query.
|
|
55
55
|
-->
|
|
56
56
|
<Button.Root
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
-->
|
|
73
73
|
<span data-button-content class="inline-flex items-center justify-center [gap:inherit]">
|
|
74
74
|
{#if loading}
|
|
75
|
-
<LoaderCircle class="size-(--era-h-
|
|
75
|
+
<LoaderCircle class="size-(--era-h-icon) shrink-0 animate-spin" aria-hidden="true" />
|
|
76
76
|
{#if loadingLabel}<span class="sr-only">{loadingLabel}</span>{/if}
|
|
77
77
|
{/if}
|
|
78
78
|
{@render children?.()}
|
|
@@ -2,7 +2,7 @@ import type { Snippet } from 'svelte';
|
|
|
2
2
|
import { Button } from 'bits-ui';
|
|
3
3
|
type $$ComponentProps = Button.RootProps & {
|
|
4
4
|
tone?: 'default' | 'accent' | 'destructive' | 'success' | 'warning';
|
|
5
|
-
size?: '
|
|
5
|
+
size?: 'control' | 'chip' | 'pill' | 'icon';
|
|
6
6
|
variant?: 'filled' | 'link';
|
|
7
7
|
active?: boolean;
|
|
8
8
|
icon?: boolean;
|
|
@@ -3,7 +3,7 @@ export { Button };
|
|
|
3
3
|
export { buttonVariants } from './variants.js';
|
|
4
4
|
export interface ButtonVariants {
|
|
5
5
|
tone?: 'default' | 'accent' | 'destructive' | 'success' | 'warning';
|
|
6
|
-
size?: '
|
|
6
|
+
size?: 'control' | 'chip' | 'pill' | 'icon';
|
|
7
7
|
variant?: 'filled' | 'link';
|
|
8
8
|
icon?: boolean;
|
|
9
9
|
active?: boolean;
|
|
@@ -11,10 +11,9 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
11
11
|
warning: "";
|
|
12
12
|
};
|
|
13
13
|
size: {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
xs: "";
|
|
14
|
+
control: "";
|
|
15
|
+
chip: "";
|
|
16
|
+
pill: "";
|
|
18
17
|
icon: "";
|
|
19
18
|
};
|
|
20
19
|
icon: {
|
|
@@ -36,10 +35,9 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
36
35
|
warning: "";
|
|
37
36
|
};
|
|
38
37
|
size: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
xs: "";
|
|
38
|
+
control: "";
|
|
39
|
+
chip: "";
|
|
40
|
+
pill: "";
|
|
43
41
|
icon: "";
|
|
44
42
|
};
|
|
45
43
|
icon: {
|
|
@@ -61,10 +59,9 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
61
59
|
warning: "";
|
|
62
60
|
};
|
|
63
61
|
size: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
xs: "";
|
|
62
|
+
control: "";
|
|
63
|
+
chip: "";
|
|
64
|
+
pill: "";
|
|
68
65
|
icon: "";
|
|
69
66
|
};
|
|
70
67
|
icon: {
|
|
@@ -16,7 +16,7 @@ export const buttonVariants = tv({
|
|
|
16
16
|
link: 'inline-flex underline-offset-2 hover:underline'
|
|
17
17
|
},
|
|
18
18
|
tone: { default: '', accent: '', destructive: '', success: '', warning: '' },
|
|
19
|
-
size: {
|
|
19
|
+
size: { control: '', chip: '', pill: '', icon: '' },
|
|
20
20
|
icon: { true: '' },
|
|
21
21
|
active: { true: '' }
|
|
22
22
|
},
|
|
@@ -24,52 +24,51 @@ export const buttonVariants = tv({
|
|
|
24
24
|
// filled geometry
|
|
25
25
|
{
|
|
26
26
|
variant: 'filled',
|
|
27
|
-
size: '
|
|
28
|
-
class: 'h-(--era-h-
|
|
27
|
+
size: 'control',
|
|
28
|
+
class: 'h-(--era-h-control) min-w-(--era-h-control) rounded-(--era-rd-control)'
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
variant: 'filled',
|
|
32
|
-
size: '
|
|
33
|
-
class: 'h-(--era-h-
|
|
32
|
+
size: 'chip',
|
|
33
|
+
class: 'h-(--era-h-chip) min-w-(--era-h-chip) rounded-(--era-rd-chip)'
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
variant: 'filled',
|
|
37
|
-
size: '
|
|
38
|
-
class: 'h-(--era-h-
|
|
37
|
+
size: 'pill',
|
|
38
|
+
class: 'h-(--era-h-pill) min-w-(--era-h-pill) rounded-(--era-rd-pill)'
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
variant: 'filled',
|
|
42
|
-
size: '
|
|
43
|
-
class: 'h-(--era-h-
|
|
42
|
+
size: 'icon',
|
|
43
|
+
class: 'h-(--era-h-icon) min-w-(--era-h-icon) rounded-(--era-rd-icon)'
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
variant: 'filled',
|
|
47
47
|
size: 'icon',
|
|
48
|
-
class: 'h-(--era-h-
|
|
48
|
+
class: 'h-(--era-h-icon) min-w-(--era-h-icon) rounded-(--era-rd-icon)'
|
|
49
49
|
},
|
|
50
50
|
// filled insets; icon buttons go square instead. When an icon is present,
|
|
51
51
|
// gap widens to match the wall inset so the icon sits in rhythm with it.
|
|
52
52
|
{
|
|
53
53
|
variant: 'filled',
|
|
54
54
|
icon: false,
|
|
55
|
-
size: '
|
|
56
|
-
class: 'px-(--era-inset-
|
|
55
|
+
size: 'control',
|
|
56
|
+
class: 'px-(--era-inset-control) has-[svg]:gap-(--era-inset-control)'
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
variant: 'filled',
|
|
60
60
|
icon: false,
|
|
61
|
-
size: '
|
|
62
|
-
class: 'px-(--era-inset-
|
|
61
|
+
size: 'chip',
|
|
62
|
+
class: 'px-(--era-inset-chip) has-[svg]:gap-(--era-inset-chip)'
|
|
63
63
|
},
|
|
64
|
-
{ variant: 'filled', icon: false, size: '
|
|
65
|
-
{ variant: 'filled', icon: false, size: '
|
|
66
|
-
{ variant: 'filled', icon: false, size: 'icon', class: 'px-(--era-px-sm)' },
|
|
64
|
+
{ variant: 'filled', icon: false, size: 'pill', class: 'px-(--era-pill-px)' },
|
|
65
|
+
{ variant: 'filled', icon: false, size: 'icon', class: 'px-(--era-gap)' },
|
|
67
66
|
{ variant: 'filled', icon: true, class: 'aspect-square px-0' },
|
|
68
|
-
// Icon glyph sizing. The glyph is the icon tier (h-
|
|
67
|
+
// Icon glyph sizing. The glyph is the icon tier (h-icon) at default/sm —
|
|
69
68
|
// matching every text button's icon — but at the tight tiers, where the box
|
|
70
|
-
// itself nears h-
|
|
69
|
+
// itself nears h-icon, it steps below the legibility floor so it doesn't fill
|
|
71
70
|
// the box: sp+4 in xxs (pad 3), sp+2 in xs/icon (pad 2). Scoped to icon:true
|
|
72
|
-
// so text+icon buttons keep their h-
|
|
71
|
+
// so text+icon buttons keep their h-icon glyph. The descendant selector
|
|
73
72
|
// outranks the consumer's own size-* on the svg, so no call site changes.
|
|
74
73
|
//
|
|
75
74
|
// default/sm were DESCRIBED by the comment above but had no rule, so an
|
|
@@ -78,11 +77,10 @@ export const buttonVariants = tv({
|
|
|
78
77
|
// notes "new note" button rendered a 24px glyph in a 24px box — flush,
|
|
79
78
|
// no padding at all. Stating them makes the documented intent real and
|
|
80
79
|
// removes the dependency on every call site remembering.
|
|
81
|
-
{ icon: true, size: '
|
|
82
|
-
{ icon: true, size: '
|
|
83
|
-
{ icon: true, size: '
|
|
84
|
-
{ icon: true, size: '
|
|
85
|
-
{ icon: true, size: 'icon', class: '[&_svg]:size-(--era-icon-xs)' },
|
|
80
|
+
{ icon: true, size: 'control', class: '[&_svg]:size-(--era-h-icon)' },
|
|
81
|
+
{ icon: true, size: 'chip', class: '[&_svg]:size-(--era-h-icon)' },
|
|
82
|
+
{ icon: true, size: 'pill', class: '[&_svg]:size-(--era-glyph-pill)' },
|
|
83
|
+
{ icon: true, size: 'icon', class: '[&_svg]:size-(--era-glyph-icon)' },
|
|
86
84
|
// filled tones
|
|
87
85
|
{
|
|
88
86
|
variant: 'filled',
|
|
@@ -123,7 +121,7 @@ export const buttonVariants = tv({
|
|
|
123
121
|
defaultVariants: {
|
|
124
122
|
variant: 'filled',
|
|
125
123
|
tone: 'default',
|
|
126
|
-
size: '
|
|
124
|
+
size: 'control',
|
|
127
125
|
icon: false,
|
|
128
126
|
active: false
|
|
129
127
|
}
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
// shrink-0: a segmented control is its buttons' width — Badge/Chip's law
|
|
23
23
|
// one tier up. Squeezed, its rounded fill slid out from under the end
|
|
24
24
|
// buttons (measured 4px at touch on the board).
|
|
25
|
-
'flex shrink-0 gap-(--era-
|
|
25
|
+
'flex shrink-0 gap-(--era-icon-inset-chip)',
|
|
26
26
|
orientation === 'vertical'
|
|
27
|
-
? 'flex-col items-stretch p-(--era-
|
|
27
|
+
? 'flex-col items-stretch p-(--era-icon-inset-chip) [&>*]:justify-start'
|
|
28
28
|
: 'items-center',
|
|
29
29
|
className
|
|
30
30
|
)}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<Calendar.Day
|
|
9
9
|
bind:ref
|
|
10
10
|
class={cn(
|
|
11
|
-
'inline-flex size-(--era-h-
|
|
11
|
+
'inline-flex size-(--era-h-control) cursor-default items-center justify-center rounded-(--era-rd-control) text-body text-fg hover:bg-(--era-highlight) focus:outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[outside-month]:pointer-events-none data-[outside-month]:text-muted/40 data-[selected]:bg-hover data-[selected]:text-bright data-[unavailable]:text-muted data-[unavailable]:line-through',
|
|
12
12
|
className
|
|
13
13
|
)}
|
|
14
14
|
{...restProps}
|