@signal9/era-ui 8.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/ai/artifact/artifact-close.svelte +3 -3
  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 +2 -2
  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 +2 -2
  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 +3 -3
  14. package/dist/ai/conversations/conversations-group.svelte +1 -1
  15. package/dist/ai/conversations/conversations-item.svelte +10 -10
  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 +5 -5
  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 +2 -2
  29. package/dist/ai/prompt-input/prompt-input-attachments.svelte +5 -5
  30. package/dist/ai/prompt-input/prompt-input-submit.svelte +4 -4
  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 +6 -6
  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 +3 -3
  43. package/dist/ai/swarm/swarm-actions.svelte +2 -2
  44. package/dist/ai/swarm/swarm-agent.svelte +1 -1
  45. package/dist/ai/swarm/swarm-artifact.svelte +1 -1
  46. package/dist/ai/swarm/swarm-barrier.svelte +1 -1
  47. package/dist/ai/swarm/swarm-barriers.svelte +1 -1
  48. package/dist/ai/swarm/swarm-counts.svelte +1 -1
  49. package/dist/ai/swarm/swarm-footer.svelte +1 -1
  50. package/dist/ai/swarm/swarm-grid.svelte +2 -2
  51. package/dist/ai/swarm/swarm-header.svelte +1 -1
  52. package/dist/ai/swarm/swarm-node.svelte +7 -7
  53. package/dist/ai/swarm/swarm-role.svelte +1 -1
  54. package/dist/ai/swarm/swarm-root.svelte +1 -1
  55. package/dist/ai/swarm/swarm-sandbox.svelte +3 -3
  56. package/dist/ai/swarm/swarm-tree.svelte +1 -1
  57. package/dist/ai/task/task-content.svelte +1 -1
  58. package/dist/ai/task/task-trigger.svelte +1 -1
  59. package/dist/ai/tool/tool-chip.svelte +2 -2
  60. package/dist/ai/tool/tool-exec.svelte +3 -3
  61. package/dist/ai/tool/tool-header.svelte +1 -1
  62. package/dist/ai/web-preview/web-preview.svelte +5 -5
  63. package/dist/ai/workflow/canvas.svelte +1 -1
  64. package/dist/ai/workflow/node.svelte +3 -3
  65. package/dist/apps/llm-shell/llm-shell.svelte +7 -7
  66. package/dist/apps/notes/editor/bubble-toolbar.svelte +3 -3
  67. package/dist/apps/notes/editor/slash-menu.svelte +7 -5
  68. package/dist/apps/notes/notes.svelte +20 -20
  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 +4 -4
  82. package/dist/generated-docs/button.md +1 -1
  83. package/dist/generated-docs/chip.md +1 -1
  84. package/dist/generated-docs/input.md +1 -1
  85. package/dist/generated-docs/llms-full.txt +102 -122
  86. package/dist/generated-docs/llms.txt +11 -12
  87. package/dist/generated-docs/manifest.json +55 -68
  88. package/dist/generated-docs/utilities.json +45 -57
  89. package/dist/generated-docs/utilities.md +87 -106
  90. package/dist/os/notification-center.svelte +7 -7
  91. package/dist/os/pane.svelte +9 -7
  92. package/dist/os/taskbar.svelte +14 -14
  93. package/dist/os/toast.svelte +5 -5
  94. package/dist/os/toaster.svelte +1 -1
  95. package/dist/styles/density.css +93 -67
  96. package/dist/styles/index.css +89 -101
  97. package/dist/styles/prose.css +12 -12
  98. package/dist/styles/surfaces/base.css +3 -3
  99. package/dist/styles/surfaces/bevel.css +2 -2
  100. package/dist/ui/accordion/accordion-trigger.svelte +2 -2
  101. package/dist/ui/alert-dialog/alert-dialog-content.svelte +1 -1
  102. package/dist/ui/aspect-ratio/aspect-ratio.svelte +1 -1
  103. package/dist/ui/avatar/avatar-root.svelte +1 -1
  104. package/dist/ui/badge/badge.svelte +1 -1
  105. package/dist/ui/badge/badge.svelte.d.ts +1 -1
  106. package/dist/ui/bar/bar.svelte +28 -20
  107. package/dist/ui/bar/bar.svelte.d.ts +31 -31
  108. package/dist/ui/button/button.svelte +4 -4
  109. package/dist/ui/button/button.svelte.d.ts +1 -1
  110. package/dist/ui/button/index.d.ts +1 -1
  111. package/dist/ui/button/variants.d.ts +9 -12
  112. package/dist/ui/button/variants.js +24 -26
  113. package/dist/ui/button-group/button-group.svelte +2 -2
  114. package/dist/ui/calendar/calendar-day.svelte +1 -1
  115. package/dist/ui/calendar/calendar-head-cell.svelte +1 -1
  116. package/dist/ui/calendar/calendar-header.svelte +1 -1
  117. package/dist/ui/calendar/calendar-next-button.svelte +1 -1
  118. package/dist/ui/calendar/calendar-prev-button.svelte +1 -1
  119. package/dist/ui/card/card.svelte +5 -5
  120. package/dist/ui/card/card.svelte.d.ts +4 -4
  121. package/dist/ui/checkbox/checkbox.svelte +3 -3
  122. package/dist/ui/chip/chip.svelte +22 -18
  123. package/dist/ui/chip/chip.svelte.d.ts +8 -8
  124. package/dist/ui/code-block/code-block.svelte +6 -6
  125. package/dist/ui/collapsible/collapsible-trigger.svelte +1 -1
  126. package/dist/ui/combobox/combobox-content.svelte +1 -1
  127. package/dist/ui/combobox/combobox-empty.svelte +4 -1
  128. package/dist/ui/combobox/combobox-group-heading.svelte +4 -1
  129. package/dist/ui/combobox/combobox-item.svelte +1 -1
  130. package/dist/ui/combobox/combobox-trigger.svelte +2 -2
  131. package/dist/ui/command/command-group-heading.svelte +4 -1
  132. package/dist/ui/command/command-item.svelte +1 -1
  133. package/dist/ui/command/command-link-item.svelte +1 -1
  134. package/dist/ui/command/command-root.svelte +1 -1
  135. package/dist/ui/command-bar/command-bar.svelte +16 -12
  136. package/dist/ui/context-menu/context-menu-checkbox-item.svelte +1 -1
  137. package/dist/ui/context-menu/context-menu-content.svelte +1 -1
  138. package/dist/ui/context-menu/context-menu-group-heading.svelte +4 -1
  139. package/dist/ui/context-menu/context-menu-item.svelte +1 -1
  140. package/dist/ui/context-menu/context-menu-radio-item.svelte +1 -1
  141. package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
  142. package/dist/ui/context-menu/context-menu-sub-trigger.svelte +2 -2
  143. package/dist/ui/copy-button/copy-button.svelte +3 -3
  144. package/dist/ui/cycle/cycle.svelte +1 -1
  145. package/dist/ui/date-field/date-field-segment.svelte +1 -1
  146. package/dist/ui/date-picker/date-picker-content.svelte +1 -1
  147. package/dist/ui/date-picker/date-picker-day.svelte +1 -1
  148. package/dist/ui/date-picker/date-picker-head-cell.svelte +1 -1
  149. package/dist/ui/date-picker/date-picker-header.svelte +1 -1
  150. package/dist/ui/date-picker/date-picker-next-button.svelte +1 -1
  151. package/dist/ui/date-picker/date-picker-prev-button.svelte +1 -1
  152. package/dist/ui/date-picker/date-picker-segment.svelte +1 -1
  153. package/dist/ui/date-picker/date-picker-trigger.svelte +2 -2
  154. package/dist/ui/date-range-field/date-range-field-segment.svelte +1 -1
  155. package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -1
  156. package/dist/ui/date-range-picker/date-range-picker-day.svelte +1 -1
  157. package/dist/ui/date-range-picker/date-range-picker-head-cell.svelte +1 -1
  158. package/dist/ui/date-range-picker/date-range-picker-header.svelte +1 -1
  159. package/dist/ui/date-range-picker/date-range-picker-next-button.svelte +1 -1
  160. package/dist/ui/date-range-picker/date-range-picker-prev-button.svelte +1 -1
  161. package/dist/ui/date-range-picker/date-range-picker-segment.svelte +1 -1
  162. package/dist/ui/date-range-picker/date-range-picker-trigger.svelte +2 -2
  163. package/dist/ui/dialog/dialog-content.svelte +4 -2
  164. package/dist/ui/dialog/dialog-header.svelte +8 -3
  165. package/dist/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  166. package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  167. package/dist/ui/dropdown-menu/dropdown-menu-group-heading.svelte +4 -1
  168. package/dist/ui/dropdown-menu/dropdown-menu-item.svelte +1 -1
  169. package/dist/ui/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
  170. package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  171. package/dist/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
  172. package/dist/ui/dropdown-menu/dropdown-menu-trigger.svelte +2 -2
  173. package/dist/ui/file-upload/file-upload.svelte +2 -2
  174. package/dist/ui/input/input.svelte +5 -5
  175. package/dist/ui/input/input.svelte.d.ts +2 -2
  176. package/dist/ui/input/textarea.svelte +1 -1
  177. package/dist/ui/input/variants.d.ts +24 -24
  178. package/dist/ui/input/variants.js +10 -10
  179. package/dist/ui/kv/kv.svelte +2 -2
  180. package/dist/ui/link-preview/link-preview-content.svelte +1 -1
  181. package/dist/ui/menubar/menubar-checkbox-item.svelte +1 -1
  182. package/dist/ui/menubar/menubar-content.svelte +1 -1
  183. package/dist/ui/menubar/menubar-group-heading.svelte +4 -1
  184. package/dist/ui/menubar/menubar-item.svelte +1 -1
  185. package/dist/ui/menubar/menubar-radio-item.svelte +1 -1
  186. package/dist/ui/menubar/menubar-root.svelte +1 -1
  187. package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
  188. package/dist/ui/menubar/menubar-sub-trigger.svelte +2 -2
  189. package/dist/ui/menubar/menubar-trigger.svelte +1 -1
  190. package/dist/ui/meter/meter.svelte +1 -1
  191. package/dist/ui/pagination/pagination-next-button.svelte +1 -1
  192. package/dist/ui/pagination/pagination-prev-button.svelte +1 -1
  193. package/dist/ui/pane/pane-close.svelte +3 -3
  194. package/dist/ui/pane/pane-content.svelte +1 -1
  195. package/dist/ui/pane/pane-handle.svelte +5 -5
  196. package/dist/ui/pane/pane-root.svelte +12 -12
  197. package/dist/ui/pane/pane-tab-list.svelte +1 -1
  198. package/dist/ui/pane/pane-tab-panel.svelte +1 -1
  199. package/dist/ui/pane/pane-tab.svelte +1 -1
  200. package/dist/ui/pane/pane.svelte +1 -1
  201. package/dist/ui/pin-input/pin-input-cell.svelte +1 -1
  202. package/dist/ui/popover/popover-content.svelte +1 -1
  203. package/dist/ui/progress/progress.svelte +1 -1
  204. package/dist/ui/radio-group/radio-group-item.svelte +2 -2
  205. package/dist/ui/rating-group/rating-group-item.svelte +1 -1
  206. package/dist/ui/scroll-area/scroll-area-thumb.svelte +1 -1
  207. package/dist/ui/scroll-area/scroll-area.svelte +1 -1
  208. package/dist/ui/select/select-content.svelte +1 -1
  209. package/dist/ui/select/select-group-heading.svelte +4 -1
  210. package/dist/ui/select/select-item.svelte +1 -1
  211. package/dist/ui/select/select-trigger.svelte +2 -2
  212. package/dist/ui/select/select-value.svelte +2 -2
  213. package/dist/ui/sheet/sheet-content.svelte +3 -3
  214. package/dist/ui/sheet/sheet-content.svelte.d.ts +6 -6
  215. package/dist/ui/skeleton/skeleton.svelte +3 -3
  216. package/dist/ui/skeleton/skeleton.svelte.d.ts +9 -9
  217. package/dist/ui/slider/slider-range.svelte +1 -1
  218. package/dist/ui/slider/slider-thumb.svelte +1 -1
  219. package/dist/ui/step/step-content.svelte +1 -1
  220. package/dist/ui/step/step-summary.svelte +6 -6
  221. package/dist/ui/switch/switch.svelte +3 -3
  222. package/dist/ui/table/table-cell.svelte +1 -1
  223. package/dist/ui/table/table-head-cell.svelte +1 -1
  224. package/dist/ui/time-field/time-field-segment.svelte +1 -1
  225. package/dist/ui/time-range-field/time-range-field-segment.svelte +1 -1
  226. package/dist/ui/toggle-group/toggle-group-item.svelte +1 -1
  227. package/dist/ui/tooltip/tooltip-content.svelte +1 -1
  228. package/dist/ui/video-player/video-player.svelte +44 -44
  229. package/dist/utils/index.js +4 -4
  230. package/package.json +1 -1
@@ -165,7 +165,7 @@
165
165
 
166
166
  {#snippet iconPicker(note: Note)}
167
167
  <Popover.Root bind:open={iconPickerOpen}>
168
- <Popover.Trigger icon size="xxs" aria-label="Change icon" title="Change icon">
168
+ <Popover.Trigger icon size="pill" aria-label="Change icon" title="Change icon">
169
169
  {#if note.icon}
170
170
  <span aria-hidden="true">{note.icon}</span>
171
171
  {:else}
@@ -179,7 +179,7 @@
179
179
  {#each row as glyph (glyph)}
180
180
  <Button
181
181
  icon
182
- size="default"
182
+ size="control"
183
183
  active={note.icon === glyph}
184
184
  aria-label={glyph}
185
185
  onclick={() => {
@@ -194,7 +194,7 @@
194
194
  {/each}
195
195
  {#if note.icon}
196
196
  <Button
197
- size="sm"
197
+ size="chip"
198
198
  class="w-full"
199
199
  onclick={() => {
200
200
  store.setIcon(note.id, null);
@@ -219,7 +219,7 @@
219
219
  {#snippet titleField(note: Note, cls: string)}
220
220
  <Input
221
221
  reveal
222
- size="xxs"
222
+ size="pill"
223
223
  class={cls}
224
224
  aria-label="Note title"
225
225
  placeholder="Untitled"
@@ -265,7 +265,7 @@
265
265
  >
266
266
  <!-- Sidebar: filter + note list -->
267
267
  <div class="flex w-56 shrink-0 flex-col border-r border-divider-faded">
268
- <!-- content="xxs": 24/30/36/48 of chrome around an 18/20/22/26 field and
268
+ <!-- content="pill": 24/30/36/48 of chrome around an 18/20/22/26 field and
269
269
  button, with Bar deriving the two-tier concentric inset. A notes sidebar
270
270
  is chrome around a list; at the lg/md pairing it was a 32px bar over
271
271
  24px rows and the chrome outweighed the content. This is the tier pair
@@ -277,17 +277,17 @@
277
277
  centred in 23px and sat 2.5px from the top against a 3px wall. Outset
278
278
  costs no layout, so the bar keeps its full tier height and every child
279
279
  sits the wall's distance from all four edges. -->
280
- <Bar size="md" content="xxs" divider class="rounded-none">
280
+ <Bar size="control" content="pill" divider class="rounded-none">
281
281
  <Input
282
282
  icon={Search}
283
- size="xxs"
283
+ size="pill"
284
284
  class="min-w-0 flex-1"
285
285
  type="text"
286
286
  placeholder="Filter…"
287
287
  aria-label="Filter notes"
288
288
  bind:value={query}
289
289
  />
290
- <Button icon size="xxs" aria-label="New note" title="New note" onclick={createNote}>
290
+ <Button icon size="pill" aria-label="New note" title="New note" onclick={createNote}>
291
291
  <Plus />
292
292
  </Button>
293
293
  </Bar>
@@ -295,7 +295,7 @@
295
295
  {#if store.loading}
296
296
  <div class="flex flex-col gap-gutter p-gutter">
297
297
  {#each Array.from({ length: 5 }, (_, i) => i) as i (i)}
298
- <Skeleton class="h-md rounded-md" />
298
+ <Skeleton class="h-control rounded-control" />
299
299
  {/each}
300
300
  </div>
301
301
  {:else if visible.length === 0}
@@ -322,7 +322,7 @@
322
322
  role="option" child of the listbox. A wrapper element there
323
323
  would put a non-option between them and break the relationship
324
324
  screen readers rely on.
325
- rounded-md, not rounded-item: item-rd is the radius for a row
325
+ rounded-control, not rounded-menu-item: item-rd is the radius for a row
326
326
  inside a PANEL (it subtracts the panel's frame inset). A list
327
327
  row on a plain surface takes its own tier radius — the
328
328
  conversations-rail pattern. -->
@@ -331,7 +331,7 @@
331
331
  {#snippet child({ props })}
332
332
  <div
333
333
  {...props}
334
- class="group/row flex h-md cursor-pointer items-center gap-(--era-xxs-inset-md) rounded-md px-(--era-xxs-inset-md) era-text-trim {current
334
+ class="group/row flex h-control cursor-pointer items-center gap-(--era-pill-inset-control) rounded-control px-(--era-pill-inset-control) era-text-trim {current
335
335
  ? 'bg-hover text-bright shadow-(--era-shadow-pressed)'
336
336
  : 'hover:bg-highlight hover:shadow-highlight'}"
337
337
  role="option"
@@ -347,11 +347,11 @@
347
347
  onRowKeydown(e);
348
348
  }}
349
349
  >
350
- <span class="flex size-xxs shrink-0 items-center justify-center">
350
+ <span class="flex size-pill shrink-0 items-center justify-center">
351
351
  {#if note.icon}
352
352
  {note.icon}
353
353
  {:else}
354
- <FileText class="size-(--era-icon-xxs) text-muted" />
354
+ <FileText class="size-(--era-glyph-pill) text-muted" />
355
355
  {/if}
356
356
  </span>
357
357
 
@@ -370,11 +370,11 @@
370
370
  {formatAge(note.updatedAt)}
371
371
  </span>
372
372
  <span
373
- class="hidden shrink-0 items-center gap-(--era-xxs-inset-md) group-hover/row:flex"
373
+ class="hidden shrink-0 items-center gap-(--era-pill-inset-control) group-hover/row:flex"
374
374
  >
375
375
  <Button
376
376
  icon
377
- size="xxs"
377
+ size="pill"
378
378
  aria-label={note.pinned ? 'Unpin note' : 'Pin note'}
379
379
  title={note.pinned ? 'Unpin note' : 'Pin note'}
380
380
  active={note.pinned}
@@ -387,7 +387,7 @@
387
387
  </Button>
388
388
  <Button
389
389
  icon
390
- size="xxs"
390
+ size="pill"
391
391
  tone="destructive"
392
392
  aria-label="Delete note"
393
393
  title="Delete note"
@@ -405,10 +405,10 @@
405
405
  <ContextMenu.Content>
406
406
  <ContextMenu.Item onSelect={() => store.togglePin(note.id)}>
407
407
  {#if note.pinned}
408
- <PinOff class="size-xs text-muted" />
408
+ <PinOff class="size-icon text-muted" />
409
409
  Unpin note
410
410
  {:else}
411
- <Pin class="size-xs text-muted" />
411
+ <Pin class="size-icon text-muted" />
412
412
  Pin note
413
413
  {/if}
414
414
  </ContextMenu.Item>
@@ -419,7 +419,7 @@
419
419
  uses, not a direct delete: a destructive action should not
420
420
  get easier to reach by arriving from a different gesture. -->
421
421
  <ContextMenu.Item onSelect={() => (pendingDelete = note.id)}>
422
- <Trash2 class="size-xs text-destructive" />
422
+ <Trash2 class="size-icon text-destructive" />
423
423
  Delete note
424
424
  </ContextMenu.Item>
425
425
  </ContextMenu.Content>
@@ -444,7 +444,7 @@
444
444
  header (see the snippets below) lives in the pane bar's centre and
445
445
  drawing it twice would title the document twice. -->
446
446
  {#if !pane}
447
- <Bar size="md" content="xxs" divider class="rounded-none">
447
+ <Bar size="control" content="pill" divider class="rounded-none">
448
448
  {@render iconPicker(selected)}
449
449
  {@render titleField(selected, 'min-w-0 flex-1')}
450
450
  <!-- Fixed-width so the badge appearing and clearing never nudges the
@@ -80,7 +80,7 @@ export function tokenPx(el, name) {
80
80
  }
81
81
  /** The five tier heights, in px, in the element's density context. */
82
82
  export function tiers(el) {
83
- return ['--era-h-xs', '--era-h-xxs', '--era-h-sm', '--era-h-md', '--era-h-lg'].map((name) => ({
83
+ return ['--era-h-icon', '--era-h-pill', '--era-h-chip', '--era-h-control', '--era-h-bar'].map((name) => ({
84
84
  name,
85
85
  px: tokenPx(el, name)
86
86
  }));
@@ -12,7 +12,7 @@ import { BOUNDED_TIER_MAX } from '../../measure.js';
12
12
  *
13
13
  * That blind spot shipped: the Switch thumb rested one border-width too far
14
14
  * right at BOTH ends, so the gap at the left end and at the right end differed
15
- * by 2px (dense 5 vs 3, touch 9 vs 7). --era-xs-inset-sm is measured from the
15
+ * by 2px (dense 5 vs 3, touch 9 vs 7). --era-icon-inset-chip is measured from the
16
16
  * track's OUTER edge, but a translate-x starts from the CONTENT box inside the
17
17
  * 1px border, so offsetting by the raw token added the border on one side and
18
18
  * subtracted it on the other. Vertically it was always right, because
@@ -5,8 +5,8 @@ import { BOUNDED_TIER_MAX } from '../../measure.js';
5
5
  *
6
6
  * Rule 5: every element that can hold a single glyph carries a min-width equal to
7
7
  * its tier height, so one character renders as a perfect square (or circle, once
8
- * rounded) instead of a skinny vertical pill. Icon buttons take min-w-(--era-h-md);
9
- * Badge, Chip and the KV value cell take min-w-(--era-h-xxs).
8
+ * rounded) instead of a skinny vertical pill. Icon buttons take min-w-(--era-h-control);
9
+ * Badge, Chip and the KV value cell take min-w-(--era-h-pill).
10
10
  *
11
11
  * Drop the min-width and nothing looks wrong until content happens to BE one
12
12
  * character — a badge showing "1", a count that ticks from 10 down to 9 — and the
@@ -59,10 +59,10 @@
59
59
 
60
60
  {#if dev && open}
61
61
  <div
62
- class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-md) bg-surface font-mono text-body shadow-[inset_0_0_0_0.5px_var(--color-border),var(--era-shadow)]"
62
+ class="fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 flex-col overflow-hidden rounded-(--era-rd-control) bg-surface font-mono text-body shadow-[inset_0_0_0_0.5px_var(--color-border),var(--era-shadow)]"
63
63
  >
64
64
  <header
65
- class="flex items-center gap-(--era-xs-inset-sm) px-(--era-inset-sm) py-(--era-gap) shadow-[inset_0_-0.5px_0_0_var(--color-border)]"
65
+ class="flex items-center gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) shadow-[inset_0_-0.5px_0_0_var(--color-border)]"
66
66
  >
67
67
  <strong class="text-bright">audits</strong>
68
68
  <span class="text-muted">
@@ -81,7 +81,7 @@
81
81
  {@const enabled = registry.isEnabled(r.audit.id)}
82
82
  <details open={r.issues.length > 0}>
83
83
  <summary
84
- class="flex cursor-pointer items-center gap-(--era-xs-inset-sm) px-(--era-inset-sm) py-(--era-gap) hover:bg-(--era-highlight)"
84
+ class="flex cursor-pointer items-center gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) hover:bg-(--era-highlight)"
85
85
  >
86
86
  <input
87
87
  type="checkbox"
@@ -95,13 +95,13 @@
95
95
  </span>
96
96
  </summary>
97
97
  {#if r.issues.length === 0}
98
- <p class="px-(--era-inset-sm) py-(--era-gap) text-muted">
98
+ <p class="px-(--era-inset-chip) py-(--era-gap) text-muted">
99
99
  {r.audit.description}
100
100
  </p>
101
101
  {:else}
102
102
  {#each r.issues as issue, i (i)}
103
103
  <button
104
- class="flex w-full items-start gap-(--era-xs-inset-sm) px-(--era-inset-sm) py-(--era-gap) text-left hover:bg-(--era-highlight)"
104
+ class="flex w-full items-start gap-(--era-icon-inset-chip) px-(--era-inset-chip) py-(--era-gap) text-left hover:bg-(--era-highlight)"
105
105
  onclick={() => highlight(issue.element)}
106
106
  >
107
107
  <span class="text-destructive">●</span>
@@ -114,9 +114,9 @@
114
114
  </div>
115
115
 
116
116
  <footer
117
- class="flex items-center gap-(--era-gap) px-(--era-inset-sm) py-(--era-gap) text-muted shadow-[inset_0_0.5px_0_0_var(--color-border)]"
117
+ class="flex items-center gap-(--era-gap) px-(--era-inset-chip) py-(--era-gap) text-muted shadow-[inset_0_0.5px_0_0_var(--color-border)]"
118
118
  >
119
- <kbd class="rounded-(--era-rd-xs) bg-hover px-(--era-inset-sm) text-fg">
119
+ <kbd class="rounded-(--era-rd-icon) bg-hover px-(--era-inset-chip) text-fg">
120
120
  {isMac ? '⌘' : 'ctrl'}⇧{key.toUpperCase()}
121
121
  </kbd>
122
122
  <span>toggle</span>
@@ -13,7 +13,7 @@ export declare const TOL = 0.5;
13
13
  * that false positive: a Card reported "radius step 5 ≠ implied gap 32.5"
14
14
  * because its 57px optical padding was read as if it were a tier inset.
15
15
  *
16
- * The tallest tier is --era-h-lg, which peaks at 64px on touch.
16
+ * The tallest tier is --era-h-bar, which peaks at 64px on touch.
17
17
  */
18
18
  export declare const BOUNDED_TIER_MAX = 64;
19
19
  /**
@@ -34,7 +34,7 @@ export const TOL = 0.5;
34
34
  * that false positive: a Card reported "radius step 5 ≠ implied gap 32.5"
35
35
  * because its 57px optical padding was read as if it were a tier inset.
36
36
  *
37
- * The tallest tier is --era-h-lg, which peaks at 64px on touch.
37
+ * The tallest tier is --era-h-bar, which peaks at 64px on touch.
38
38
  */
39
39
  export const BOUNDED_TIER_MAX = 64;
40
40
  /**
@@ -15,4 +15,4 @@
15
15
 
16
16
  - Non-interactive. For dismissible tokens use `Chip`. For labelled pairs use `KV`.
17
17
  - Uses the `xxs` tier tokens (height, radius, inset).
18
- - Inter-icon gap tightens to `--era-inset-xxs` when an SVG is present.
18
+ - Inter-icon gap tightens to `--era-inset-pill` when an SVG is present.
@@ -3,7 +3,7 @@ export interface CssUtility {
3
3
  name: string;
4
4
  /**
5
5
  * Every class the doc comment governs. Usually one; a scale documented as a
6
- * run of consecutive `@utility` blocks under a single comment (h-xs … h-lg)
6
+ * run of consecutive `@utility` blocks under a single comment (h-icon … h-bar)
7
7
  * lists the whole ladder.
8
8
  */
9
9
  names: string[];
@@ -65,7 +65,7 @@ function parseFile(file, source) {
65
65
  const names = [match[2]];
66
66
  let end = blockEnd(source, match.index + match[0].length - 1);
67
67
  // One doc comment may govern a RUN of consecutive @utility blocks — a
68
- // ladder like h-xs…h-lg shares one story, and repeating it five times
68
+ // ladder like h-icon…h-bar shares one story, and repeating it five times
69
69
  // would drown the docs. Attach every block that follows the previous one
70
70
  // with nothing but whitespace in between; the next commented block never
71
71
  // matches here because the outer pattern requires the comment.
@@ -100,8 +100,8 @@ export function parseUtilities(sources) {
100
100
  .flatMap(([file, source]) => parseFile(file, source));
101
101
  }
102
102
  const INTRO = [
103
- "era's styling API is pure class names — write `h-md rounded-md px-md shadow`,",
104
- 'never the `h-(--era-h-md)` var-class spelling. Everything below rides along',
103
+ "era's styling API is pure class names — write `h-control rounded-control px-gutter shadow`,",
104
+ 'never the `h-(--era-h-control)` var-class spelling. Everything below rides along',
105
105
  'with the stylesheet and needs no import:',
106
106
  '',
107
107
  '```ts',
@@ -109,7 +109,7 @@ const INTRO = [
109
109
  '```',
110
110
  '',
111
111
  '```svelte',
112
- '<button class="h-md rounded-md px-inset-md shadow text-body">era styled</button>',
112
+ '<button class="h-control rounded-control px-inset-control shadow text-body">era styled</button>',
113
113
  '```',
114
114
  '',
115
115
  'Alongside the `@utility` classes referenced below, era registers named theme',
@@ -119,8 +119,8 @@ const INTRO = [
119
119
  '',
120
120
  '| Stock-looking class | What it resolves to |',
121
121
  '|---|---|',
122
- '| `rounded-xs/xxs/sm/md/lg` | the concentric radius ladder (collapses on `data-corners="square"`) |',
123
- '| `rounded-item` | menu-row radius, concentric inside a `rounded-md` panel |',
122
+ '| `rounded-icon/xxs/sm/md/lg` | the concentric radius ladder (collapses on `data-corners="square"`) |',
123
+ '| `rounded-menu-item` | menu-row radius, concentric inside a `rounded-control` panel |',
124
124
  '| `shadow` / `shadow-lg` | resting control edge / floating panel chrome, per surface |',
125
125
  '| `shadow-well` / `shadow-pressed` / `shadow-highlight` | recessed, pressed/latched, hover-material chrome |',
126
126
  '| `bg-well` / `bg-elevated` / `bg-highlight` / `bg-overlay` | surface fills: resting, raised, transient feedback, modal scrim |',
@@ -130,9 +130,9 @@ const INTRO = [
130
130
  '',
131
131
  "Deliberate gaps: `w-*`/`min-w-*` tier names would shadow Tailwind's container",
132
132
  'scale (`min-w-md` stays 28rem), and the concentric-inset tokens are advanced',
133
- 'enough to stay var-form — `min-w-(--era-h-md)` etc. remain the escape hatch.'
133
+ 'enough to stay var-form — `min-w-(--era-h-control)` etc. remain the escape hatch.'
134
134
  ].join('\n');
135
- /** `h-xs` for a single class, `h-xs · h-xxs · … · h-lg` for a ladder. */
135
+ /** `h-icon` for a single class, `h-icon · h-pill · … · h-bar` for a ladder. */
136
136
  const label = (u) => u.names.join(' · ');
137
137
  /** Renders the utilities reference — the generated `utilities.md` body. */
138
138
  export function buildUtilitiesDoc(utilities) {
@@ -40,7 +40,7 @@ function orientation(origin) {
40
40
  'lg = 4·sp bars, top-level containers 32 / 40 / 48 px',
41
41
  '```',
42
42
  '',
43
- 'Heights (`--era-h-*`), insets (`--era-inset-*`), radii (`--era-rd-*`), and concentric gaps (`--era-xs-inset-sm`, `--era-xxs-inset-md`, …) are all `calc()` chains off `--era-sp`. Never hard-code pixel values — setting `data-mode` on any ancestor re-derives the whole subtree. Type is the second density input (12 px at dense, 14 px above); the spacing atom moves with it.',
43
+ 'Heights (`--era-h-*`), insets (`--era-inset-*`), radii (`--era-rd-*`), and concentric gaps (`--era-icon-inset-chip`, `--era-pill-inset-control`, …) are all `calc()` chains off `--era-sp`. Never hard-code pixel values — setting `data-mode` on any ancestor re-derives the whole subtree. Type is the second density input (12 px at dense, 14 px above); the spacing atom moves with it.',
44
44
  '',
45
45
  '## Per-component docs',
46
46
  '',