@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.
Files changed (224) 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/notes.svelte +9 -9
  67. package/dist/dev/audit/audits/_helpers.js +1 -1
  68. package/dist/dev/audit/audits/resting-gap.js +1 -1
  69. package/dist/dev/audit/audits/single-glyph-square.js +2 -2
  70. package/dist/dev/audit-overlay.svelte +7 -7
  71. package/dist/dev/measure.d.ts +1 -1
  72. package/dist/dev/measure.js +1 -1
  73. package/dist/docs/badge.md +1 -1
  74. package/dist/docs/css-utilities.d.ts +1 -1
  75. package/dist/docs/css-utilities.js +8 -8
  76. package/dist/docs/llms-txt.js +1 -1
  77. package/dist/era-ui.css +1 -1
  78. package/dist/generated-docs/badge.md +1 -1
  79. package/dist/generated-docs/bar.md +2 -2
  80. package/dist/generated-docs/chip.md +1 -1
  81. package/dist/generated-docs/input.md +1 -1
  82. package/dist/generated-docs/llms-full.txt +99 -119
  83. package/dist/generated-docs/llms.txt +11 -12
  84. package/dist/generated-docs/manifest.json +52 -65
  85. package/dist/generated-docs/utilities.json +45 -57
  86. package/dist/generated-docs/utilities.md +87 -106
  87. package/dist/os/notification-center.svelte +6 -6
  88. package/dist/os/pane.svelte +7 -5
  89. package/dist/os/taskbar.svelte +10 -10
  90. package/dist/os/toast.svelte +3 -3
  91. package/dist/os/toaster.svelte +1 -1
  92. package/dist/styles/density.css +93 -67
  93. package/dist/styles/index.css +89 -101
  94. package/dist/styles/prose.css +12 -12
  95. package/dist/styles/surfaces/base.css +3 -3
  96. package/dist/styles/surfaces/bevel.css +2 -2
  97. package/dist/ui/accordion/accordion-trigger.svelte +2 -2
  98. package/dist/ui/alert-dialog/alert-dialog-content.svelte +1 -1
  99. package/dist/ui/aspect-ratio/aspect-ratio.svelte +1 -1
  100. package/dist/ui/avatar/avatar-root.svelte +1 -1
  101. package/dist/ui/badge/badge.svelte +1 -1
  102. package/dist/ui/badge/badge.svelte.d.ts +1 -1
  103. package/dist/ui/bar/bar.svelte +23 -15
  104. package/dist/ui/bar/bar.svelte.d.ts +26 -26
  105. package/dist/ui/button/button.svelte +1 -1
  106. package/dist/ui/button/variants.js +18 -18
  107. package/dist/ui/button-group/button-group.svelte +2 -2
  108. package/dist/ui/calendar/calendar-day.svelte +1 -1
  109. package/dist/ui/calendar/calendar-head-cell.svelte +1 -1
  110. package/dist/ui/calendar/calendar-header.svelte +1 -1
  111. package/dist/ui/calendar/calendar-next-button.svelte +1 -1
  112. package/dist/ui/calendar/calendar-prev-button.svelte +1 -1
  113. package/dist/ui/card/card.svelte +5 -5
  114. package/dist/ui/card/card.svelte.d.ts +4 -4
  115. package/dist/ui/checkbox/checkbox.svelte +3 -3
  116. package/dist/ui/chip/chip.svelte +14 -10
  117. package/dist/ui/chip/chip.svelte.d.ts +7 -7
  118. package/dist/ui/code-block/code-block.svelte +6 -6
  119. package/dist/ui/collapsible/collapsible-trigger.svelte +1 -1
  120. package/dist/ui/combobox/combobox-content.svelte +1 -1
  121. package/dist/ui/combobox/combobox-empty.svelte +4 -1
  122. package/dist/ui/combobox/combobox-group-heading.svelte +4 -1
  123. package/dist/ui/combobox/combobox-item.svelte +1 -1
  124. package/dist/ui/combobox/combobox-trigger.svelte +2 -2
  125. package/dist/ui/command/command-group-heading.svelte +4 -1
  126. package/dist/ui/command/command-item.svelte +1 -1
  127. package/dist/ui/command/command-link-item.svelte +1 -1
  128. package/dist/ui/command/command-root.svelte +1 -1
  129. package/dist/ui/command-bar/command-bar.svelte +16 -12
  130. package/dist/ui/context-menu/context-menu-checkbox-item.svelte +1 -1
  131. package/dist/ui/context-menu/context-menu-content.svelte +1 -1
  132. package/dist/ui/context-menu/context-menu-group-heading.svelte +4 -1
  133. package/dist/ui/context-menu/context-menu-item.svelte +1 -1
  134. package/dist/ui/context-menu/context-menu-radio-item.svelte +1 -1
  135. package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
  136. package/dist/ui/context-menu/context-menu-sub-trigger.svelte +2 -2
  137. package/dist/ui/copy-button/copy-button.svelte +2 -2
  138. package/dist/ui/cycle/cycle.svelte +1 -1
  139. package/dist/ui/date-field/date-field-segment.svelte +1 -1
  140. package/dist/ui/date-picker/date-picker-content.svelte +1 -1
  141. package/dist/ui/date-picker/date-picker-day.svelte +1 -1
  142. package/dist/ui/date-picker/date-picker-head-cell.svelte +1 -1
  143. package/dist/ui/date-picker/date-picker-header.svelte +1 -1
  144. package/dist/ui/date-picker/date-picker-next-button.svelte +1 -1
  145. package/dist/ui/date-picker/date-picker-prev-button.svelte +1 -1
  146. package/dist/ui/date-picker/date-picker-segment.svelte +1 -1
  147. package/dist/ui/date-picker/date-picker-trigger.svelte +2 -2
  148. package/dist/ui/date-range-field/date-range-field-segment.svelte +1 -1
  149. package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -1
  150. package/dist/ui/date-range-picker/date-range-picker-day.svelte +1 -1
  151. package/dist/ui/date-range-picker/date-range-picker-head-cell.svelte +1 -1
  152. package/dist/ui/date-range-picker/date-range-picker-header.svelte +1 -1
  153. package/dist/ui/date-range-picker/date-range-picker-next-button.svelte +1 -1
  154. package/dist/ui/date-range-picker/date-range-picker-prev-button.svelte +1 -1
  155. package/dist/ui/date-range-picker/date-range-picker-segment.svelte +1 -1
  156. package/dist/ui/date-range-picker/date-range-picker-trigger.svelte +2 -2
  157. package/dist/ui/dialog/dialog-content.svelte +4 -2
  158. package/dist/ui/dialog/dialog-header.svelte +2 -2
  159. package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  160. package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  161. package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +4 -1
  162. package/dist/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
  163. package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
  164. package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  165. package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
  166. package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +2 -2
  167. package/dist/ui/file-upload/file-upload.svelte +2 -2
  168. package/dist/ui/input/input.svelte +3 -3
  169. package/dist/ui/input/input.svelte.d.ts +1 -1
  170. package/dist/ui/input/textarea.svelte +1 -1
  171. package/dist/ui/input/variants.d.ts +24 -24
  172. package/dist/ui/input/variants.js +9 -9
  173. package/dist/ui/kv/kv.svelte +2 -2
  174. package/dist/ui/link-preview/link-preview-content.svelte +1 -1
  175. package/dist/ui/menubar/menubar-checkbox-item.svelte +1 -1
  176. package/dist/ui/menubar/menubar-content.svelte +1 -1
  177. package/dist/ui/menubar/menubar-group-heading.svelte +4 -1
  178. package/dist/ui/menubar/menubar-item.svelte +1 -1
  179. package/dist/ui/menubar/menubar-radio-item.svelte +1 -1
  180. package/dist/ui/menubar/menubar-root.svelte +1 -1
  181. package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
  182. package/dist/ui/menubar/menubar-sub-trigger.svelte +2 -2
  183. package/dist/ui/menubar/menubar-trigger.svelte +1 -1
  184. package/dist/ui/meter/meter.svelte +1 -1
  185. package/dist/ui/pagination/pagination-next-button.svelte +1 -1
  186. package/dist/ui/pagination/pagination-prev-button.svelte +1 -1
  187. package/dist/ui/pane/pane-close.svelte +2 -2
  188. package/dist/ui/pane/pane-content.svelte +1 -1
  189. package/dist/ui/pane/pane-handle.svelte +3 -3
  190. package/dist/ui/pane/pane-root.svelte +12 -12
  191. package/dist/ui/pane/pane-tab-list.svelte +1 -1
  192. package/dist/ui/pane/pane-tab-panel.svelte +1 -1
  193. package/dist/ui/pane/pane-tab.svelte +1 -1
  194. package/dist/ui/pane/pane.svelte +1 -1
  195. package/dist/ui/pin-input/pin-input-cell.svelte +1 -1
  196. package/dist/ui/popover/popover-content.svelte +1 -1
  197. package/dist/ui/progress/progress.svelte +1 -1
  198. package/dist/ui/radio-group/radio-group-item.svelte +2 -2
  199. package/dist/ui/rating-group/rating-group-item.svelte +1 -1
  200. package/dist/ui/scroll-area/scroll-area-thumb.svelte +1 -1
  201. package/dist/ui/scroll-area/scroll-area.svelte +1 -1
  202. package/dist/ui/select/select-content.svelte +1 -1
  203. package/dist/ui/select/select-group-heading.svelte +4 -1
  204. package/dist/ui/select/select-item.svelte +1 -1
  205. package/dist/ui/select/select-trigger.svelte +2 -2
  206. package/dist/ui/select/select-value.svelte +1 -1
  207. package/dist/ui/sheet/sheet-content.svelte +3 -3
  208. package/dist/ui/sheet/sheet-content.svelte.d.ts +6 -6
  209. package/dist/ui/skeleton/skeleton.svelte +3 -3
  210. package/dist/ui/skeleton/skeleton.svelte.d.ts +9 -9
  211. package/dist/ui/slider/slider-range.svelte +1 -1
  212. package/dist/ui/slider/slider-thumb.svelte +1 -1
  213. package/dist/ui/step/step-content.svelte +1 -1
  214. package/dist/ui/step/step-summary.svelte +6 -6
  215. package/dist/ui/switch/switch.svelte +3 -3
  216. package/dist/ui/table/table-cell.svelte +1 -1
  217. package/dist/ui/table/table-head-cell.svelte +1 -1
  218. package/dist/ui/time-field/time-field-segment.svelte +1 -1
  219. package/dist/ui/time-range-field/time-range-field-segment.svelte +1 -1
  220. package/dist/ui/toggle-group/toggle-group-item.svelte +1 -1
  221. package/dist/ui/tooltip/tooltip-content.svelte +1 -1
  222. package/dist/ui/video-player/video-player.svelte +44 -44
  223. package/dist/utils/index.js +4 -4
  224. package/package.json +1 -1
@@ -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>
@@ -50,18 +50,18 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
50
50
  * - `md` (default) — THE field, and the pairing an md bar's md content
51
51
  * expects. Its --era-field-px is glyph-advance derived: the padding a
52
52
  * STRING of text wants, not a single centred glyph.
53
- * - `xxs` — the pill-tier field, at badge height (18/20/22/26). This is the
53
+ * - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
54
54
  * SMALLEST tier that can hold body text at all: its inset is
55
- * (h-xxs − text)/2, so 2px remain to centre 14px text in, where the tier
56
- * below (h-xs) IS the text size and has none left. For compact chrome —
55
+ * (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
56
+ * below (h-icon) IS the text size and has none left. For compact chrome —
57
57
  * a filter that sits level with an xxs icon button, a title bar that
58
58
  * shouldn't outweigh the document under it. Side padding is
59
- * --era-pill-xxs, exactly what Badge and Chip use, so a field and a pill
59
+ * --era-pill-px, exactly what Badge and Chip use, so a field and a pill
60
60
  * on this tier read as one family.
61
61
  */
62
62
  size: {
63
- md: "h-(--era-h-md) rounded-(--era-rd-md) px-(--era-field-px)";
64
- xxs: "h-(--era-h-xxs) rounded-(--era-rd-xxs) px-(--era-pill-xxs)";
63
+ md: "h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)";
64
+ xxs: "h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)";
65
65
  };
66
66
  /**
67
67
  * Height OVERRIDES, for the fields that are not their tier's height. No
@@ -69,7 +69,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
69
69
  */
70
70
  height: {
71
71
  full: "h-full";
72
- auto: "h-auto min-h-(--era-h-md)";
72
+ auto: "h-auto min-h-(--era-h-control)";
73
73
  };
74
74
  /**
75
75
  * Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
@@ -80,7 +80,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
80
80
  * below.
81
81
  */
82
82
  pad: {
83
- trailing: "ps-(--era-field-px) pe-(--era-sm-inset-md)";
83
+ trailing: "ps-(--era-field-px) pe-(--era-chip-inset-control)";
84
84
  none: "px-0";
85
85
  };
86
86
  }, undefined, "flex w-full era-interactive text-body text-fg placeholder:text-muted", {
@@ -118,18 +118,18 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
118
118
  * - `md` (default) — THE field, and the pairing an md bar's md content
119
119
  * expects. Its --era-field-px is glyph-advance derived: the padding a
120
120
  * STRING of text wants, not a single centred glyph.
121
- * - `xxs` — the pill-tier field, at badge height (18/20/22/26). This is the
121
+ * - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
122
122
  * SMALLEST tier that can hold body text at all: its inset is
123
- * (h-xxs − text)/2, so 2px remain to centre 14px text in, where the tier
124
- * below (h-xs) IS the text size and has none left. For compact chrome —
123
+ * (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
124
+ * below (h-icon) IS the text size and has none left. For compact chrome —
125
125
  * a filter that sits level with an xxs icon button, a title bar that
126
126
  * shouldn't outweigh the document under it. Side padding is
127
- * --era-pill-xxs, exactly what Badge and Chip use, so a field and a pill
127
+ * --era-pill-px, exactly what Badge and Chip use, so a field and a pill
128
128
  * on this tier read as one family.
129
129
  */
130
130
  size: {
131
- md: "h-(--era-h-md) rounded-(--era-rd-md) px-(--era-field-px)";
132
- xxs: "h-(--era-h-xxs) rounded-(--era-rd-xxs) px-(--era-pill-xxs)";
131
+ md: "h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)";
132
+ xxs: "h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)";
133
133
  };
134
134
  /**
135
135
  * Height OVERRIDES, for the fields that are not their tier's height. No
@@ -137,7 +137,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
137
137
  */
138
138
  height: {
139
139
  full: "h-full";
140
- auto: "h-auto min-h-(--era-h-md)";
140
+ auto: "h-auto min-h-(--era-h-control)";
141
141
  };
142
142
  /**
143
143
  * Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
@@ -148,7 +148,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
148
148
  * below.
149
149
  */
150
150
  pad: {
151
- trailing: "ps-(--era-field-px) pe-(--era-sm-inset-md)";
151
+ trailing: "ps-(--era-field-px) pe-(--era-chip-inset-control)";
152
152
  none: "px-0";
153
153
  };
154
154
  }, undefined, import("tailwind-variants").TVReturnTypeLike<{
@@ -186,18 +186,18 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
186
186
  * - `md` (default) — THE field, and the pairing an md bar's md content
187
187
  * expects. Its --era-field-px is glyph-advance derived: the padding a
188
188
  * STRING of text wants, not a single centred glyph.
189
- * - `xxs` — the pill-tier field, at badge height (18/20/22/26). This is the
189
+ * - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
190
190
  * SMALLEST tier that can hold body text at all: its inset is
191
- * (h-xxs − text)/2, so 2px remain to centre 14px text in, where the tier
192
- * below (h-xs) IS the text size and has none left. For compact chrome —
191
+ * (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
192
+ * below (h-icon) IS the text size and has none left. For compact chrome —
193
193
  * a filter that sits level with an xxs icon button, a title bar that
194
194
  * shouldn't outweigh the document under it. Side padding is
195
- * --era-pill-xxs, exactly what Badge and Chip use, so a field and a pill
195
+ * --era-pill-px, exactly what Badge and Chip use, so a field and a pill
196
196
  * on this tier read as one family.
197
197
  */
198
198
  size: {
199
- md: "h-(--era-h-md) rounded-(--era-rd-md) px-(--era-field-px)";
200
- xxs: "h-(--era-h-xxs) rounded-(--era-rd-xxs) px-(--era-pill-xxs)";
199
+ md: "h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)";
200
+ xxs: "h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)";
201
201
  };
202
202
  /**
203
203
  * Height OVERRIDES, for the fields that are not their tier's height. No
@@ -205,7 +205,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
205
205
  */
206
206
  height: {
207
207
  full: "h-full";
208
- auto: "h-auto min-h-(--era-h-md)";
208
+ auto: "h-auto min-h-(--era-h-control)";
209
209
  };
210
210
  /**
211
211
  * Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
@@ -216,7 +216,7 @@ export declare const inputVariants: import("tailwind-variants").TVReturnType<{
216
216
  * below.
217
217
  */
218
218
  pad: {
219
- trailing: "ps-(--era-field-px) pe-(--era-sm-inset-md)";
219
+ trailing: "ps-(--era-field-px) pe-(--era-chip-inset-control)";
220
220
  none: "px-0";
221
221
  };
222
222
  }, undefined>>;
@@ -53,18 +53,18 @@ export const inputVariants = tv({
53
53
  * - `md` (default) — THE field, and the pairing an md bar's md content
54
54
  * expects. Its --era-field-px is glyph-advance derived: the padding a
55
55
  * STRING of text wants, not a single centred glyph.
56
- * - `xxs` — the pill-tier field, at badge height (18/20/22/26). This is the
56
+ * - `pill` — the pill-tier field, at badge height (18/20/22/26). This is the
57
57
  * SMALLEST tier that can hold body text at all: its inset is
58
- * (h-xxs − text)/2, so 2px remain to centre 14px text in, where the tier
59
- * below (h-xs) IS the text size and has none left. For compact chrome —
58
+ * (h-pill − text)/2, so 2px remain to centre 14px text in, where the tier
59
+ * below (h-icon) IS the text size and has none left. For compact chrome —
60
60
  * a filter that sits level with an xxs icon button, a title bar that
61
61
  * shouldn't outweigh the document under it. Side padding is
62
- * --era-pill-xxs, exactly what Badge and Chip use, so a field and a pill
62
+ * --era-pill-px, exactly what Badge and Chip use, so a field and a pill
63
63
  * on this tier read as one family.
64
64
  */
65
65
  size: {
66
- md: 'h-(--era-h-md) rounded-(--era-rd-md) px-(--era-field-px)',
67
- xxs: 'h-(--era-h-xxs) rounded-(--era-rd-xxs) px-(--era-pill-xxs)'
66
+ md: 'h-(--era-h-control) rounded-(--era-rd-control) px-(--era-field-px)',
67
+ xxs: 'h-(--era-h-pill) rounded-(--era-rd-pill) px-(--era-pill-px)'
68
68
  },
69
69
  /**
70
70
  * Height OVERRIDES, for the fields that are not their tier's height. No
@@ -73,12 +73,12 @@ export const inputVariants = tv({
73
73
  height: {
74
74
  // h-full, NOT a tier height: a bare input's container IS the field, so it
75
75
  // takes that container's height. Keeping a tier height here made a bare
76
- // input inside an h-md Bar overflow it by the bar's border — a −0.5px
76
+ // input inside an h-control Bar overflow it by the bar's border — a −0.5px
77
77
  // gap, which is the even-gap law failing by a hair rather than obviously.
78
78
  full: 'h-full',
79
79
  // h-auto is load-bearing — it is what outranks the tier's own height so
80
80
  // the field can grow with its content (Textarea).
81
- auto: 'h-auto min-h-(--era-h-md)'
81
+ auto: 'h-auto min-h-(--era-h-control)'
82
82
  },
83
83
  /**
84
84
  * Side-padding OVERRIDES, same rule. `trailing` is for a field that holds a
@@ -89,7 +89,7 @@ export const inputVariants = tv({
89
89
  * below.
90
90
  */
91
91
  pad: {
92
- trailing: 'ps-(--era-field-px) pe-(--era-sm-inset-md)',
92
+ trailing: 'ps-(--era-field-px) pe-(--era-chip-inset-control)',
93
93
  none: 'px-0'
94
94
  }
95
95
  },
@@ -24,7 +24,7 @@
24
24
  // shrink-0 + nowrap like Badge/Chip: the overflow-hidden here is for the
25
25
  // key cell's squared corners, not a licence to crush — squeezed, this pill
26
26
  // clipped its value instead of bleeding it, which is quieter but no truer.
27
- 'inline-flex h-(--era-h-xxs) shrink-0 items-center overflow-hidden rounded-(--era-rd-xxs) bg-fill font-mono text-body era-text-trim leading-none whitespace-nowrap shadow-(--era-shadow)',
27
+ 'inline-flex h-(--era-h-pill) shrink-0 items-center overflow-hidden rounded-(--era-rd-pill) bg-fill font-mono text-body era-text-trim leading-none whitespace-nowrap shadow-(--era-shadow)',
28
28
  className
29
29
  )}
30
30
  {...restProps}
@@ -35,7 +35,7 @@
35
35
  actually runs — see era-token-ink. Stretching gives that block a full-
36
36
  height box for align-content to centre the trimmed line in. -->
37
37
  <span
38
- class="era-token-ink min-w-(--era-h-xxs) self-stretch px-(--era-inset-sm) text-muted tabular-nums"
38
+ class="era-token-ink min-w-(--era-h-pill) self-stretch px-(--era-inset-chip) text-muted tabular-nums"
39
39
  >{value}</span
40
40
  >
41
41
  </span>
@@ -15,7 +15,7 @@
15
15
  <LinkPreview.Content
16
16
  bind:ref
17
17
  class={cn(
18
- 'z-50 max-w-xs rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-inset-md) text-body shadow-(--era-shadow-lg) glass-blur',
18
+ 'z-50 max-w-xs rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-inset-control) text-body shadow-(--era-shadow-lg) glass-blur',
19
19
  className
20
20
  )}
21
21
  {sideOffset}
@@ -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-menubar-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-menubar-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
  <Menubar.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
  <Menubar.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}
@@ -8,7 +8,7 @@
8
8
  <Menubar.RadioItem
9
9
  bind:ref
10
10
  class={cn(
11
- '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)',
11
+ '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)',
12
12
  className
13
13
  )}
14
14
  {...restProps}
@@ -8,7 +8,7 @@
8
8
  <Menubar.Root
9
9
  bind:ref
10
10
  class={cn(
11
- 'flex h-(--era-h-lg) items-center rounded-(--era-rd-lg) bg-(--era-surface-bg) px-(--era-px-lg) shadow-(--era-shadow)',
11
+ 'flex h-(--era-h-bar) items-center rounded-(--era-rd-bar) bg-(--era-surface-bg) px-(--era-gap) shadow-(--era-shadow)',
12
12
  className
13
13
  )}
14
14
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  <Menubar.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
  <Menubar.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
  </Menubar.SubTrigger>
@@ -13,7 +13,7 @@
13
13
  <Menubar.Trigger
14
14
  bind:ref
15
15
  class={cn(
16
- 'flex h-(--era-h-md) items-center gap-(--era-gap) rounded-(--era-rd-md) px-(--era-inset-md) text-body text-fg hover:bg-(--era-highlight) focus:outline-none disabled:opacity-50 has-[svg]:gap-(--era-inset-md) data-[state=open]:rounded-b-none data-[state=open]:bg-hover',
16
+ 'flex h-(--era-h-control) items-center gap-(--era-gap) rounded-(--era-rd-control) px-(--era-inset-control) text-body text-fg hover:bg-(--era-highlight) focus:outline-none disabled:opacity-50 has-[svg]:gap-(--era-inset-control) data-[state=open]:rounded-b-none data-[state=open]:bg-hover',
17
17
  className
18
18
  )}
19
19
  {...restProps}
@@ -20,7 +20,7 @@
20
20
  {min}
21
21
  {max}
22
22
  class={cn(
23
- 'h-(--era-sp) w-full overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) shadow-(--era-shadow-well)',
23
+ 'h-(--era-sp) w-full overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) shadow-(--era-shadow-well)',
24
24
  className
25
25
  )}
26
26
  {...restProps}
@@ -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}
@@ -13,7 +13,7 @@
13
13
  } = $props();
14
14
  </script>
15
15
 
16
- <!-- A raw icon Button (size="xxs" = h-xxs, rd-xxs), a tight SQUARE. No
16
+ <!-- A raw icon Button (size="xxs" = h-pill, rd-xxs), a tight SQUARE. No
17
17
  data-pane-control: it stays in the drag zone, so a press-and-drag moves the
18
18
  pane while a clean click still closes (neodrag starts a drag only on
19
19
  movement and suppresses the trailing click after a real drag). Its natural
@@ -22,7 +22,7 @@
22
22
 
23
23
  xxs rather than the tighter `icon` size, which is what the handle's tier
24
24
  asks for. The GLYPH is deliberately OFF the sub-tier ladder: sp+5, where the
25
- ladder offers sp+4 (12px at dense, the xxs sub-tier) and the h-xs floor
25
+ ladder offers sp+4 (12px at dense, the xxs sub-tier) and the h-icon floor
26
26
  (14px). Both were tried and both are wrong here by a pixel — 12 reads
27
27
  visibly lighter than the reference terminal app's close button, 14 reads
28
28
  heavier — and a close button is the one control in the chrome you must be
@@ -19,7 +19,7 @@
19
19
  its content inside the flex column. -->
20
20
  <div
21
21
  bind:this={ref}
22
- class={cn('min-h-0 flex-1 overflow-auto overscroll-contain p-(--era-pad-md)', className)}
22
+ class={cn('min-h-0 flex-1 overflow-auto overscroll-contain p-(--era-pad-card)', className)}
23
23
  {...restProps}
24
24
  >
25
25
  {@render children?.()}
@@ -28,14 +28,14 @@
28
28
  WHOLE top — up to the very top pixel — is draggable. data-pane-handle marks
29
29
  it as the neodrag allow-zone. Transparent over the pane's rounded surface:
30
30
  the TOP corners defer to the pane radius, while the BOTTOM corners round to
31
- --era-rd-md — so the inset divider curves up at the ends and the bar reads
31
+ --era-rd-control — so the inset divider curves up at the ends and the bar reads
32
32
  as a long pill. The corners axis collapses the radius to 0 in square mode,
33
33
  so it's flat there and pill-shaped only when rounded.
34
34
 
35
- mdxxs, not smxs: a title bar is the densest chrome in the library and
35
+ controlpill, not chipicon: a title bar is the densest chrome in the library and
36
36
  was a tier too short for it — 22px at dense against the 24 the reference
37
37
  terminal app uses, with 14px controls where it uses 18. The pairing is what
38
- carries that: content="xxs" puts the walls on --era-xxs-inset-md (3/5/7/11),
38
+ carries that: content="xxs" puts the walls on --era-pill-inset-control (3/5/7/11),
39
39
  which is the 3px that app hardcodes for exactly this bar. -->
40
40
  <Bar
41
41
  bind:ref