@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
@@ -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
@@ -327,25 +327,25 @@
327
327
  dir: 'n',
328
328
  cursor: 'cursor-ns-resize',
329
329
  place:
330
- 'top:0;left:var(--era-xs-inset-sm);right:var(--era-xs-inset-sm);translate:0 -100%;height:var(--era-xs-inset-sm)'
330
+ 'top:0;left:var(--era-icon-inset-chip);right:var(--era-icon-inset-chip);translate:0 -100%;height:var(--era-icon-inset-chip)'
331
331
  },
332
332
  {
333
333
  dir: 's',
334
334
  cursor: 'cursor-ns-resize',
335
335
  place:
336
- 'bottom:0;left:var(--era-xs-inset-sm);right:var(--era-xs-inset-sm);translate:0 50%;height:calc(var(--era-xs-inset-sm)*2)'
336
+ 'bottom:0;left:var(--era-icon-inset-chip);right:var(--era-icon-inset-chip);translate:0 50%;height:calc(var(--era-icon-inset-chip)*2)'
337
337
  },
338
338
  {
339
339
  dir: 'w',
340
340
  cursor: 'cursor-ew-resize',
341
341
  place:
342
- 'left:0;top:var(--era-xs-inset-sm);bottom:var(--era-xs-inset-sm);translate:-100% 0;width:var(--era-xs-inset-sm)'
342
+ 'left:0;top:var(--era-icon-inset-chip);bottom:var(--era-icon-inset-chip);translate:-100% 0;width:var(--era-icon-inset-chip)'
343
343
  },
344
344
  {
345
345
  dir: 'e',
346
346
  cursor: 'cursor-ew-resize',
347
347
  place:
348
- 'right:0;top:var(--era-xs-inset-sm);bottom:var(--era-xs-inset-sm);translate:50% 0;width:calc(var(--era-xs-inset-sm)*2)'
348
+ 'right:0;top:var(--era-icon-inset-chip);bottom:var(--era-icon-inset-chip);translate:50% 0;width:calc(var(--era-icon-inset-chip)*2)'
349
349
  },
350
350
  // corners LAST — a square at each corner (diagonal gap filler), painted
351
351
  // above the edges so the red grab zone is always on top of the blue.
@@ -353,19 +353,19 @@
353
353
  dir: 'nw',
354
354
  cursor: 'cursor-nwse-resize',
355
355
  place:
356
- 'top:0;left:0;translate:-50% -50%;width:calc(var(--era-xs-inset-sm)*2);height:calc(var(--era-xs-inset-sm)*2)'
356
+ 'top:0;left:0;translate:-50% -50%;width:calc(var(--era-icon-inset-chip)*2);height:calc(var(--era-icon-inset-chip)*2)'
357
357
  },
358
358
  {
359
359
  dir: 'ne',
360
360
  cursor: 'cursor-nesw-resize',
361
361
  place:
362
- 'top:0;right:0;translate:50% -50%;width:calc(var(--era-xs-inset-sm)*2);height:calc(var(--era-xs-inset-sm)*2)'
362
+ 'top:0;right:0;translate:50% -50%;width:calc(var(--era-icon-inset-chip)*2);height:calc(var(--era-icon-inset-chip)*2)'
363
363
  },
364
364
  {
365
365
  dir: 'sw',
366
366
  cursor: 'cursor-nesw-resize',
367
367
  place:
368
- 'bottom:0;left:0;translate:-50% 50%;width:calc(var(--era-xs-inset-sm)*2);height:calc(var(--era-xs-inset-sm)*2)'
368
+ 'bottom:0;left:0;translate:-50% 50%;width:calc(var(--era-icon-inset-chip)*2);height:calc(var(--era-icon-inset-chip)*2)'
369
369
  },
370
370
  {
371
371
  // All four corners straddle (translate ±50%): 6px out AND 6px in, so they
@@ -373,7 +373,7 @@
373
373
  dir: 'se',
374
374
  cursor: 'cursor-nwse-resize',
375
375
  place:
376
- 'bottom:0;right:0;translate:50% 50%;width:calc(var(--era-xs-inset-sm)*2);height:calc(var(--era-xs-inset-sm)*2)'
376
+ 'bottom:0;right:0;translate:50% 50%;width:calc(var(--era-icon-inset-chip)*2);height:calc(var(--era-icon-inset-chip)*2)'
377
377
  }
378
378
  ];
379
379
 
@@ -473,9 +473,9 @@
473
473
  //
474
474
  // rd-md, NOT rd-lg: a container's radius follows its corner REGION's tier,
475
475
  // not its overall size. The pane's corners are formed by the grab bar, which
476
- // is h-md holding h-xxs controls (the ×) — and the radius ladder is
477
- // rd-T = R + (h-T − h-xs)/2, so rd-md − rd-xxs is exactly (h-md − h-xxs)/2 =
478
- // --era-xxs-inset-md, the gap the × already sits at from the corner. The ×'s
476
+ // is h-control holding h-pill controls (the ×) — and the radius ladder is
477
+ // rd-T = R + (h-T − h-icon)/2, so rd-md − rd-xxs is exactly (h-control − h-pill)/2 =
478
+ // --era-pill-inset-control, the gap the × already sits at from the corner. The ×'s
479
479
  // natural rd-xxs is therefore concentric inside rd-md by construction, the
480
480
  // same way rd-xs was inside rd-sm before the handle moved up a tier.
481
481
  // A hairline edge, because a floating pane is the one thing that must be
@@ -493,7 +493,7 @@
493
493
  // content until the grip sets a size, and size containment would collapse
494
494
  // that to zero) and NOT `paint` (the resize handles deliberately bleed
495
495
  // outward, and paint containment clips them).
496
- 'group/pane absolute isolate flex flex-col rounded-(--era-rd-md) border border-divider bg-(--era-surface-bg-elevated) shadow-(--era-shadow-lg) glass-blur [contain:layout_style]',
496
+ 'group/pane absolute isolate flex flex-col rounded-(--era-rd-control) border border-divider bg-(--era-surface-bg-elevated) shadow-(--era-shadow-lg) glass-blur [contain:layout_style]',
497
497
  // Auto-size to content until an explicit size is set (by the grip or a preset).
498
498
  size ? '' : 'w-max',
499
499
  // While Ctrl is held the whole pane is grabbable: a grab cursor hints it, and
@@ -71,7 +71,7 @@
71
71
  history y) are at risk at the clip edge. The real fix is on the tab itself —
72
72
  PaneTab cancels Tabs.Trigger's era-text-trim, which had pulled the box up to
73
73
  the baseline and fed the clip its descenders. The py-0.5 that used to back
74
- that up is gone with it: the tab is now h-xxs, so its own box holds the line
74
+ that up is gone with it: the tab is now h-pill, so its own box holds the line
75
75
  box with room to spare and the clip edge sits a wall away. -->
76
76
  <Tabs.List
77
77
  bind:ref
@@ -15,6 +15,6 @@
15
15
  Pane.Content. -->
16
16
  <Tabs.Content
17
17
  bind:ref
18
- class={cn('min-h-0 flex-1 overflow-auto overscroll-contain p-(--era-pad-md)', className)}
18
+ class={cn('min-h-0 flex-1 overflow-auto overscroll-contain p-(--era-pad-card)', className)}
19
19
  {...restProps}
20
20
  />
@@ -23,7 +23,7 @@
23
23
  // trim pulls the box up to the alphabetic baseline, so the clip then slices
24
24
  // every descender (the "logs" g, the "history" y). [text-box:normal] cancels
25
25
  // it; leading-none + the strip's items-center still centre the label.
26
- 'flex h-(--era-h-xxs) cursor-pointer items-center gap-(--era-gap) rounded-(--era-rd-xxs) px-(--era-pill-xxs) text-body leading-none text-muted outline-none select-none [text-box:normal] hover:text-fg focus-visible:bg-(--era-highlight) data-[state=active]:bg-hover data-[state=active]:text-bright',
26
+ 'flex h-(--era-h-pill) cursor-pointer items-center gap-(--era-gap) rounded-(--era-rd-pill) px-(--era-pill-px) text-body leading-none text-muted outline-none select-none [text-box:normal] hover:text-fg focus-visible:bg-(--era-highlight) data-[state=active]:bg-hover data-[state=active]:text-bright',
27
27
  className
28
28
  )}
29
29
  {...restProps}
@@ -84,7 +84,7 @@
84
84
  track when `center` is present and in the ml-auto cluster when it isn't —
85
85
  one close button, correct in both geometries. -->
86
86
  <Handle {center} trail={onClose ? closeTrail : undefined}>
87
- {#if icon}{@const Icon = icon}<Icon class="size-(--era-h-xs) shrink-0 text-muted" />{/if}
87
+ {#if icon}{@const Icon = icon}<Icon class="size-(--era-h-icon) shrink-0 text-muted" />{/if}
88
88
  {#if title}<span class="text-body text-bright">{title}</span>{/if}
89
89
  {@render header?.()}
90
90
  </Handle>
@@ -14,7 +14,7 @@
14
14
  bind:ref
15
15
  {cell}
16
16
  class={cn(
17
- 'relative flex h-(--era-h-md) min-w-(--era-h-md) items-center justify-center border-y border-r border-divider bg-(--era-surface-bg-elevated) text-body transition-colors duration-(--era-duration) outline-none first:rounded-l-(--era-rd-md) first:border-l last:rounded-r-(--era-rd-md) data-[active]:bg-(--era-highlight) [&:has(+_:not([data-pin-input-cell]))]:rounded-r-(--era-rd-md)',
17
+ 'relative flex h-(--era-h-control) min-w-(--era-h-control) items-center justify-center border-y border-r border-divider bg-(--era-surface-bg-elevated) text-body transition-colors duration-(--era-duration) outline-none first:rounded-l-(--era-rd-control) first:border-l last:rounded-r-(--era-rd-control) data-[active]:bg-(--era-highlight) [&:has(+_:not([data-pin-input-cell]))]:rounded-r-(--era-rd-control)',
18
18
  className
19
19
  )}
20
20
  {...restProps}
@@ -22,7 +22,7 @@
22
22
  // floating menu, like the context menu it should match: full radius, a
23
23
  // gutter of air, shadow doing the separating.
24
24
  class={cn(
25
- 'z-50 w-max min-w-(--bits-popover-anchor-width) overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-pad-md) shadow-(--era-shadow-lg) glass-blur',
25
+ 'z-50 w-max min-w-(--bits-popover-anchor-width) overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-pad-card) shadow-(--era-shadow-lg) glass-blur',
26
26
  className
27
27
  )}
28
28
  {sideOffset}
@@ -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}
@@ -8,12 +8,12 @@
8
8
  <RadioGroup.Item
9
9
  bind:ref
10
10
  class={cn(
11
- 'group/radio flex size-(--era-h-xs) shrink-0 era-interactive cursor-pointer items-center justify-center rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) shadow-(--era-shadow-well) hover:bg-(--era-highlight)',
11
+ 'group/radio flex size-(--era-h-icon) shrink-0 era-interactive cursor-pointer items-center justify-center rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) shadow-(--era-shadow-well) hover:bg-(--era-highlight)',
12
12
  className
13
13
  )}
14
14
  {...restProps}
15
15
  >
16
16
  <span
17
- class="block size-1/2 rounded-(--era-rd-md) transition-colors duration-(--era-duration) group-data-[state=checked]/radio:bg-fg"
17
+ class="block size-1/2 rounded-(--era-rd-control) transition-colors duration-(--era-duration) group-data-[state=checked]/radio:bg-fg"
18
18
  ></span>
19
19
  </RadioGroup.Item>
@@ -10,7 +10,7 @@
10
10
  <RatingGroup.Item
11
11
  bind:ref
12
12
  class={cn(
13
- 'inline-flex size-(--era-h-sm) items-center justify-center text-muted hover:text-bright focus:outline-none data-[state=checked]:text-primary',
13
+ 'inline-flex size-(--era-h-chip) items-center justify-center text-muted hover:text-bright focus:outline-none data-[state=checked]:text-primary',
14
14
  className
15
15
  )}
16
16
  {...restProps}
@@ -7,6 +7,6 @@
7
7
 
8
8
  <ScrollArea.Thumb
9
9
  bind:ref
10
- class={cn('rounded-(--era-rd-md) bg-divider hover:bg-muted', className)}
10
+ class={cn('rounded-(--era-rd-control) bg-divider hover:bg-muted', className)}
11
11
  {...restProps}
12
12
  />
@@ -13,6 +13,6 @@
13
13
  <ScrollArea.Root
14
14
  bind:ref
15
15
  {type}
16
- class={cn('relative overflow-hidden rounded-(--era-rd-lg)', className)}
16
+ class={cn('relative overflow-hidden rounded-(--era-rd-bar)', className)}
17
17
  {...restProps}
18
18
  />
@@ -28,7 +28,7 @@
28
28
  // 2px frame that stops a full-width highlight from breaking their chrome.
29
29
  // A fixed gutter was tried here and rejected: it padded flat menus too.
30
30
  class={cn(
31
- 'z-50 w-max min-w-(--bits-select-anchor-width) overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur data-[side=bottom]:rounded-t-none data-[side=top]:rounded-b-none',
31
+ 'z-50 w-max min-w-(--bits-select-anchor-width) overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) p-(--era-panel-inset) shadow-(--era-shadow-lg) glass-blur data-[side=bottom]:rounded-t-none data-[side=top]:rounded-b-none',
32
32
  className
33
33
  )}
34
34
  {sideOffset}
@@ -12,7 +12,10 @@
12
12
 
13
13
  <Select.GroupHeading
14
14
  bind:ref
15
- class={cn('flex h-(--era-h-md) items-center px-(--era-inset-md) text-body text-muted', className)}
15
+ class={cn(
16
+ 'flex h-(--era-h-control) items-center px-(--era-inset-control) text-body text-muted',
17
+ className
18
+ )}
16
19
  {...restProps}
17
20
  >
18
21
  {@render children?.()}
@@ -10,7 +10,7 @@
10
10
  <Select.Item
11
11
  bind:ref
12
12
  class={cn(
13
- '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-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
13
+ '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-[highlighted]:bg-(--era-highlight) data-[highlighted]:shadow-(--era-highlight-shadow)',
14
14
  className
15
15
  )}
16
16
  {...restProps}