@signal9/era-ui 7.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.
Files changed (226) hide show
  1. package/dist/ai/artifact/artifact-close.svelte +1 -1
  2. package/dist/ai/artifact/artifact-content.svelte +1 -1
  3. package/dist/ai/artifact/artifact-header.svelte +1 -1
  4. package/dist/ai/artifact/artifact.svelte +1 -1
  5. package/dist/ai/chain-of-thought/chain-of-thought-step.svelte +1 -1
  6. package/dist/ai/chain-of-thought/chain-of-thought.svelte +1 -1
  7. package/dist/ai/checkpoint.svelte +1 -1
  8. package/dist/ai/confirmation/confirmation-args.svelte +2 -2
  9. package/dist/ai/confirmation/confirmation.svelte +4 -4
  10. package/dist/ai/context/context.svelte +1 -1
  11. package/dist/ai/conversation/conversation-content.svelte +1 -1
  12. package/dist/ai/conversation/conversation-empty-state.svelte +1 -1
  13. package/dist/ai/conversation/conversation-scroll-button.svelte +2 -2
  14. package/dist/ai/conversations/conversations-group.svelte +1 -1
  15. package/dist/ai/conversations/conversations-item.svelte +7 -7
  16. package/dist/ai/error-panel/error-panel.svelte +4 -4
  17. package/dist/ai/image.svelte +1 -1
  18. package/dist/ai/inline-citation/inline-citation.svelte +2 -2
  19. package/dist/ai/loader.svelte +1 -1
  20. package/dist/ai/message/message-branch-selector.svelte +3 -3
  21. package/dist/ai/message/message-content.svelte +1 -1
  22. package/dist/ai/message/message-usage.svelte +4 -4
  23. package/dist/ai/model-selector/model-selector.svelte +1 -1
  24. package/dist/ai/open-in-chat/open-in-chat.svelte +2 -2
  25. package/dist/ai/plan/plan-content.svelte +1 -1
  26. package/dist/ai/plan/plan-header.svelte +2 -2
  27. package/dist/ai/plan/plan.svelte +1 -1
  28. package/dist/ai/prompt-input/prompt-input-add-attachments.svelte +1 -1
  29. package/dist/ai/prompt-input/prompt-input-attachments.svelte +5 -5
  30. package/dist/ai/prompt-input/prompt-input-submit.svelte +3 -3
  31. package/dist/ai/prompt-input/prompt-input-textarea.svelte +3 -3
  32. package/dist/ai/prompt-input/prompt-input.svelte +1 -1
  33. package/dist/ai/queue/queue-item.svelte +1 -1
  34. package/dist/ai/queue/queue.svelte +1 -1
  35. package/dist/ai/reasoning/reasoning-trigger.svelte +1 -1
  36. package/dist/ai/response/response.svelte +2 -2
  37. package/dist/ai/run-status/run-status.svelte +5 -5
  38. package/dist/ai/runtime-feed/runtime-feed-item.svelte +1 -1
  39. package/dist/ai/sources/source.svelte +1 -1
  40. package/dist/ai/sources/sources-trigger.svelte +1 -1
  41. package/dist/ai/structured-value/structured-value.svelte +1 -1
  42. package/dist/ai/suggestion/suggestion.svelte +2 -2
  43. package/dist/ai/swarm/swarm-agent.svelte +1 -1
  44. package/dist/ai/swarm/swarm-artifact.svelte +1 -1
  45. package/dist/ai/swarm/swarm-barrier.svelte +1 -1
  46. package/dist/ai/swarm/swarm-barriers.svelte +1 -1
  47. package/dist/ai/swarm/swarm-counts.svelte +1 -1
  48. package/dist/ai/swarm/swarm-footer.svelte +1 -1
  49. package/dist/ai/swarm/swarm-grid.svelte +2 -2
  50. package/dist/ai/swarm/swarm-header.svelte +1 -1
  51. package/dist/ai/swarm/swarm-node.svelte +7 -7
  52. package/dist/ai/swarm/swarm-role.svelte +1 -1
  53. package/dist/ai/swarm/swarm-root.svelte +1 -1
  54. package/dist/ai/swarm/swarm-sandbox.svelte +3 -3
  55. package/dist/ai/swarm/swarm-tree.svelte +1 -1
  56. package/dist/ai/task/task-content.svelte +1 -1
  57. package/dist/ai/task/task-trigger.svelte +1 -1
  58. package/dist/ai/tool/tool-chip.svelte +2 -2
  59. package/dist/ai/tool/tool-exec.svelte +3 -3
  60. package/dist/ai/tool/tool-header.svelte +1 -1
  61. package/dist/ai/web-preview/web-preview.svelte +3 -3
  62. package/dist/ai/workflow/canvas.svelte +1 -1
  63. package/dist/ai/workflow/node.svelte +3 -3
  64. package/dist/apps/llm-shell/llm-shell.svelte +7 -7
  65. package/dist/apps/notes/editor/slash-menu.svelte +7 -5
  66. package/dist/apps/notes/note-editor.svelte +7 -364
  67. package/dist/apps/notes/note-editor.svelte.d.ts +1 -0
  68. package/dist/apps/notes/notes.svelte +9 -9
  69. package/dist/dev/audit/audits/_helpers.js +1 -1
  70. package/dist/dev/audit/audits/resting-gap.js +1 -1
  71. package/dist/dev/audit/audits/single-glyph-square.js +2 -2
  72. package/dist/dev/audit-overlay.svelte +7 -7
  73. package/dist/dev/measure.d.ts +1 -1
  74. package/dist/dev/measure.js +1 -1
  75. package/dist/docs/badge.md +1 -1
  76. package/dist/docs/css-utilities.d.ts +1 -1
  77. package/dist/docs/css-utilities.js +8 -8
  78. package/dist/docs/llms-txt.js +1 -1
  79. package/dist/era-ui.css +1 -1
  80. package/dist/generated-docs/badge.md +1 -1
  81. package/dist/generated-docs/bar.md +2 -2
  82. package/dist/generated-docs/chip.md +1 -1
  83. package/dist/generated-docs/input.md +1 -1
  84. package/dist/generated-docs/llms-full.txt +100 -120
  85. package/dist/generated-docs/llms.txt +12 -13
  86. package/dist/generated-docs/manifest.json +52 -65
  87. package/dist/generated-docs/utilities.json +45 -57
  88. package/dist/generated-docs/utilities.md +87 -106
  89. package/dist/os/notification-center.svelte +6 -6
  90. package/dist/os/pane.svelte +7 -5
  91. package/dist/os/taskbar.svelte +10 -10
  92. package/dist/os/toast.svelte +3 -3
  93. package/dist/os/toaster.svelte +1 -1
  94. package/dist/styles/density.css +93 -67
  95. package/dist/styles/index.css +89 -101
  96. package/dist/styles/prose.css +384 -0
  97. package/dist/styles/surfaces/base.css +3 -3
  98. package/dist/styles/surfaces/bevel.css +2 -2
  99. package/dist/ui/accordion/accordion-trigger.svelte +2 -2
  100. package/dist/ui/alert-dialog/alert-dialog-content.svelte +1 -1
  101. package/dist/ui/aspect-ratio/aspect-ratio.svelte +1 -1
  102. package/dist/ui/avatar/avatar-root.svelte +1 -1
  103. package/dist/ui/badge/badge.svelte +1 -1
  104. package/dist/ui/badge/badge.svelte.d.ts +1 -1
  105. package/dist/ui/bar/bar.svelte +23 -15
  106. package/dist/ui/bar/bar.svelte.d.ts +26 -26
  107. package/dist/ui/button/button.svelte +1 -1
  108. package/dist/ui/button/variants.js +18 -18
  109. package/dist/ui/button-group/button-group.svelte +2 -2
  110. package/dist/ui/calendar/calendar-day.svelte +1 -1
  111. package/dist/ui/calendar/calendar-head-cell.svelte +1 -1
  112. package/dist/ui/calendar/calendar-header.svelte +1 -1
  113. package/dist/ui/calendar/calendar-next-button.svelte +1 -1
  114. package/dist/ui/calendar/calendar-prev-button.svelte +1 -1
  115. package/dist/ui/card/card.svelte +5 -5
  116. package/dist/ui/card/card.svelte.d.ts +4 -4
  117. package/dist/ui/checkbox/checkbox.svelte +3 -3
  118. package/dist/ui/chip/chip.svelte +14 -10
  119. package/dist/ui/chip/chip.svelte.d.ts +7 -7
  120. package/dist/ui/code-block/code-block.svelte +6 -6
  121. package/dist/ui/collapsible/collapsible-trigger.svelte +1 -1
  122. package/dist/ui/combobox/combobox-content.svelte +1 -1
  123. package/dist/ui/combobox/combobox-empty.svelte +4 -1
  124. package/dist/ui/combobox/combobox-group-heading.svelte +4 -1
  125. package/dist/ui/combobox/combobox-item.svelte +1 -1
  126. package/dist/ui/combobox/combobox-trigger.svelte +2 -2
  127. package/dist/ui/command/command-group-heading.svelte +4 -1
  128. package/dist/ui/command/command-item.svelte +1 -1
  129. package/dist/ui/command/command-link-item.svelte +1 -1
  130. package/dist/ui/command/command-root.svelte +1 -1
  131. package/dist/ui/command-bar/command-bar.svelte +16 -12
  132. package/dist/ui/context-menu/context-menu-checkbox-item.svelte +1 -1
  133. package/dist/ui/context-menu/context-menu-content.svelte +1 -1
  134. package/dist/ui/context-menu/context-menu-group-heading.svelte +4 -1
  135. package/dist/ui/context-menu/context-menu-item.svelte +1 -1
  136. package/dist/ui/context-menu/context-menu-radio-item.svelte +1 -1
  137. package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
  138. package/dist/ui/context-menu/context-menu-sub-trigger.svelte +2 -2
  139. package/dist/ui/copy-button/copy-button.svelte +2 -2
  140. package/dist/ui/cycle/cycle.svelte +1 -1
  141. package/dist/ui/date-field/date-field-segment.svelte +1 -1
  142. package/dist/ui/date-picker/date-picker-content.svelte +1 -1
  143. package/dist/ui/date-picker/date-picker-day.svelte +1 -1
  144. package/dist/ui/date-picker/date-picker-head-cell.svelte +1 -1
  145. package/dist/ui/date-picker/date-picker-header.svelte +1 -1
  146. package/dist/ui/date-picker/date-picker-next-button.svelte +1 -1
  147. package/dist/ui/date-picker/date-picker-prev-button.svelte +1 -1
  148. package/dist/ui/date-picker/date-picker-segment.svelte +1 -1
  149. package/dist/ui/date-picker/date-picker-trigger.svelte +2 -2
  150. package/dist/ui/date-range-field/date-range-field-segment.svelte +1 -1
  151. package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -1
  152. package/dist/ui/date-range-picker/date-range-picker-day.svelte +1 -1
  153. package/dist/ui/date-range-picker/date-range-picker-head-cell.svelte +1 -1
  154. package/dist/ui/date-range-picker/date-range-picker-header.svelte +1 -1
  155. package/dist/ui/date-range-picker/date-range-picker-next-button.svelte +1 -1
  156. package/dist/ui/date-range-picker/date-range-picker-prev-button.svelte +1 -1
  157. package/dist/ui/date-range-picker/date-range-picker-segment.svelte +1 -1
  158. package/dist/ui/date-range-picker/date-range-picker-trigger.svelte +2 -2
  159. package/dist/ui/dialog/dialog-content.svelte +4 -2
  160. package/dist/ui/dialog/dialog-header.svelte +2 -2
  161. package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  162. package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  163. package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +4 -1
  164. package/dist/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
  165. package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
  166. package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  167. package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
  168. package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +2 -2
  169. package/dist/ui/file-upload/file-upload.svelte +2 -2
  170. package/dist/ui/input/input.svelte +3 -3
  171. package/dist/ui/input/input.svelte.d.ts +1 -1
  172. package/dist/ui/input/textarea.svelte +1 -1
  173. package/dist/ui/input/variants.d.ts +24 -24
  174. package/dist/ui/input/variants.js +9 -9
  175. package/dist/ui/kv/kv.svelte +2 -2
  176. package/dist/ui/link-preview/link-preview-content.svelte +1 -1
  177. package/dist/ui/menubar/menubar-checkbox-item.svelte +1 -1
  178. package/dist/ui/menubar/menubar-content.svelte +1 -1
  179. package/dist/ui/menubar/menubar-group-heading.svelte +4 -1
  180. package/dist/ui/menubar/menubar-item.svelte +1 -1
  181. package/dist/ui/menubar/menubar-radio-item.svelte +1 -1
  182. package/dist/ui/menubar/menubar-root.svelte +1 -1
  183. package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
  184. package/dist/ui/menubar/menubar-sub-trigger.svelte +2 -2
  185. package/dist/ui/menubar/menubar-trigger.svelte +1 -1
  186. package/dist/ui/meter/meter.svelte +1 -1
  187. package/dist/ui/pagination/pagination-next-button.svelte +1 -1
  188. package/dist/ui/pagination/pagination-prev-button.svelte +1 -1
  189. package/dist/ui/pane/pane-close.svelte +2 -2
  190. package/dist/ui/pane/pane-content.svelte +1 -1
  191. package/dist/ui/pane/pane-handle.svelte +3 -3
  192. package/dist/ui/pane/pane-root.svelte +12 -12
  193. package/dist/ui/pane/pane-tab-list.svelte +1 -1
  194. package/dist/ui/pane/pane-tab-panel.svelte +1 -1
  195. package/dist/ui/pane/pane-tab.svelte +1 -1
  196. package/dist/ui/pane/pane.svelte +1 -1
  197. package/dist/ui/pin-input/pin-input-cell.svelte +1 -1
  198. package/dist/ui/popover/popover-content.svelte +1 -1
  199. package/dist/ui/progress/progress.svelte +1 -1
  200. package/dist/ui/radio-group/radio-group-item.svelte +2 -2
  201. package/dist/ui/rating-group/rating-group-item.svelte +1 -1
  202. package/dist/ui/scroll-area/scroll-area-thumb.svelte +1 -1
  203. package/dist/ui/scroll-area/scroll-area.svelte +1 -1
  204. package/dist/ui/select/select-content.svelte +1 -1
  205. package/dist/ui/select/select-group-heading.svelte +4 -1
  206. package/dist/ui/select/select-item.svelte +1 -1
  207. package/dist/ui/select/select-trigger.svelte +2 -2
  208. package/dist/ui/select/select-value.svelte +1 -1
  209. package/dist/ui/sheet/sheet-content.svelte +3 -3
  210. package/dist/ui/sheet/sheet-content.svelte.d.ts +6 -6
  211. package/dist/ui/skeleton/skeleton.svelte +3 -3
  212. package/dist/ui/skeleton/skeleton.svelte.d.ts +9 -9
  213. package/dist/ui/slider/slider-range.svelte +1 -1
  214. package/dist/ui/slider/slider-thumb.svelte +1 -1
  215. package/dist/ui/step/step-content.svelte +1 -1
  216. package/dist/ui/step/step-summary.svelte +6 -6
  217. package/dist/ui/switch/switch.svelte +3 -3
  218. package/dist/ui/table/table-cell.svelte +1 -1
  219. package/dist/ui/table/table-head-cell.svelte +1 -1
  220. package/dist/ui/time-field/time-field-segment.svelte +1 -1
  221. package/dist/ui/time-range-field/time-range-field-segment.svelte +1 -1
  222. package/dist/ui/toggle-group/toggle-group-item.svelte +1 -1
  223. package/dist/ui/tooltip/tooltip-content.svelte +1 -1
  224. package/dist/ui/video-player/video-player.svelte +44 -44
  225. package/dist/utils/index.js +4 -4
  226. package/package.json +2 -1
@@ -24,7 +24,7 @@
24
24
  // glass-blur, like every other floating panel (menus, dialogs, pickers):
25
25
  // inert on opaque surfaces, blurs the backdrop when the palette floats.
26
26
  !bare &&
27
- 'overflow-hidden rounded-(--era-rd-lg) border border-(color:--era-border-color) bg-(--era-surface-bg) p-(--era-gap) shadow-(--era-shadow-lg) glass-blur',
27
+ 'overflow-hidden rounded-(--era-rd-bar) border border-(color:--era-border-color) bg-(--era-surface-bg) p-(--era-gap) shadow-(--era-shadow-lg) glass-blur',
28
28
  className
29
29
  )}
30
30
  {...restProps}
@@ -190,25 +190,27 @@
190
190
  glass-blur: a flat sheet on flat (shadow resolves to none), the chisel frame
191
191
  on bevel, frost on glass — so it reads as "dedicated" on every surface, not
192
192
  an undifferentiated rectangle. -->
193
- <div class={cn('relative flex h-(--era-h-md) w-full min-w-0 items-center font-mono', className)}>
194
- <ChevronRight class="mx-(--era-gap) size-(--era-h-xs) shrink-0 text-fg" />
193
+ <div
194
+ class={cn('relative flex h-(--era-h-control) w-full min-w-0 items-center font-mono', className)}
195
+ >
196
+ <ChevronRight class="mx-(--era-gap) size-(--era-h-icon) shrink-0 text-fg" />
195
197
 
196
198
  <!-- Completed segments: the locked prefix. Backspace (empty input) pops. -->
197
199
  <!-- ONE chevron, one size, everywhere in the bar: the prompt's, the
198
- breadcrumb separators', and the submenu indicator's are all h-xs — the
200
+ breadcrumb separators', and the submenu indicator's are all h-icon — the
199
201
  icon tier every other glyph in the bar sits on. They differ only in
200
202
  ink (fg for the live prompt, muted for the locked path), so
201
203
  "> workspace > which workspace" reads as one repeated mark, not three
202
204
  sizes of it. -->
203
205
  {#each stack as seg (seg.value)}
204
206
  <span class="shrink-0 text-body text-muted">{seg.label}</span>
205
- <ChevronRight class="mx-(--era-gap) size-(--era-h-xs) shrink-0 text-muted" />
207
+ <ChevronRight class="mx-(--era-gap) size-(--era-h-icon) shrink-0 text-muted" />
206
208
  {/each}
207
209
 
208
210
  <!-- ONE source of truth for the field's type: font size and text colour live on
209
211
  the container, and both the input and the ghost mirror inherit them. Change
210
212
  the field's look here and the ghost follows automatically. -->
211
- <!-- leading-(--era-h-md) is the whole trick for vertical alignment: line-height
213
+ <!-- leading-(--era-h-control) is the whole trick for vertical alignment: line-height
212
214
  equals the field height, so a single line of text fills the box and centres
213
215
  itself by the font's own metrics. The input and the ghost mirror BOTH inherit
214
216
  it, so they centre by the identical mechanism — no native-input-centering vs
@@ -217,9 +219,9 @@
217
219
  MIRROR that actually paints it did not — so in a host narrower than the
218
220
  prompt line (placeholder included), the text bled past the bar's rounded
219
221
  end where any real input would clip. Safe with the line-height centring:
220
- the box is the bar's full h-md, well above the ink (clipped-glyphs' law). -->
222
+ the box is the bar's full h-control, well above the ink (clipped-glyphs' law). -->
221
223
  <div
222
- class="relative h-full min-w-0 flex-1 overflow-hidden text-body leading-(--era-h-md) text-bright"
224
+ class="relative h-full min-w-0 flex-1 overflow-hidden text-body leading-(--era-h-control) text-bright"
223
225
  >
224
226
  <!-- Transparent input: it owns editing and the caret only, so the visible text
225
227
  can come entirely from the mirror below (see it for why). Everything but
@@ -270,7 +272,9 @@
270
272
  onmousedown={(e) => e.preventDefault()}
271
273
  >
272
274
  {#if !filtered.length}
273
- <div class="flex h-(--era-h-md) items-center px-(--era-inset-md) text-body text-muted">
275
+ <div
276
+ class="flex h-(--era-h-control) items-center px-(--era-inset-control) text-body text-muted"
277
+ >
274
278
  {empty}
275
279
  </div>
276
280
  {:else}
@@ -286,7 +290,7 @@
286
290
  tabindex={-1}
287
291
  aria-selected={i === selectedIndex}
288
292
  class={cn(
289
- 'flex h-(--era-h-md) cursor-default items-center gap-(--era-gap) px-(--era-inset-md) text-body era-text-trim whitespace-nowrap',
293
+ 'flex h-(--era-h-control) cursor-default items-center gap-(--era-gap) px-(--era-inset-control) text-body era-text-trim whitespace-nowrap',
290
294
  i === selectedIndex ? 'bg-3 text-bright' : 'text-fg'
291
295
  )}
292
296
  onclick={() => choose(item)}
@@ -295,14 +299,14 @@
295
299
  <span class="shrink-0">{item.icon}</span>
296
300
  {:else if item.icon}
297
301
  {@const Icon = item.icon}
298
- <Icon class="size-(--era-h-xs) shrink-0 text-muted" />
302
+ <Icon class="size-(--era-h-icon) shrink-0 text-muted" />
299
303
  {/if}
300
304
  <span class="shrink-0">{item.label}</span>
301
305
  {#if item.items}
302
- <ChevronRight class="size-(--era-h-xs) shrink-0 text-muted" />
306
+ <ChevronRight class="size-(--era-h-icon) shrink-0 text-muted" />
303
307
  {/if}
304
308
  {#if item.sublabel}
305
- <span class="ml-auto truncate pl-(--era-inset-md) text-body text-muted">
309
+ <span class="ml-auto truncate pl-(--era-inset-control) text-body text-muted">
306
310
  {item.sublabel}
307
311
  </span>
308
312
  {/if}
@@ -14,7 +14,7 @@
14
14
  bind:ref
15
15
  bind:checked
16
16
  class={cn(
17
- 'flex h-(--era-h-md) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
17
+ 'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -21,7 +21,7 @@
21
21
  // 2px frame that stops a full-width highlight from breaking their chrome.
22
22
  // A fixed gutter was tried here and rejected: it padded flat menus too.
23
23
  class={cn(
24
- 'z-50 w-max overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
24
+ 'z-50 w-max overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
25
25
  className
26
26
  )}
27
27
  {sideOffset}
@@ -11,6 +11,9 @@
11
11
 
12
12
  <ContextMenu.GroupHeading
13
13
  bind:ref
14
- class={cn('flex h-(--era-h-md) items-center px-(--era-inset-md) text-body text-muted', className)}
14
+ class={cn(
15
+ 'flex h-(--era-h-control) items-center px-(--era-inset-control) text-body text-muted',
16
+ className
17
+ )}
15
18
  {...restProps}
16
19
  />
@@ -13,7 +13,7 @@
13
13
  <ContextMenu.Item
14
14
  bind:ref
15
15
  class={cn(
16
- 'flex h-(--era-h-md) cursor-pointer items-center gap-(--era-gap) rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
16
+ 'flex h-(--era-h-control) cursor-pointer items-center gap-(--era-gap) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -12,7 +12,7 @@
12
12
  <ContextMenu.RadioItem
13
13
  bind:ref
14
14
  class={cn(
15
- 'flex h-(--era-h-md) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
15
+ 'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  <ContextMenu.SubContent
16
16
  bind:ref
17
17
  class={cn(
18
- 'z-50 w-max overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
18
+ 'z-50 w-max overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
19
19
  className
20
20
  )}
21
21
  {sideOffset}
@@ -14,11 +14,11 @@
14
14
  <ContextMenu.SubTrigger
15
15
  bind:ref
16
16
  class={cn(
17
- 'flex h-(--era-h-md) cursor-pointer items-center justify-between gap-(--era-xs-inset-sm) rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[state=open]:bg-hover',
17
+ 'flex h-(--era-h-control) cursor-pointer items-center justify-between gap-(--era-icon-inset-chip) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[state=open]:bg-hover',
18
18
  className
19
19
  )}
20
20
  {...restProps}
21
21
  >
22
22
  {@render children?.()}
23
- <ChevronRight class="size-(--era-h-xs) text-muted" />
23
+ <ChevronRight class="size-(--era-h-icon) text-muted" />
24
24
  </ContextMenu.SubTrigger>
@@ -75,7 +75,7 @@
75
75
  // leaving one does the reverse; timing rides the motion axis, so the swap
76
76
  // snaps at instant, is decisive at normal, and overshoots at extra.
77
77
  const iconBase =
78
- 'absolute inset-0 size-(--era-h-xs) transition-[opacity,scale,filter] duration-(--era-duration) ease-(--era-ease)';
78
+ 'absolute inset-0 size-(--era-h-icon) transition-[opacity,scale,filter] duration-(--era-duration) ease-(--era-ease)';
79
79
  const iconIn = 'scale-100 opacity-100 blur-none';
80
80
  const iconOut = 'scale-25 opacity-0 blur-xs';
81
81
  </script>
@@ -89,7 +89,7 @@
89
89
  onclick={copy}
90
90
  {...restProps}
91
91
  >
92
- <span class="relative block size-(--era-h-xs) shrink-0">
92
+ <span class="relative block size-(--era-h-icon) shrink-0">
93
93
  <IdleIcon class={cn(iconBase, status === 'idle' ? iconIn : iconOut)} />
94
94
  <SuccessIcon class={cn(iconBase, 'text-success', status === 'success' ? iconIn : iconOut)} />
95
95
  <FailureIcon
@@ -140,7 +140,7 @@
140
140
  {@render children(option)}
141
141
  {:else if option.icon}
142
142
  {@const Icon = option.icon}
143
- <Icon class="size-(--era-h-xs) shrink-0" />
143
+ <Icon class="size-(--era-h-icon) shrink-0" />
144
144
  {:else}
145
145
  {option.label}
146
146
  {/if}
@@ -8,7 +8,7 @@
8
8
  <DateField.Segment
9
9
  bind:ref
10
10
  class={cn(
11
- 'inline-flex h-(--era-h-sm) items-center rounded-(--era-rd-sm) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
11
+ 'inline-flex h-(--era-h-chip) items-center rounded-(--era-rd-chip) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
12
12
  className
13
13
  )}
14
14
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  bind:ref
16
16
  align="start"
17
17
  class={cn(
18
- 'z-50 rounded-(--era-rd-lg) bg-(--era-surface-bg-elevated) p-(--era-pad-lg) shadow-(--era-shadow-lg) glass-blur',
18
+ 'z-50 rounded-(--era-rd-bar) bg-(--era-surface-bg-elevated) p-(--era-pad-content) shadow-(--era-shadow-lg) glass-blur',
19
19
  className
20
20
  )}
21
21
  {sideOffset}
@@ -8,7 +8,7 @@
8
8
  <DatePicker.Day
9
9
  bind:ref
10
10
  class={cn(
11
- 'inline-flex size-(--era-h-md) cursor-default items-center justify-center rounded-(--era-rd-md) 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',
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}
@@ -12,7 +12,7 @@
12
12
  <DatePicker.HeadCell
13
13
  bind:ref
14
14
  class={cn(
15
- 'flex size-(--era-h-md) items-center justify-center text-body font-normal text-muted',
15
+ 'flex size-(--era-h-control) items-center justify-center text-body font-normal text-muted',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -7,6 +7,6 @@
7
7
 
8
8
  <DatePicker.Header
9
9
  bind:ref
10
- class={cn('flex h-(--era-h-md) items-center justify-between gap-(--era-gap)', className)}
10
+ class={cn('flex h-(--era-h-control) items-center justify-between gap-(--era-gap)', className)}
11
11
  {...restProps}
12
12
  />
@@ -23,7 +23,7 @@
23
23
  {#if children}
24
24
  {@render children()}
25
25
  {:else}
26
- <ChevronRight class="size-(--era-h-xs)" />
26
+ <ChevronRight class="size-(--era-h-icon)" />
27
27
  {/if}
28
28
  </Button>
29
29
  {/snippet}
@@ -23,7 +23,7 @@
23
23
  {#if children}
24
24
  {@render children()}
25
25
  {:else}
26
- <ChevronLeft class="size-(--era-h-xs)" />
26
+ <ChevronLeft class="size-(--era-h-icon)" />
27
27
  {/if}
28
28
  </Button>
29
29
  {/snippet}
@@ -8,7 +8,7 @@
8
8
  <DatePicker.Segment
9
9
  bind:ref
10
10
  class={cn(
11
- 'inline-flex h-(--era-h-sm) items-center rounded-(--era-rd-sm) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
11
+ 'inline-flex h-(--era-h-chip) items-center rounded-(--era-rd-chip) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
12
12
  className
13
13
  )}
14
14
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  <DatePicker.Trigger
15
15
  bind:ref
16
16
  class={cn(
17
- 'ml-auto flex size-(--era-h-sm) shrink-0 items-center justify-center rounded-(--era-rd-sm) text-muted hover:bg-(--era-highlight) hover:text-fg focus:outline-none',
17
+ 'ml-auto flex size-(--era-h-chip) shrink-0 items-center justify-center rounded-(--era-rd-chip) text-muted hover:bg-(--era-highlight) hover:text-fg focus:outline-none',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -22,6 +22,6 @@
22
22
  {#if children}
23
23
  {@render children()}
24
24
  {:else}
25
- <CalendarDays class="size-(--era-h-xs)" />
25
+ <CalendarDays class="size-(--era-h-icon)" />
26
26
  {/if}
27
27
  </DatePicker.Trigger>
@@ -12,7 +12,7 @@
12
12
  <DateRangeField.Segment
13
13
  bind:ref
14
14
  class={cn(
15
- 'inline-flex h-(--era-h-sm) items-center rounded-(--era-rd-sm) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
15
+ 'inline-flex h-(--era-h-chip) items-center rounded-(--era-rd-chip) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  bind:ref
16
16
  align="start"
17
17
  class={cn(
18
- 'z-50 rounded-(--era-rd-lg) bg-(--era-surface-bg-elevated) p-(--era-pad-lg) shadow-(--era-shadow-lg) glass-blur',
18
+ 'z-50 rounded-(--era-rd-bar) bg-(--era-surface-bg-elevated) p-(--era-pad-content) shadow-(--era-shadow-lg) glass-blur',
19
19
  className
20
20
  )}
21
21
  {sideOffset}
@@ -12,7 +12,7 @@
12
12
  <DateRangePicker.Day
13
13
  bind:ref
14
14
  class={cn(
15
- 'inline-flex size-(--era-h-md) cursor-default items-center justify-center rounded-(--era-rd-md) text-body text-fg hover:bg-(--era-highlight) focus:outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[outside-month]:pointer-events-none data-[outside-month]:text-muted/40 data-[range-end]:bg-primary data-[range-end]:text-primary-fg data-[range-start]:bg-primary data-[range-start]:text-primary-fg data-[selected]:bg-hover data-[selected]:text-bright data-[unavailable]:text-muted data-[unavailable]:line-through',
15
+ '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-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[outside-month]:pointer-events-none data-[outside-month]:text-muted/40 data-[range-end]:bg-primary data-[range-end]:text-primary-fg data-[range-start]:bg-primary data-[range-start]:text-primary-fg data-[selected]:bg-hover data-[selected]:text-bright data-[unavailable]:text-muted data-[unavailable]:line-through',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -12,7 +12,7 @@
12
12
  <DateRangePicker.HeadCell
13
13
  bind:ref
14
14
  class={cn(
15
- 'flex size-(--era-h-md) items-center justify-center text-body font-normal text-muted',
15
+ 'flex size-(--era-h-control) items-center justify-center text-body font-normal text-muted',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -11,6 +11,6 @@
11
11
 
12
12
  <DateRangePicker.Header
13
13
  bind:ref
14
- class={cn('flex h-(--era-h-md) items-center justify-between gap-(--era-gap)', className)}
14
+ class={cn('flex h-(--era-h-control) items-center justify-between gap-(--era-gap)', className)}
15
15
  {...restProps}
16
16
  />
@@ -23,7 +23,7 @@
23
23
  {#if children}
24
24
  {@render children()}
25
25
  {:else}
26
- <ChevronRight class="size-(--era-h-xs)" />
26
+ <ChevronRight class="size-(--era-h-icon)" />
27
27
  {/if}
28
28
  </Button>
29
29
  {/snippet}
@@ -23,7 +23,7 @@
23
23
  {#if children}
24
24
  {@render children()}
25
25
  {:else}
26
- <ChevronLeft class="size-(--era-h-xs)" />
26
+ <ChevronLeft class="size-(--era-h-icon)" />
27
27
  {/if}
28
28
  </Button>
29
29
  {/snippet}
@@ -12,7 +12,7 @@
12
12
  <DateRangePicker.Segment
13
13
  bind:ref
14
14
  class={cn(
15
- 'inline-flex h-(--era-h-sm) items-center rounded-(--era-rd-sm) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
15
+ 'inline-flex h-(--era-h-chip) items-center rounded-(--era-rd-chip) px-[calc(var(--era-sp)/2)] focus:bg-(--era-highlight) focus:text-bright focus:outline-none aria-[valuetext=Empty]:text-muted data-[segment=literal]:text-muted',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -14,7 +14,7 @@
14
14
  <DateRangePicker.Trigger
15
15
  bind:ref
16
16
  class={cn(
17
- 'ml-auto flex size-(--era-h-sm) shrink-0 items-center justify-center rounded-(--era-rd-sm) text-muted hover:bg-(--era-highlight) hover:text-fg focus:outline-none',
17
+ 'ml-auto flex size-(--era-h-chip) shrink-0 items-center justify-center rounded-(--era-rd-chip) text-muted hover:bg-(--era-highlight) hover:text-fg focus:outline-none',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -22,6 +22,6 @@
22
22
  {#if children}
23
23
  {@render children()}
24
24
  {:else}
25
- <CalendarDays class="size-(--era-h-xs)" />
25
+ <CalendarDays class="size-(--era-h-icon)" />
26
26
  {/if}
27
27
  </DateRangePicker.Trigger>
@@ -31,14 +31,16 @@
31
31
  bind:ref
32
32
  class={cn(
33
33
  'fixed top-1/2 left-1/2 z-50 flex w-full max-w-md -translate-x-1/2 -translate-y-1/2 flex-col border border-divider bg-(--era-surface-bg) shadow-(--era-shadow-lg) glass-blur',
34
- header ? 'rounded-(--era-rd-md)' : 'gap-(--era-gap) rounded-(--era-rd-lg) p-(--era-pad-md)',
34
+ header
35
+ ? 'rounded-(--era-rd-control)'
36
+ : 'gap-(--era-gap) rounded-(--era-rd-bar) p-(--era-pad-card)',
35
37
  className
36
38
  )}
37
39
  {...restProps}
38
40
  >
39
41
  {#if header}
40
42
  {@render header()}
41
- <div class="flex min-h-0 flex-col gap-(--era-gap) p-(--era-pad-md)">
43
+ <div class="flex min-h-0 flex-col gap-(--era-gap) p-(--era-pad-card)">
42
44
  {@render children?.()}
43
45
  </div>
44
46
  {:else}
@@ -21,7 +21,7 @@
21
21
  variant IS the cap law (outset divider, rd-md corners), shared with
22
22
  Pane.Handle. What this part adds:
23
23
 
24
- · the leading side at --era-inset-md: a title has no corner to nest, so
24
+ · the leading side at --era-inset-control: a title has no corner to nest, so
25
25
  it takes the text inset, the same asymmetry the pane and the
26
26
  Conversations row document
27
27
  · the × is the dismiss family's: an xxs `Dialog.Close` whose tier
@@ -31,7 +31,7 @@
31
31
  `header` snippet, so the bar spans the panel edge to edge and the panel's
32
32
  radius follows this corner region (rd-md — the same law that sizes the
33
33
  pane's own corners). -->
34
- <Bar size="md" content="xxs" divider class={cn('pl-(--era-inset-md) select-none', className)}>
34
+ <Bar size="md" content="xxs" divider class={cn('pl-(--era-inset-control) select-none', className)}>
35
35
  {@render children?.()}
36
36
  {#if dismissable}
37
37
  <Close icon size="xxs" tone="destructive" aria-label="Close" class="ml-auto">
@@ -14,7 +14,7 @@
14
14
  bind:ref
15
15
  bind:checked
16
16
  class={cn(
17
- 'flex h-(--era-h-md) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
17
+ 'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -29,7 +29,7 @@
29
29
  // floating menu, like the context menu it should match: full radius, a
30
30
  // gutter of air, shadow doing the separating.
31
31
  class={cn(
32
- 'z-50 w-max min-w-(--bits-dropdown-menu-anchor-width) overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
32
+ 'z-50 w-max min-w-(--bits-dropdown-menu-anchor-width) overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
33
33
  className
34
34
  )}
35
35
  {sideOffset}
@@ -11,6 +11,9 @@
11
11
 
12
12
  <DropdownMenu.GroupHeading
13
13
  bind:ref
14
- class={cn('flex h-(--era-h-md) items-center px-(--era-inset-md) text-body text-muted', className)}
14
+ class={cn(
15
+ 'flex h-(--era-h-control) items-center px-(--era-inset-control) text-body text-muted',
16
+ className
17
+ )}
15
18
  {...restProps}
16
19
  />
@@ -13,7 +13,7 @@
13
13
  <DropdownMenu.Item
14
14
  bind:ref
15
15
  class={cn(
16
- 'flex h-(--era-h-md) cursor-pointer items-center gap-(--era-gap) rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
16
+ 'flex h-(--era-h-control) cursor-pointer items-center gap-(--era-gap) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -12,7 +12,7 @@
12
12
  <DropdownMenu.RadioItem
13
13
  bind:ref
14
14
  class={cn(
15
- 'flex h-(--era-h-md) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
15
+ 'flex h-(--era-h-control) cursor-pointer items-center rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
16
16
  className
17
17
  )}
18
18
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  <DropdownMenu.SubContent
16
16
  bind:ref
17
17
  class={cn(
18
- 'z-50 w-max overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
18
+ 'z-50 w-max overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur',
19
19
  className
20
20
  )}
21
21
  {sideOffset}
@@ -14,11 +14,11 @@
14
14
  <DropdownMenu.SubTrigger
15
15
  bind:ref
16
16
  class={cn(
17
- 'flex h-(--era-h-md) cursor-pointer items-center justify-between gap-(--era-xs-inset-sm) rounded-(--era-item-rd) px-(--era-inset-md) text-body text-fg data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[state=open]:bg-hover',
17
+ 'flex h-(--era-h-control) cursor-pointer items-center justify-between gap-(--era-icon-inset-chip) rounded-(--era-item-rd) px-(--era-inset-control) text-body text-fg data-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow) data-[state=open]:bg-hover',
18
18
  className
19
19
  )}
20
20
  {...restProps}
21
21
  >
22
22
  {@render children?.()}
23
- <ChevronRight class="size-(--era-h-xs) text-muted" />
23
+ <ChevronRight class="size-(--era-h-icon) text-muted" />
24
24
  </DropdownMenu.SubTrigger>
@@ -14,11 +14,11 @@
14
14
  <DropdownMenu.Trigger
15
15
  bind:ref
16
16
  class={cn(
17
- 'flex h-(--era-h-md) w-full items-center justify-between gap-(--era-xs-inset-sm) rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) px-(--era-inset-md) text-body text-fg shadow-(--era-shadow) focus:bg-(--era-highlight) focus:outline-none disabled:opacity-50 data-[state=open]:rounded-b-none data-[state=open]:shadow-(--era-shadow-pressed)',
17
+ 'flex h-(--era-h-control) w-full items-center justify-between gap-(--era-icon-inset-chip) rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) px-(--era-inset-control) text-body text-fg shadow-(--era-shadow) focus:bg-(--era-highlight) focus:outline-none disabled:opacity-50 data-[state=open]:rounded-b-none data-[state=open]:shadow-(--era-shadow-pressed)',
18
18
  className
19
19
  )}
20
20
  {...restProps}
21
21
  >
22
22
  {@render children?.()}
23
- <ChevronDown class="size-(--era-h-xs) text-muted" />
23
+ <ChevronDown class="size-(--era-h-icon) text-muted" />
24
24
  </DropdownMenu.Trigger>
@@ -74,7 +74,7 @@
74
74
  data-dragging={dragging || undefined}
75
75
  data-disabled={disabled || undefined}
76
76
  class={cn(
77
- 'flex h-(--era-h-md) w-full items-center gap-(--era-gap) rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) px-(--era-inset-md) font-mono text-body leading-none text-fg shadow-(--era-shadow-well) transition-colors duration-(--era-duration) focus-within:bg-(--era-highlight) hover:bg-(--era-highlight) data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[dragging]:bg-(--era-highlight) data-[dragging]:text-bright',
77
+ 'flex h-(--era-h-control) w-full items-center gap-(--era-gap) rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) px-(--era-inset-control) font-mono text-body leading-none text-fg shadow-(--era-shadow-well) transition-colors duration-(--era-duration) focus-within:bg-(--era-highlight) hover:bg-(--era-highlight) data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[dragging]:bg-(--era-highlight) data-[dragging]:text-bright',
78
78
  className
79
79
  )}
80
80
  ondragenter={onDragEnter}
@@ -82,7 +82,7 @@
82
82
  ondragover={onDragOver}
83
83
  ondrop={onDrop}
84
84
  >
85
- <Upload class="size-(--era-h-xs) shrink-0" />
85
+ <Upload class="size-(--era-h-icon) shrink-0" />
86
86
  <span class="truncate {files && files.length > 0 ? 'text-bright' : 'text-muted'}">
87
87
  {label()}
88
88
  </span>
@@ -24,7 +24,7 @@
24
24
  /** Lucide glyph rendered inside the field, left of the text. */
25
25
  icon?: Component<IconProps> | null;
26
26
  /**
27
- * Field tier. `xxs` is badge height — for compact chrome where the field
27
+ * Field tier. `pill` is badge height — for compact chrome where the field
28
28
  * sits level with xxs buttons. See inputVariants.
29
29
  */
30
30
  size?: 'md' | 'xxs';
@@ -51,10 +51,10 @@
51
51
 
52
52
  // The field's glyph is the icon tier OF ITS OWN TIER, which is what puts it on
53
53
  // the same optical footing as the icon button beside it: an md field pairs
54
- // with a default button (h-xs glyph), an xxs field with an xxs button
54
+ // with a default button (h-icon glyph), an xxs field with a pill-tier button
55
55
  // (icon-xxs). One size for both would leave the two glyphs in one bar drawn at
56
56
  // different weights.
57
- const glyphClass = $derived(size === 'xxs' ? 'size-(--era-icon-xxs)' : 'size-(--era-h-xs)');
57
+ const glyphClass = $derived(size === 'xxs' ? 'size-(--era-glyph-pill)' : 'size-(--era-h-icon)');
58
58
  </script>
59
59
 
60
60
  {#if icon}
@@ -6,7 +6,7 @@ type $$ComponentProps = Omit<HTMLInputAttributes, 'size'> & {
6
6
  /** Lucide glyph rendered inside the field, left of the text. */
7
7
  icon?: Component<IconProps> | null;
8
8
  /**
9
- * Field tier. `xxs` is badge height — for compact chrome where the field
9
+ * Field tier. `pill` is badge height — for compact chrome where the field
10
10
  * sits level with xxs buttons. See inputVariants.
11
11
  */
12
12
  size?: 'md' | 'xxs';
@@ -21,7 +21,7 @@
21
21
  inputVariants({ height: 'auto' }),
22
22
  // It grows, so the vertical inset has to be stated: the tier height is what
23
23
  // centres one line of text in every other field, and there isn't one here.
24
- 'resize-y py-(--era-inset-md)',
24
+ 'resize-y py-(--era-inset-control)',
25
25
  className
26
26
  )}
27
27
  {...restProps}></textarea>