@signal9/era-ui 8.0.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/artifact/artifact-close.svelte +1 -1
- package/dist/ai/artifact/artifact-content.svelte +1 -1
- package/dist/ai/artifact/artifact-header.svelte +1 -1
- package/dist/ai/artifact/artifact.svelte +1 -1
- package/dist/ai/chain-of-thought/chain-of-thought-step.svelte +1 -1
- package/dist/ai/chain-of-thought/chain-of-thought.svelte +1 -1
- package/dist/ai/checkpoint.svelte +1 -1
- package/dist/ai/confirmation/confirmation-args.svelte +2 -2
- package/dist/ai/confirmation/confirmation.svelte +4 -4
- package/dist/ai/context/context.svelte +1 -1
- package/dist/ai/conversation/conversation-content.svelte +1 -1
- package/dist/ai/conversation/conversation-empty-state.svelte +1 -1
- package/dist/ai/conversation/conversation-scroll-button.svelte +2 -2
- package/dist/ai/conversations/conversations-group.svelte +1 -1
- package/dist/ai/conversations/conversations-item.svelte +7 -7
- package/dist/ai/error-panel/error-panel.svelte +4 -4
- package/dist/ai/image.svelte +1 -1
- package/dist/ai/inline-citation/inline-citation.svelte +2 -2
- package/dist/ai/loader.svelte +1 -1
- package/dist/ai/message/message-branch-selector.svelte +3 -3
- package/dist/ai/message/message-content.svelte +1 -1
- package/dist/ai/message/message-usage.svelte +4 -4
- package/dist/ai/model-selector/model-selector.svelte +1 -1
- package/dist/ai/open-in-chat/open-in-chat.svelte +2 -2
- package/dist/ai/plan/plan-content.svelte +1 -1
- package/dist/ai/plan/plan-header.svelte +2 -2
- package/dist/ai/plan/plan.svelte +1 -1
- package/dist/ai/prompt-input/prompt-input-add-attachments.svelte +1 -1
- package/dist/ai/prompt-input/prompt-input-attachments.svelte +5 -5
- package/dist/ai/prompt-input/prompt-input-submit.svelte +3 -3
- package/dist/ai/prompt-input/prompt-input-textarea.svelte +3 -3
- package/dist/ai/prompt-input/prompt-input.svelte +1 -1
- package/dist/ai/queue/queue-item.svelte +1 -1
- package/dist/ai/queue/queue.svelte +1 -1
- package/dist/ai/reasoning/reasoning-trigger.svelte +1 -1
- package/dist/ai/response/response.svelte +2 -2
- package/dist/ai/run-status/run-status.svelte +5 -5
- package/dist/ai/runtime-feed/runtime-feed-item.svelte +1 -1
- package/dist/ai/sources/source.svelte +1 -1
- package/dist/ai/sources/sources-trigger.svelte +1 -1
- package/dist/ai/structured-value/structured-value.svelte +1 -1
- package/dist/ai/suggestion/suggestion.svelte +2 -2
- package/dist/ai/swarm/swarm-agent.svelte +1 -1
- package/dist/ai/swarm/swarm-artifact.svelte +1 -1
- package/dist/ai/swarm/swarm-barrier.svelte +1 -1
- package/dist/ai/swarm/swarm-barriers.svelte +1 -1
- package/dist/ai/swarm/swarm-counts.svelte +1 -1
- package/dist/ai/swarm/swarm-footer.svelte +1 -1
- package/dist/ai/swarm/swarm-grid.svelte +2 -2
- package/dist/ai/swarm/swarm-header.svelte +1 -1
- package/dist/ai/swarm/swarm-node.svelte +7 -7
- package/dist/ai/swarm/swarm-role.svelte +1 -1
- package/dist/ai/swarm/swarm-root.svelte +1 -1
- package/dist/ai/swarm/swarm-sandbox.svelte +3 -3
- package/dist/ai/swarm/swarm-tree.svelte +1 -1
- package/dist/ai/task/task-content.svelte +1 -1
- package/dist/ai/task/task-trigger.svelte +1 -1
- package/dist/ai/tool/tool-chip.svelte +2 -2
- package/dist/ai/tool/tool-exec.svelte +3 -3
- package/dist/ai/tool/tool-header.svelte +1 -1
- package/dist/ai/web-preview/web-preview.svelte +3 -3
- package/dist/ai/workflow/canvas.svelte +1 -1
- package/dist/ai/workflow/node.svelte +3 -3
- package/dist/apps/llm-shell/llm-shell.svelte +7 -7
- package/dist/apps/notes/editor/slash-menu.svelte +7 -5
- package/dist/apps/notes/notes.svelte +9 -9
- package/dist/dev/audit/audits/_helpers.js +1 -1
- package/dist/dev/audit/audits/resting-gap.js +1 -1
- package/dist/dev/audit/audits/single-glyph-square.js +2 -2
- package/dist/dev/audit-overlay.svelte +7 -7
- package/dist/dev/measure.d.ts +1 -1
- package/dist/dev/measure.js +1 -1
- package/dist/docs/badge.md +1 -1
- package/dist/docs/css-utilities.d.ts +1 -1
- package/dist/docs/css-utilities.js +8 -8
- package/dist/docs/llms-txt.js +1 -1
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/badge.md +1 -1
- package/dist/generated-docs/bar.md +2 -2
- package/dist/generated-docs/chip.md +1 -1
- package/dist/generated-docs/input.md +1 -1
- package/dist/generated-docs/llms-full.txt +99 -119
- package/dist/generated-docs/llms.txt +11 -12
- package/dist/generated-docs/manifest.json +52 -65
- package/dist/generated-docs/utilities.json +45 -57
- package/dist/generated-docs/utilities.md +87 -106
- package/dist/os/notification-center.svelte +6 -6
- package/dist/os/pane.svelte +7 -5
- package/dist/os/taskbar.svelte +10 -10
- package/dist/os/toast.svelte +3 -3
- package/dist/os/toaster.svelte +1 -1
- package/dist/styles/density.css +93 -67
- package/dist/styles/index.css +89 -101
- package/dist/styles/prose.css +12 -12
- package/dist/styles/surfaces/base.css +3 -3
- package/dist/styles/surfaces/bevel.css +2 -2
- package/dist/ui/accordion/accordion-trigger.svelte +2 -2
- package/dist/ui/alert-dialog/alert-dialog-content.svelte +1 -1
- package/dist/ui/aspect-ratio/aspect-ratio.svelte +1 -1
- package/dist/ui/avatar/avatar-root.svelte +1 -1
- package/dist/ui/badge/badge.svelte +1 -1
- package/dist/ui/badge/badge.svelte.d.ts +1 -1
- package/dist/ui/bar/bar.svelte +23 -15
- package/dist/ui/bar/bar.svelte.d.ts +26 -26
- package/dist/ui/button/button.svelte +1 -1
- package/dist/ui/button/variants.js +18 -18
- package/dist/ui/button-group/button-group.svelte +2 -2
- package/dist/ui/calendar/calendar-day.svelte +1 -1
- package/dist/ui/calendar/calendar-head-cell.svelte +1 -1
- package/dist/ui/calendar/calendar-header.svelte +1 -1
- package/dist/ui/calendar/calendar-next-button.svelte +1 -1
- package/dist/ui/calendar/calendar-prev-button.svelte +1 -1
- package/dist/ui/card/card.svelte +5 -5
- package/dist/ui/card/card.svelte.d.ts +4 -4
- package/dist/ui/checkbox/checkbox.svelte +3 -3
- package/dist/ui/chip/chip.svelte +14 -10
- package/dist/ui/chip/chip.svelte.d.ts +7 -7
- package/dist/ui/code-block/code-block.svelte +6 -6
- package/dist/ui/collapsible/collapsible-trigger.svelte +1 -1
- package/dist/ui/combobox/combobox-content.svelte +1 -1
- package/dist/ui/combobox/combobox-empty.svelte +4 -1
- package/dist/ui/combobox/combobox-group-heading.svelte +4 -1
- package/dist/ui/combobox/combobox-item.svelte +1 -1
- package/dist/ui/combobox/combobox-trigger.svelte +2 -2
- package/dist/ui/command/command-group-heading.svelte +4 -1
- package/dist/ui/command/command-item.svelte +1 -1
- package/dist/ui/command/command-link-item.svelte +1 -1
- package/dist/ui/command/command-root.svelte +1 -1
- package/dist/ui/command-bar/command-bar.svelte +16 -12
- package/dist/ui/context-menu/context-menu-checkbox-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-content.svelte +1 -1
- package/dist/ui/context-menu/context-menu-group-heading.svelte +4 -1
- package/dist/ui/context-menu/context-menu-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-radio-item.svelte +1 -1
- package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
- package/dist/ui/context-menu/context-menu-sub-trigger.svelte +2 -2
- package/dist/ui/copy-button/copy-button.svelte +2 -2
- package/dist/ui/cycle/cycle.svelte +1 -1
- package/dist/ui/date-field/date-field-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-content.svelte +1 -1
- package/dist/ui/date-picker/date-picker-day.svelte +1 -1
- package/dist/ui/date-picker/date-picker-head-cell.svelte +1 -1
- package/dist/ui/date-picker/date-picker-header.svelte +1 -1
- package/dist/ui/date-picker/date-picker-next-button.svelte +1 -1
- package/dist/ui/date-picker/date-picker-prev-button.svelte +1 -1
- package/dist/ui/date-picker/date-picker-segment.svelte +1 -1
- package/dist/ui/date-picker/date-picker-trigger.svelte +2 -2
- package/dist/ui/date-range-field/date-range-field-segment.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-day.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-head-cell.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-header.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-next-button.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-prev-button.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-segment.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-trigger.svelte +2 -2
- package/dist/ui/dialog/dialog-content.svelte +4 -2
- package/dist/ui/dialog/dialog-header.svelte +2 -2
- package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +4 -1
- package/dist/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
- package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +2 -2
- package/dist/ui/file-upload/file-upload.svelte +2 -2
- package/dist/ui/input/input.svelte +3 -3
- package/dist/ui/input/input.svelte.d.ts +1 -1
- package/dist/ui/input/textarea.svelte +1 -1
- package/dist/ui/input/variants.d.ts +24 -24
- package/dist/ui/input/variants.js +9 -9
- package/dist/ui/kv/kv.svelte +2 -2
- package/dist/ui/link-preview/link-preview-content.svelte +1 -1
- package/dist/ui/menubar/menubar-checkbox-item.svelte +1 -1
- package/dist/ui/menubar/menubar-content.svelte +1 -1
- package/dist/ui/menubar/menubar-group-heading.svelte +4 -1
- package/dist/ui/menubar/menubar-item.svelte +1 -1
- package/dist/ui/menubar/menubar-radio-item.svelte +1 -1
- package/dist/ui/menubar/menubar-root.svelte +1 -1
- package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
- package/dist/ui/menubar/menubar-sub-trigger.svelte +2 -2
- package/dist/ui/menubar/menubar-trigger.svelte +1 -1
- package/dist/ui/meter/meter.svelte +1 -1
- package/dist/ui/pagination/pagination-next-button.svelte +1 -1
- package/dist/ui/pagination/pagination-prev-button.svelte +1 -1
- package/dist/ui/pane/pane-close.svelte +2 -2
- package/dist/ui/pane/pane-content.svelte +1 -1
- package/dist/ui/pane/pane-handle.svelte +3 -3
- package/dist/ui/pane/pane-root.svelte +12 -12
- package/dist/ui/pane/pane-tab-list.svelte +1 -1
- package/dist/ui/pane/pane-tab-panel.svelte +1 -1
- package/dist/ui/pane/pane-tab.svelte +1 -1
- package/dist/ui/pane/pane.svelte +1 -1
- package/dist/ui/pin-input/pin-input-cell.svelte +1 -1
- package/dist/ui/popover/popover-content.svelte +1 -1
- package/dist/ui/progress/progress.svelte +1 -1
- package/dist/ui/radio-group/radio-group-item.svelte +2 -2
- package/dist/ui/rating-group/rating-group-item.svelte +1 -1
- package/dist/ui/scroll-area/scroll-area-thumb.svelte +1 -1
- package/dist/ui/scroll-area/scroll-area.svelte +1 -1
- package/dist/ui/select/select-content.svelte +1 -1
- package/dist/ui/select/select-group-heading.svelte +4 -1
- package/dist/ui/select/select-item.svelte +1 -1
- package/dist/ui/select/select-trigger.svelte +2 -2
- package/dist/ui/select/select-value.svelte +1 -1
- package/dist/ui/sheet/sheet-content.svelte +3 -3
- package/dist/ui/sheet/sheet-content.svelte.d.ts +6 -6
- package/dist/ui/skeleton/skeleton.svelte +3 -3
- package/dist/ui/skeleton/skeleton.svelte.d.ts +9 -9
- package/dist/ui/slider/slider-range.svelte +1 -1
- package/dist/ui/slider/slider-thumb.svelte +1 -1
- package/dist/ui/step/step-content.svelte +1 -1
- package/dist/ui/step/step-summary.svelte +6 -6
- package/dist/ui/switch/switch.svelte +3 -3
- package/dist/ui/table/table-cell.svelte +1 -1
- package/dist/ui/table/table-head-cell.svelte +1 -1
- package/dist/ui/time-field/time-field-segment.svelte +1 -1
- package/dist/ui/time-range-field/time-range-field-segment.svelte +1 -1
- package/dist/ui/toggle-group/toggle-group-item.svelte +1 -1
- package/dist/ui/tooltip/tooltip-content.svelte +1 -1
- package/dist/ui/video-player/video-player.svelte +44 -44
- package/dist/utils/index.js +4 -4
- package/package.json +1 -1
|
@@ -61,17 +61,16 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
61
61
|
- `era-token-ink · era-ink-center` — the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box; it needs no icon sibling (with one the box must stay flex, and the general trim applies).
|
|
62
62
|
- `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
63
63
|
- `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
|
|
64
|
-
- `h-
|
|
65
|
-
- `min-h-
|
|
66
|
-
- `size-
|
|
67
|
-
- `px-sm · px-md · px-lg` — tier-to-tier nesting padding (sp/2) — the horizontal padding of a bar or row that holds tiered controls; the named form of px-(--era-px-*).
|
|
64
|
+
- `h-icon · h-pill · h-chip · h-control · h-bar` — the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
|
|
65
|
+
- `min-h-icon · min-h-pill · min-h-chip · min-h-control · min-h-bar` — minimum tier height for containers that may grow — a bar that is at least lg-tier but can wrap (min-h-bar).
|
|
66
|
+
- `size-icon · size-pill · size-chip · size-control · size-bar` — a tier-sized square — size-icon is THE icon size (a Lucide glyph beside body text), size-control a square control face.
|
|
68
67
|
- `gap-gutter · p-gutter · px-gutter · py-gutter` — the inter-element gap (sp/2) — flex/grid gap between sibling controls, and the matching gutter padding a scrollable list or rail owes its rows on all four sides (p-gutter on the rail = gap-gutter between its rows).
|
|
69
|
-
- `p-inset-
|
|
70
|
-
- `px-pill
|
|
71
|
-
- `px-field` — text-field side padding — where typed text starts in
|
|
68
|
+
- `p-inset-pill · p-inset-chip · p-inset-control · px-inset-pill · px-inset-chip · px-inset-control · py-inset-pill · py-inset-chip · py-inset-control` — text-symmetric content padding — (tier − text)/2, the inset that vertically centers body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's.
|
|
69
|
+
- `px-pill · px-chip` — pill side padding — the wider-than-vertical horizontal breathing room badge/chip text wants (glyph-advance derived, ~2× the vertical inset).
|
|
70
|
+
- `px-field` — text-field side padding — where typed text starts in a control-tier input; the named form of px-(--era-field-px).
|
|
72
71
|
- `p-panel · p-card` — optical padding for unbounded containers — p-panel for compact shells and menu-adjacent chrome, p-card for cards/dialogs/popovers, p-content for full content panels. Grows super-linearly with density so whitespace holds its perceived share as controls loosen.
|
|
73
72
|
- `p-content` — A content panel always follows a section header ROW, and that row already
|
|
74
|
-
- `p-menu` — menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-item on the rows.
|
|
73
|
+
- `p-menu` — menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-menu-item on the rows.
|
|
75
74
|
- `duration-base` — the motion axis as an explicit transition-duration — for the rare case a utility (not the transition-* default) needs to name it; 0s at data-motion="instant", longer at "extra".
|
|
76
75
|
- `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
77
76
|
|
|
@@ -127,8 +126,8 @@ The CSS classes era ships alongside the components — links, ink-centred text,
|
|
|
127
126
|
|
|
128
127
|
## Overview
|
|
129
128
|
|
|
130
|
-
era's styling API is pure class names — write `h-
|
|
131
|
-
never the `h-(--era-h-
|
|
129
|
+
era's styling API is pure class names — write `h-control rounded-control px-gutter shadow`,
|
|
130
|
+
never the `h-(--era-h-control)` var-class spelling. Everything below rides along
|
|
132
131
|
with the stylesheet and needs no import:
|
|
133
132
|
|
|
134
133
|
```ts
|
|
@@ -136,7 +135,7 @@ import "@sig-nine/era-ui/css";
|
|
|
136
135
|
```
|
|
137
136
|
|
|
138
137
|
```svelte
|
|
139
|
-
<button class="h-
|
|
138
|
+
<button class="h-control rounded-control px-inset-control shadow text-body">era styled</button>
|
|
140
139
|
```
|
|
141
140
|
|
|
142
141
|
Alongside the `@utility` classes referenced below, era registers named theme
|
|
@@ -146,8 +145,8 @@ motion):
|
|
|
146
145
|
|
|
147
146
|
| Stock-looking class | What it resolves to |
|
|
148
147
|
|---|---|
|
|
149
|
-
| `rounded-
|
|
150
|
-
| `rounded-item` | menu-row radius, concentric inside a `rounded-
|
|
148
|
+
| `rounded-icon/xxs/sm/md/lg` | the concentric radius ladder (collapses on `data-corners="square"`) |
|
|
149
|
+
| `rounded-menu-item` | menu-row radius, concentric inside a `rounded-control` panel |
|
|
151
150
|
| `shadow` / `shadow-lg` | resting control edge / floating panel chrome, per surface |
|
|
152
151
|
| `shadow-well` / `shadow-pressed` / `shadow-highlight` | recessed, pressed/latched, hover-material chrome |
|
|
153
152
|
| `bg-well` / `bg-elevated` / `bg-highlight` / `bg-overlay` | surface fills: resting, raised, transient feedback, modal scrim |
|
|
@@ -157,7 +156,7 @@ motion):
|
|
|
157
156
|
|
|
158
157
|
Deliberate gaps: `w-*`/`min-w-*` tier names would shadow Tailwind's container
|
|
159
158
|
scale (`min-w-md` stays 28rem), and the concentric-inset tokens are advanced
|
|
160
|
-
enough to stay var-form — `min-w-(--era-h-
|
|
159
|
+
enough to stay var-form — `min-w-(--era-h-control)` etc. remain the escape hatch.
|
|
161
160
|
|
|
162
161
|
| Utility | Use it for |
|
|
163
162
|
|---|---|
|
|
@@ -170,17 +169,16 @@ enough to stay var-form — `min-w-(--era-h-md)` etc. remain the escape hatch.
|
|
|
170
169
|
| `era-token-ink` `era-ink-center` | the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box; it needs no icon sibling (with one the box must stay flex, and the general trim applies). |
|
|
171
170
|
| `era-shimmer` | the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text. |
|
|
172
171
|
| `era-collapse` | the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden). |
|
|
173
|
-
| `h-
|
|
174
|
-
| `min-h-
|
|
175
|
-
| `size-
|
|
176
|
-
| `px-sm` `px-md` `px-lg` | tier-to-tier nesting padding (sp/2) — the horizontal padding of a bar or row that holds tiered controls; the named form of px-(--era-px-*). |
|
|
172
|
+
| `h-icon` `h-pill` `h-chip` `h-control` `h-bar` | the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*). |
|
|
173
|
+
| `min-h-icon` `min-h-pill` `min-h-chip` `min-h-control` `min-h-bar` | minimum tier height for containers that may grow — a bar that is at least lg-tier but can wrap (min-h-bar). |
|
|
174
|
+
| `size-icon` `size-pill` `size-chip` `size-control` `size-bar` | a tier-sized square — size-icon is THE icon size (a Lucide glyph beside body text), size-control a square control face. |
|
|
177
175
|
| `gap-gutter` `p-gutter` `px-gutter` `py-gutter` | the inter-element gap (sp/2) — flex/grid gap between sibling controls, and the matching gutter padding a scrollable list or rail owes its rows on all four sides (p-gutter on the rail = gap-gutter between its rows). |
|
|
178
|
-
| `p-inset-
|
|
179
|
-
| `px-pill
|
|
180
|
-
| `px-field` | text-field side padding — where typed text starts in
|
|
176
|
+
| `p-inset-pill` `p-inset-chip` `p-inset-control` `px-inset-pill` `px-inset-chip` `px-inset-control` `py-inset-pill` `py-inset-chip` `py-inset-control` | text-symmetric content padding — (tier − text)/2, the inset that vertically centers body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's. |
|
|
177
|
+
| `px-pill` `px-chip` | pill side padding — the wider-than-vertical horizontal breathing room badge/chip text wants (glyph-advance derived, ~2× the vertical inset). |
|
|
178
|
+
| `px-field` | text-field side padding — where typed text starts in a control-tier input; the named form of px-(--era-field-px). |
|
|
181
179
|
| `p-panel` `p-card` | optical padding for unbounded containers — p-panel for compact shells and menu-adjacent chrome, p-card for cards/dialogs/popovers, p-content for full content panels. Grows super-linearly with density so whitespace holds its perceived share as controls loosen. |
|
|
182
180
|
| `p-content` | — |
|
|
183
|
-
| `p-menu` | menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-item on the rows. |
|
|
181
|
+
| `p-menu` | menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-menu-item on the rows. |
|
|
184
182
|
| `duration-base` | the motion axis as an explicit transition-duration — for the rare case a utility (not the transition-* default) needs to name it; 0s at data-motion="instant", longer at "extra". |
|
|
185
183
|
| `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
|
|
186
184
|
|
|
@@ -468,98 +466,80 @@ Declared in `index.css`.
|
|
|
468
466
|
}
|
|
469
467
|
```
|
|
470
468
|
|
|
471
|
-
## h-
|
|
469
|
+
## h-icon · h-pill · h-chip · h-control · h-bar
|
|
472
470
|
|
|
473
|
-
**Use it for:** the tier-height ladder — h-
|
|
471
|
+
**Use it for:** the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
|
|
474
472
|
|
|
475
473
|
Declared in `index.css`.
|
|
476
474
|
|
|
477
475
|
```css
|
|
478
|
-
@utility h-
|
|
479
|
-
height: var(--era-h-
|
|
476
|
+
@utility h-icon {
|
|
477
|
+
height: var(--era-h-icon);
|
|
480
478
|
}
|
|
481
|
-
@utility h-
|
|
482
|
-
height: var(--era-h-
|
|
479
|
+
@utility h-pill {
|
|
480
|
+
height: var(--era-h-pill);
|
|
483
481
|
}
|
|
484
|
-
@utility h-
|
|
485
|
-
height: var(--era-h-
|
|
482
|
+
@utility h-chip {
|
|
483
|
+
height: var(--era-h-chip);
|
|
486
484
|
}
|
|
487
|
-
@utility h-
|
|
488
|
-
height: var(--era-h-
|
|
485
|
+
@utility h-control {
|
|
486
|
+
height: var(--era-h-control);
|
|
489
487
|
}
|
|
490
|
-
@utility h-
|
|
491
|
-
height: var(--era-h-
|
|
488
|
+
@utility h-bar {
|
|
489
|
+
height: var(--era-h-bar);
|
|
492
490
|
}
|
|
493
491
|
```
|
|
494
492
|
|
|
495
|
-
## min-h-
|
|
493
|
+
## min-h-icon · min-h-pill · min-h-chip · min-h-control · min-h-bar
|
|
496
494
|
|
|
497
|
-
**Use it for:** minimum tier height for containers that may grow — a bar that is at least lg-tier but can wrap (min-h-
|
|
495
|
+
**Use it for:** minimum tier height for containers that may grow — a bar that is at least lg-tier but can wrap (min-h-bar).
|
|
498
496
|
|
|
499
497
|
Declared in `index.css`.
|
|
500
498
|
|
|
501
499
|
```css
|
|
502
|
-
@utility min-h-
|
|
503
|
-
min-height: var(--era-h-
|
|
500
|
+
@utility min-h-icon {
|
|
501
|
+
min-height: var(--era-h-icon);
|
|
504
502
|
}
|
|
505
|
-
@utility min-h-
|
|
506
|
-
min-height: var(--era-h-
|
|
503
|
+
@utility min-h-pill {
|
|
504
|
+
min-height: var(--era-h-pill);
|
|
507
505
|
}
|
|
508
|
-
@utility min-h-
|
|
509
|
-
min-height: var(--era-h-
|
|
506
|
+
@utility min-h-chip {
|
|
507
|
+
min-height: var(--era-h-chip);
|
|
510
508
|
}
|
|
511
|
-
@utility min-h-
|
|
512
|
-
min-height: var(--era-h-
|
|
509
|
+
@utility min-h-control {
|
|
510
|
+
min-height: var(--era-h-control);
|
|
513
511
|
}
|
|
514
|
-
@utility min-h-
|
|
515
|
-
min-height: var(--era-h-
|
|
512
|
+
@utility min-h-bar {
|
|
513
|
+
min-height: var(--era-h-bar);
|
|
516
514
|
}
|
|
517
515
|
```
|
|
518
516
|
|
|
519
|
-
## size-
|
|
517
|
+
## size-icon · size-pill · size-chip · size-control · size-bar
|
|
520
518
|
|
|
521
|
-
**Use it for:** a tier-sized square — size-
|
|
519
|
+
**Use it for:** a tier-sized square — size-icon is THE icon size (a Lucide glyph beside body text), size-control a square control face.
|
|
522
520
|
|
|
523
521
|
Declared in `index.css`.
|
|
524
522
|
|
|
525
523
|
```css
|
|
526
|
-
@utility size-
|
|
527
|
-
width: var(--era-h-
|
|
528
|
-
height: var(--era-h-
|
|
524
|
+
@utility size-icon {
|
|
525
|
+
width: var(--era-h-icon);
|
|
526
|
+
height: var(--era-h-icon);
|
|
529
527
|
}
|
|
530
|
-
@utility size-
|
|
531
|
-
width: var(--era-h-
|
|
532
|
-
height: var(--era-h-
|
|
528
|
+
@utility size-pill {
|
|
529
|
+
width: var(--era-h-pill);
|
|
530
|
+
height: var(--era-h-pill);
|
|
533
531
|
}
|
|
534
|
-
@utility size-
|
|
535
|
-
width: var(--era-h-
|
|
536
|
-
height: var(--era-h-
|
|
532
|
+
@utility size-chip {
|
|
533
|
+
width: var(--era-h-chip);
|
|
534
|
+
height: var(--era-h-chip);
|
|
537
535
|
}
|
|
538
|
-
@utility size-
|
|
539
|
-
width: var(--era-h-
|
|
540
|
-
height: var(--era-h-
|
|
536
|
+
@utility size-control {
|
|
537
|
+
width: var(--era-h-control);
|
|
538
|
+
height: var(--era-h-control);
|
|
541
539
|
}
|
|
542
|
-
@utility size-
|
|
543
|
-
width: var(--era-h-
|
|
544
|
-
height: var(--era-h-
|
|
545
|
-
}
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
## px-sm · px-md · px-lg
|
|
549
|
-
|
|
550
|
-
**Use it for:** tier-to-tier nesting padding (sp/2) — the horizontal padding of a bar or row that holds tiered controls; the named form of px-(--era-px-*).
|
|
551
|
-
|
|
552
|
-
Declared in `index.css`.
|
|
553
|
-
|
|
554
|
-
```css
|
|
555
|
-
@utility px-sm {
|
|
556
|
-
padding-inline: var(--era-px-sm);
|
|
557
|
-
}
|
|
558
|
-
@utility px-md {
|
|
559
|
-
padding-inline: var(--era-px-md);
|
|
560
|
-
}
|
|
561
|
-
@utility px-lg {
|
|
562
|
-
padding-inline: var(--era-px-lg);
|
|
540
|
+
@utility size-bar {
|
|
541
|
+
width: var(--era-h-bar);
|
|
542
|
+
height: var(--era-h-bar);
|
|
563
543
|
}
|
|
564
544
|
```
|
|
565
545
|
|
|
@@ -584,60 +564,60 @@ Declared in `index.css`.
|
|
|
584
564
|
}
|
|
585
565
|
```
|
|
586
566
|
|
|
587
|
-
## p-inset-
|
|
567
|
+
## p-inset-pill · p-inset-chip · p-inset-control · px-inset-pill · px-inset-chip · px-inset-control · py-inset-pill · py-inset-chip · py-inset-control
|
|
588
568
|
|
|
589
|
-
**Use it for:** text-symmetric content padding — (tier − text)/2, the inset that vertically centers body text in its tier; px-inset-
|
|
569
|
+
**Use it for:** text-symmetric content padding — (tier − text)/2, the inset that vertically centers body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's.
|
|
590
570
|
|
|
591
571
|
Declared in `index.css`.
|
|
592
572
|
|
|
593
573
|
```css
|
|
594
|
-
@utility p-inset-
|
|
595
|
-
padding: var(--era-inset-
|
|
574
|
+
@utility p-inset-pill {
|
|
575
|
+
padding: var(--era-inset-pill);
|
|
596
576
|
}
|
|
597
|
-
@utility p-inset-
|
|
598
|
-
padding: var(--era-inset-
|
|
577
|
+
@utility p-inset-chip {
|
|
578
|
+
padding: var(--era-inset-chip);
|
|
599
579
|
}
|
|
600
|
-
@utility p-inset-
|
|
601
|
-
padding: var(--era-inset-
|
|
580
|
+
@utility p-inset-control {
|
|
581
|
+
padding: var(--era-inset-control);
|
|
602
582
|
}
|
|
603
|
-
@utility px-inset-
|
|
604
|
-
padding-inline: var(--era-inset-
|
|
583
|
+
@utility px-inset-pill {
|
|
584
|
+
padding-inline: var(--era-inset-pill);
|
|
605
585
|
}
|
|
606
|
-
@utility px-inset-
|
|
607
|
-
padding-inline: var(--era-inset-
|
|
586
|
+
@utility px-inset-chip {
|
|
587
|
+
padding-inline: var(--era-inset-chip);
|
|
608
588
|
}
|
|
609
|
-
@utility px-inset-
|
|
610
|
-
padding-inline: var(--era-inset-
|
|
589
|
+
@utility px-inset-control {
|
|
590
|
+
padding-inline: var(--era-inset-control);
|
|
611
591
|
}
|
|
612
|
-
@utility py-inset-
|
|
613
|
-
padding-block: var(--era-inset-
|
|
592
|
+
@utility py-inset-pill {
|
|
593
|
+
padding-block: var(--era-inset-pill);
|
|
614
594
|
}
|
|
615
|
-
@utility py-inset-
|
|
616
|
-
padding-block: var(--era-inset-
|
|
595
|
+
@utility py-inset-chip {
|
|
596
|
+
padding-block: var(--era-inset-chip);
|
|
617
597
|
}
|
|
618
|
-
@utility py-inset-
|
|
619
|
-
padding-block: var(--era-inset-
|
|
598
|
+
@utility py-inset-control {
|
|
599
|
+
padding-block: var(--era-inset-control);
|
|
620
600
|
}
|
|
621
601
|
```
|
|
622
602
|
|
|
623
|
-
## px-pill
|
|
603
|
+
## px-pill · px-chip
|
|
624
604
|
|
|
625
605
|
**Use it for:** pill side padding — the wider-than-vertical horizontal breathing room badge/chip text wants (glyph-advance derived, ~2× the vertical inset).
|
|
626
606
|
|
|
627
607
|
Declared in `index.css`.
|
|
628
608
|
|
|
629
609
|
```css
|
|
630
|
-
@utility px-pill
|
|
631
|
-
padding-inline: var(--era-pill-
|
|
610
|
+
@utility px-pill {
|
|
611
|
+
padding-inline: var(--era-pill-px);
|
|
632
612
|
}
|
|
633
|
-
@utility px-
|
|
634
|
-
padding-inline: var(--era-
|
|
613
|
+
@utility px-chip {
|
|
614
|
+
padding-inline: var(--era-chip-px);
|
|
635
615
|
}
|
|
636
616
|
```
|
|
637
617
|
|
|
638
618
|
## px-field
|
|
639
619
|
|
|
640
|
-
**Use it for:** text-field side padding — where typed text starts in
|
|
620
|
+
**Use it for:** text-field side padding — where typed text starts in a control-tier input; the named form of px-(--era-field-px).
|
|
641
621
|
|
|
642
622
|
Declared in `index.css`.
|
|
643
623
|
|
|
@@ -655,25 +635,25 @@ Declared in `index.css`.
|
|
|
655
635
|
|
|
656
636
|
```css
|
|
657
637
|
@utility p-panel {
|
|
658
|
-
padding: var(--era-pad-
|
|
638
|
+
padding: var(--era-pad-panel);
|
|
659
639
|
}
|
|
660
640
|
@utility p-card {
|
|
661
|
-
padding: var(--era-pad-
|
|
641
|
+
padding: var(--era-pad-card);
|
|
662
642
|
}
|
|
663
643
|
```
|
|
664
644
|
|
|
665
645
|
## p-content
|
|
666
646
|
|
|
667
647
|
A content panel always follows a section header ROW, and that row already
|
|
668
|
-
contributes its own slack: the heading's text sits in an h-
|
|
669
|
-
is (h-
|
|
648
|
+
contributes its own slack: the heading's text sits in an h-bar bar, so there
|
|
649
|
+
is (h-bar − text)/2 of empty bar under its glyphs before the panel even
|
|
670
650
|
starts. Padding the panel evenly on top of that spends the space twice — the
|
|
671
651
|
header ends up floating between the section above and the paragraph it
|
|
672
652
|
introduces rather than binding to it.
|
|
673
653
|
|
|
674
654
|
So the block-start pays only the REMAINDER. The target is the indent: the
|
|
675
655
|
space under a heading should measure the same as the space beside the text,
|
|
676
|
-
which is --era-content-p. The header row already supplies (h-
|
|
656
|
+
which is --era-content-p. The header row already supplies (h-bar − text)/2 of
|
|
677
657
|
it, so the panel adds what's left, and heading-to-paragraph reads equal to
|
|
678
658
|
the paragraph's own inset. Subtracting one --era-gap (the previous rule) left
|
|
679
659
|
the header's slack unaccounted for and the heading still detached.
|
|
@@ -687,13 +667,13 @@ Declared in `index.css`.
|
|
|
687
667
|
```css
|
|
688
668
|
@utility p-content {
|
|
689
669
|
padding: var(--era-content-p);
|
|
690
|
-
padding-top: max(0px, calc(var(--era-content-p) - (var(--era-h-
|
|
670
|
+
padding-top: max(0px, calc(var(--era-content-p) - (var(--era-h-bar) - var(--era-text)) / 2));
|
|
691
671
|
}
|
|
692
672
|
```
|
|
693
673
|
|
|
694
674
|
## p-menu
|
|
695
675
|
|
|
696
|
-
**Use it for:** menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-item on the rows.
|
|
676
|
+
**Use it for:** menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-menu-item on the rows.
|
|
697
677
|
|
|
698
678
|
Declared in `index.css`.
|
|
699
679
|
|
|
@@ -919,7 +899,7 @@ Inherits all props from `HTMLAttributes<HTMLSpanElement>`.
|
|
|
919
899
|
|
|
920
900
|
- Non-interactive. For dismissible tokens use `Chip`. For labelled pairs use `KV`.
|
|
921
901
|
- Uses the `xxs` tier tokens (height, radius, inset).
|
|
922
|
-
- Inter-icon gap tightens to `--era-inset-
|
|
902
|
+
- Inter-icon gap tightens to `--era-inset-pill` when an SVG is present.
|
|
923
903
|
|
|
924
904
|
<!-- end: badge -->
|
|
925
905
|
|
|
@@ -988,8 +968,8 @@ Inherits all props from `HTMLAttributes<HTMLDivElement>`.
|
|
|
988
968
|
| `ref?` | `HTMLDivElement \| null` | `null` | bindable |
|
|
989
969
|
| `size?` | `'sm' \| 'md' \| 'lg'` | `'lg'` | Height tier (scales with density). Default `lg` — a full toolbar. |
|
|
990
970
|
| `content?` | `'tier' \| 'xxs'` | `'tier'` | Tier of the controls inside — drives the bar's padding and gap so they
|
|
991
|
-
stay concentric to them. `tier` (default) is one tier smaller; `
|
|
992
|
-
the compact pairing (
|
|
971
|
+
stay concentric to them. `tier` (default) is one tier smaller; `pill` is
|
|
972
|
+
the compact pairing (pills/fields in an sm or md bar). |
|
|
993
973
|
| `divider?` | `boolean` | `false` | The flush cap-a-panel chrome: outset divider below, bottom rd-md. |
|
|
994
974
|
| `children?` | `Snippet` | — | — |
|
|
995
975
|
|
|
@@ -1162,7 +1142,7 @@ Inherits all props from `HTMLAttributes<HTMLDivElement>`.
|
|
|
1162
1142
|
| Prop | Type | Default | Notes |
|
|
1163
1143
|
|------|------|---------|-------|
|
|
1164
1144
|
| `ref?` | `HTMLDivElement \| null` | `null` | bindable |
|
|
1165
|
-
| `size?` | `'sm' \| 'xxs'` | `'sm'` | `sm` (default) is the standalone free chip; `
|
|
1145
|
+
| `size?` | `'sm' \| 'xxs'` | `'sm'` | `sm` (default) is the standalone free chip; `pill` is the smaller pill
|
|
1166
1146
|
that nests inside an md container (a select trigger, a button). |
|
|
1167
1147
|
| `ondismiss?` | `() => void` | — | — |
|
|
1168
1148
|
| `children?` | `Snippet` | — | — |
|
|
@@ -2953,7 +2933,7 @@ Inherits all props from `Omit<HTMLInputAttributes, 'size'>`.
|
|
|
2953
2933
|
|------|------|---------|-------|
|
|
2954
2934
|
| `ref?` | `HTMLInputElement \| null` | `null` | bindable |
|
|
2955
2935
|
| `icon?` | `Component<IconProps> \| null` | `null` | Lucide glyph rendered inside the field, left of the text. |
|
|
2956
|
-
| `size?` | `'md' \| 'xxs'` | `'md'` | Field tier. `
|
|
2936
|
+
| `size?` | `'md' \| 'xxs'` | `'md'` | Field tier. `pill` is badge height — for compact chrome where the field
|
|
2957
2937
|
sits level with xxs buttons. See inputVariants. |
|
|
2958
2938
|
| `bare?` | `boolean` | `false` | Drop the field chrome — for an input inside a container that is already the field. |
|
|
2959
2939
|
| `reveal?` | `boolean` | `false` | Hold the field chrome back until hover — for a title or label that IS the content. |
|
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
Every measurement in era derives from one atom (`--era-sp`) through a fixed ladder. You never pick a number; you pick a TIER, and the number follows from the density axis. Markup that hardcodes `h-[34px]`, `text-[13px]`, `p-2` or `gap-1.5` is wrong even when it looks right at the default density — it stops tracking the axis the moment a subtree re-tiers.
|
|
8
8
|
|
|
9
9
|
**1. Height comes from the tier ladder, never from a pixel value.**
|
|
10
|
-
`h-
|
|
10
|
+
`h-icon` (icon, 14px @dense) · `h-pill` (nested pill, 18) · `h-chip` (standalone pill, 22) · `h-control` (control/row, 24) · `h-bar` (bar/header, 32). A square is `size-*` on the same ladder; `size-icon` IS the icon size beside body text.
|
|
11
11
|
|
|
12
12
|
**2. Padding is geometric or optical — the container tells you which.**
|
|
13
|
-
A container with a BOUNDED tier height (bar, row, trigger, pill) takes geometric padding: `px-inset-
|
|
13
|
+
A container with a BOUNDED tier height (bar, row, trigger, pill) takes geometric padding: `px-inset-control` / `px-gutter` / `px-chip`, all derived from `(tier − text)/2`. A container with UNBOUNDED height (card, dialog, panel, page section) takes optical padding: `p-panel` · `p-card` · `p-content`, which grow super-linearly so whitespace keeps pace as controls loosen. Never pad a card with a tier inset, and never pad a row with `p-card`.
|
|
14
14
|
|
|
15
|
-
**3. The even-gap law.** Inside any container, `(container_height − child_height) / 2` must equal the gap on ALL four sides. A `h-
|
|
15
|
+
**3. The even-gap law.** Inside any container, `(container_height − child_height) / 2` must equal the gap on ALL four sides. A `h-pill` control in a `h-control` bar sits on a 3px wall at dense — so the bar's padding AND the gap between its children are that same value. `gap-gutter` / `p-gutter` is the standard inter-element gap (sp/2); the concentric insets (`p-inset-*`) are the text-symmetric ones.
|
|
16
16
|
|
|
17
17
|
The same law in its simplest form, for containers with no tier: **a box pads its content equally at top and bottom.** Horizontal asymmetry is often deliberate (a bar's leading side sits at the text inset while its trailing side keeps the concentric wall); vertical asymmetry is a bug — nothing should sit closer to its top edge than its bottom, and era audits for it.
|
|
18
18
|
|
|
19
19
|
**4. Radius follows the corner REGION's tier, not the box's size.**
|
|
20
|
-
`rounded-
|
|
20
|
+
`rounded-icon · rounded-pill · rounded-chip · rounded-control · rounded-bar` walk the same ladder as the heights, and the ladder is built so that `rd_outer − rd_inner` equals the concentric gap — nested corners then share a centre of curvature automatically. A big panel whose corner is formed by an `h-control` bar takes `rounded-control`, not `rounded-bar`. Never hardcode a radius: `data-corners="square"` collapses the tokens to 0 and a literal value would survive it.
|
|
21
21
|
|
|
22
22
|
**5. Single-line control text carries `era-text-trim`; wrapping text carries `leading-body`.**
|
|
23
23
|
Flexbox centres the LINE BOX, not the ink, and misses by up to ~2px. `era-text-trim` fixes it — on FIXED-HEIGHT, NON-EDITABLE elements only. Two hard prohibitions, both of which produce silently chopped or mis-centred glyphs:
|
|
@@ -99,17 +99,16 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
99
99
|
- `era-token-ink · era-ink-center` — the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box; it needs no icon sibling (with one the box must stay flex, and the general trim applies).
|
|
100
100
|
- `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
101
101
|
- `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
|
|
102
|
-
- `h-
|
|
103
|
-
- `min-h-
|
|
104
|
-
- `size-
|
|
105
|
-
- `px-sm · px-md · px-lg` — tier-to-tier nesting padding (sp/2) — the horizontal padding of a bar or row that holds tiered controls; the named form of px-(--era-px-*).
|
|
102
|
+
- `h-icon · h-pill · h-chip · h-control · h-bar` — the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
|
|
103
|
+
- `min-h-icon · min-h-pill · min-h-chip · min-h-control · min-h-bar` — minimum tier height for containers that may grow — a bar that is at least lg-tier but can wrap (min-h-bar).
|
|
104
|
+
- `size-icon · size-pill · size-chip · size-control · size-bar` — a tier-sized square — size-icon is THE icon size (a Lucide glyph beside body text), size-control a square control face.
|
|
106
105
|
- `gap-gutter · p-gutter · px-gutter · py-gutter` — the inter-element gap (sp/2) — flex/grid gap between sibling controls, and the matching gutter padding a scrollable list or rail owes its rows on all four sides (p-gutter on the rail = gap-gutter between its rows).
|
|
107
|
-
- `p-inset-
|
|
108
|
-
- `px-pill
|
|
109
|
-
- `px-field` — text-field side padding — where typed text starts in
|
|
106
|
+
- `p-inset-pill · p-inset-chip · p-inset-control · px-inset-pill · px-inset-chip · px-inset-control · py-inset-pill · py-inset-chip · py-inset-control` — text-symmetric content padding — (tier − text)/2, the inset that vertically centers body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's.
|
|
107
|
+
- `px-pill · px-chip` — pill side padding — the wider-than-vertical horizontal breathing room badge/chip text wants (glyph-advance derived, ~2× the vertical inset).
|
|
108
|
+
- `px-field` — text-field side padding — where typed text starts in a control-tier input; the named form of px-(--era-field-px).
|
|
110
109
|
- `p-panel · p-card` — optical padding for unbounded containers — p-panel for compact shells and menu-adjacent chrome, p-card for cards/dialogs/popovers, p-content for full content panels. Grows super-linearly with density so whitespace holds its perceived share as controls loosen.
|
|
111
110
|
- `p-content` — A content panel always follows a section header ROW, and that row already
|
|
112
|
-
- `p-menu` — menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-item on the rows.
|
|
111
|
+
- `p-menu` — menu-panel padding — the surface-owned inset (0 on flat, 2px on glass/bevel) that keeps row highlights inside a floating panel's frame; pairs with rounded-menu-item on the rows.
|
|
113
112
|
- `duration-base` — the motion axis as an explicit transition-duration — for the rare case a utility (not the transition-* default) needs to name it; 0s at data-motion="instant", longer at "extra".
|
|
114
113
|
- `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
115
114
|
|