@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
@@ -16,13 +16,13 @@
16
16
  } = $props();
17
17
  </script>
18
18
 
19
- <!-- A standalone pill is the sm tier: h-sm + rd-sm come from the Button
19
+ <!-- A standalone pill is the sm tier: h-chip + rd-sm come from the Button
20
20
  variant; the sides take Chip's glyph-advance padding (pill-sm, ~2× the
21
21
  vertical inset) so the words breathe. Era pills are rd-sm, not
22
22
  full-round — touch mode alone pills the ladder. -->
23
23
  <Button
24
24
  size="sm"
25
- class={cn('shrink-0 px-(--era-pill-sm)', className)}
25
+ class={cn('shrink-0 px-(--era-chip-px)', className)}
26
26
  onclick={() => onSelect?.(suggestion)}
27
27
  >
28
28
  {#if children}{@render children()}{:else}{suggestion}{/if}
@@ -55,7 +55,7 @@
55
55
  tone="well"
56
56
  data-status={agent.status}
57
57
  class={cn(
58
- 'flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-sm)',
58
+ 'flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-panel)',
59
59
  agent.status === 'failed' && 'outline -outline-offset-1 outline-destructive/60',
60
60
  className
61
61
  )}
@@ -40,7 +40,7 @@
40
40
  <Card
41
41
  tone="well"
42
42
  data-kind={artifact.kind}
43
- class={cn('flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-sm)', className)}
43
+ class={cn('flex min-w-0 flex-col gap-(--era-gap) p-(--era-pad-panel)', className)}
44
44
  {...restProps}
45
45
  >
46
46
  <div class="flex min-w-0 items-center gap-(--era-gap) text-body era-text-trim">
@@ -41,7 +41,7 @@
41
41
  {...restProps}
42
42
  >
43
43
  <div class="flex min-w-0 items-center gap-(--era-gap) text-body era-text-trim">
44
- <GitMerge class="size-(--era-h-xs) shrink-0 text-muted" aria-hidden="true" />
44
+ <GitMerge class="size-(--era-h-icon) shrink-0 text-muted" aria-hidden="true" />
45
45
  <span class="min-w-0 flex-1 truncate text-fg">{barrier.title}</span>
46
46
  {#if barrier.key}
47
47
  <span class="shrink-0 font-mono text-body text-muted">#{barrier.key}</span>
@@ -27,7 +27,7 @@
27
27
  {#if barriers.length > 0}
28
28
  <div
29
29
  class={cn(
30
- 'flex min-w-0 flex-col gap-(--era-pad-sm) border-t border-divider-faded p-(--era-pad-sm)',
30
+ 'flex min-w-0 flex-col gap-(--era-pad-panel) border-t border-divider-faded p-(--era-pad-panel)',
31
31
  className
32
32
  )}
33
33
  {...restProps}
@@ -42,7 +42,7 @@
42
42
  {/if}
43
43
  {#if tally.sandboxes > 0}
44
44
  <Badge>
45
- <Box class="size-(--era-h-xs)" aria-hidden="true" />
45
+ <Box class="size-(--era-h-icon)" aria-hidden="true" />
46
46
  {tally.sandboxes}
47
47
  </Badge>
48
48
  {/if}
@@ -50,7 +50,7 @@
50
50
 
51
51
  <div
52
52
  class={cn(
53
- 'flex h-(--era-h-md) shrink-0 items-center gap-(--era-gap) border-t border-divider-faded px-(--era-inset-md) font-mono text-body era-text-trim',
53
+ 'flex h-(--era-h-control) shrink-0 items-center gap-(--era-gap) border-t border-divider-faded px-(--era-inset-control) font-mono text-body era-text-trim',
54
54
  className
55
55
  )}
56
56
  {...restProps}
@@ -34,13 +34,13 @@
34
34
  grow with the density axis instead of staying dense-sized in touch mode. -->
35
35
  <div
36
36
  class={cn(
37
- 'grid min-w-0 grid-cols-[repeat(auto-fill,minmax(calc(var(--era-h-lg)*6),1fr))] gap-(--era-gap) p-(--era-gap)',
37
+ 'grid min-w-0 grid-cols-[repeat(auto-fill,minmax(calc(var(--era-h-bar)*6),1fr))] gap-(--era-gap) p-(--era-gap)',
38
38
  className
39
39
  )}
40
40
  {...restProps}
41
41
  >
42
42
  {#if nodes.length === 0}
43
- <div class="px-(--era-inset-md) py-(--era-gap) text-body text-muted">
43
+ <div class="px-(--era-inset-control) py-(--era-gap) text-body text-muted">
44
44
  {#if empty}{@render empty()}{:else}No agents yet.{/if}
45
45
  </div>
46
46
  {:else}
@@ -43,7 +43,7 @@
43
43
  the end of a sentence you can hover for, never the count of what failed. -->
44
44
  <div
45
45
  class={cn(
46
- 'flex h-(--era-h-md) shrink-0 items-center gap-(--era-gap) px-(--era-inset-md) text-body era-text-trim',
46
+ 'flex h-(--era-h-control) shrink-0 items-center gap-(--era-gap) px-(--era-inset-control) text-body era-text-trim',
47
47
  className
48
48
  )}
49
49
  {...restProps}
@@ -160,8 +160,8 @@
160
160
  highlight instantly so a fast pass down the tree doesn't smear. -->
161
161
  <div
162
162
  class={cn(
163
- 'flex h-(--era-h-md) items-center gap-(--era-gap) rounded-(--era-rd-md) pl-(--era-inset-md) text-body era-text-trim',
164
- hasActions ? 'pr-(--era-xxs-inset-md)' : 'pr-(--era-inset-md)',
163
+ 'flex h-(--era-h-control) items-center gap-(--era-gap) rounded-(--era-rd-control) pl-(--era-inset-control) text-body era-text-trim',
164
+ hasActions ? 'pr-(--era-pill-inset-control)' : 'pr-(--era-inset-control)',
165
165
  (hasChildren || hasDetail) && 'cursor-pointer',
166
166
  active
167
167
  ? 'bg-hover text-bright'
@@ -183,14 +183,14 @@
183
183
  single source of truth, without the ancestry. -->
184
184
  <ChevronRight
185
185
  class={cn(
186
- 'size-(--era-h-xs) shrink-0 text-muted transition-transform duration-(--era-duration) ease-(--era-ease)',
186
+ 'size-(--era-h-icon) shrink-0 text-muted transition-transform duration-(--era-duration) ease-(--era-ease)',
187
187
  open && 'rotate-90'
188
188
  )}
189
189
  aria-hidden="true"
190
190
  />
191
191
  {:else}
192
192
  <!-- Keeps every row's dot on the same column, expandable or not. -->
193
- <span class="size-(--era-h-xs) shrink-0" aria-hidden="true"></span>
193
+ <span class="size-(--era-h-icon) shrink-0" aria-hidden="true"></span>
194
194
  {/if}
195
195
 
196
196
  <Dot status={agent.status} />
@@ -225,7 +225,7 @@
225
225
  event.stopPropagation();
226
226
  toggleDetail();
227
227
  }}
228
- class="shrink-0 era-interactive cursor-pointer rounded-(--era-rd-xxs) px-(--era-pill-xxs) font-mono text-body era-text-trim text-muted hover:bg-(--era-highlight) hover:text-fg data-[state=open]:bg-hover data-[state=open]:text-fg"
228
+ class="shrink-0 era-interactive cursor-pointer rounded-(--era-rd-pill) px-(--era-pill-px) font-mono text-body era-text-trim text-muted hover:bg-(--era-highlight) hover:text-fg data-[state=open]:bg-hover data-[state=open]:text-fg"
229
229
  >
230
230
  {detailLabel}
231
231
  </button>
@@ -263,7 +263,7 @@
263
263
  <Collapsible.Root bind:open={detailOpen}>
264
264
  <Collapsible.Content class="era-collapse">
265
265
  <div
266
- class="min-w-0 pr-(--era-inset-md) pb-(--era-gap) pl-[calc(var(--era-inset-md)+var(--era-h-xs)+var(--era-gap))]"
266
+ class="min-w-0 pr-(--era-inset-control) pb-(--era-gap) pl-[calc(var(--era-inset-control)+var(--era-h-icon)+var(--era-gap))]"
267
267
  >
268
268
  {@render detail?.(agent)}
269
269
  </div>
@@ -277,7 +277,7 @@
277
277
  straight down from the parent's own arrow into its children. -->
278
278
  <div
279
279
  role="group"
280
- class="ml-[calc(var(--era-inset-md)+var(--era-h-xs)/2)] border-l border-divider-faded"
280
+ class="ml-[calc(var(--era-inset-control)+var(--era-h-icon)/2)] border-l border-divider-faded"
281
281
  >
282
282
  {@render children?.()}
283
283
  </div>
@@ -59,6 +59,6 @@
59
59
  )}
60
60
  {...restProps}
61
61
  >
62
- <Icon class="size-(--era-h-xs) shrink-0" aria-hidden="true" />
62
+ <Icon class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
63
63
  {name}
64
64
  </span>
@@ -52,7 +52,7 @@
52
52
  <div
53
53
  bind:this={ref}
54
54
  class={cn(
55
- 'flex min-w-0 flex-col rounded-(--era-rd-lg) bg-(--era-surface-bg) shadow-(--era-shadow)',
55
+ 'flex min-w-0 flex-col rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow)',
56
56
  className
57
57
  )}
58
58
  {...restProps}
@@ -58,16 +58,16 @@
58
58
  <!-- busy: the box PULSES rather than gaining a second glyph — "a command is
59
59
  streaming through this VM" is motion, and motion is what says it. -->
60
60
  <Box
61
- class={cn('size-(--era-h-xs) shrink-0', sandbox.busy && 'animate-pulse')}
61
+ class={cn('size-(--era-h-icon) shrink-0', sandbox.busy && 'animate-pulse')}
62
62
  aria-hidden="true"
63
63
  />
64
64
  {#if sandbox.checkpoint}
65
65
  <!-- A paused VM kept as a restore point — the camera badge, as the
66
66
  reference console draws it. -->
67
- <Camera class="size-(--era-icon-xxs) shrink-0" aria-hidden="true" />
67
+ <Camera class="size-(--era-glyph-pill) shrink-0" aria-hidden="true" />
68
68
  {:else if forkOf}
69
69
  <!-- Live-forked from a parent VM; the lineage is in the title. -->
70
- <GitBranch class="size-(--era-icon-xxs) shrink-0" aria-hidden="true" />
70
+ <GitBranch class="size-(--era-glyph-pill) shrink-0" aria-hidden="true" />
71
71
  {/if}
72
72
  {#if label}<span class="truncate">{sandbox.status}</span>{/if}
73
73
  </span>
@@ -185,7 +185,7 @@
185
185
  {...restProps}
186
186
  >
187
187
  {#if rows.length === 0}
188
- <div class="px-(--era-inset-md) py-(--era-gap) text-body text-muted">
188
+ <div class="px-(--era-inset-control) py-(--era-gap) text-body text-muted">
189
189
  {#if empty}{@render empty()}{:else}No agents yet.{/if}
190
190
  </div>
191
191
  {:else}
@@ -9,7 +9,7 @@
9
9
  <!-- The task log rail: items hang off a left border, terminal-trace style. -->
10
10
  <Step.Content
11
11
  class={cn(
12
- 'border-divider-faded border-s-2 bg-transparent p-0 ps-(--era-pad-sm) shadow-none',
12
+ 'border-divider-faded border-s-2 bg-transparent p-0 ps-(--era-pad-panel) shadow-none',
13
13
  className
14
14
  )}
15
15
  >
@@ -7,6 +7,6 @@
7
7
  </script>
8
8
 
9
9
  <Step.Summary>
10
- <Search class="size-(--era-h-xs) shrink-0" aria-hidden="true" />
10
+ <Search class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
11
11
  {#if children}{@render children()}{:else}{title}{/if}
12
12
  </Step.Summary>
@@ -47,14 +47,14 @@
47
47
  data-status={status}
48
48
  {onclick}
49
49
  class={cn(
50
- 'inline-flex h-(--era-h-xxs) max-w-full min-w-0 shrink-0 era-interactive cursor-pointer items-center gap-(--era-gap) rounded-(--era-rd-xxs) px-(--era-pill-xxs) text-body era-text-trim text-muted transition-colors duration-(--era-duration) ease-(--era-ease) hover:bg-(--era-highlight) hover:text-fg',
50
+ 'inline-flex h-(--era-h-pill) max-w-full min-w-0 shrink-0 era-interactive cursor-pointer items-center gap-(--era-gap) rounded-(--era-rd-pill) px-(--era-pill-px) text-body era-text-trim text-muted transition-colors duration-(--era-duration) ease-(--era-ease) hover:bg-(--era-highlight) hover:text-fg',
51
51
  active && 'bg-fill text-fg',
52
52
  className
53
53
  )}
54
54
  {...restProps}
55
55
  >
56
56
  <Icon
57
- class={cn('size-(--era-h-xs) shrink-0', status === 'running' && 'animate-pulse')}
57
+ class={cn('size-(--era-h-icon) shrink-0', status === 'running' && 'animate-pulse')}
58
58
  aria-hidden="true"
59
59
  />
60
60
  <span class={cn('min-w-0 truncate', status === 'running' && 'era-shimmer')}>
@@ -19,7 +19,7 @@
19
19
  const failed = $derived(exitCode !== undefined && exitCode !== 0);
20
20
  </script>
21
21
 
22
- <div class="flex min-w-0 flex-col gap-(--era-pad-sm)">
22
+ <div class="flex min-w-0 flex-col gap-(--era-pad-panel)">
23
23
  {#if command || failed}
24
24
  <div class="flex min-w-0 items-center gap-(--era-gap)">
25
25
  {#if command}
@@ -39,14 +39,14 @@
39
39
  {#if stdout}
40
40
  <Step.Section label="stdout">
41
41
  <pre
42
- class="min-w-0 overflow-x-auto rounded-(--era-rd-md) bg-(--era-field-bg) p-(--era-pad-sm) font-mono text-body whitespace-pre-wrap text-muted shadow-(--era-shadow-well)">{stdout}</pre>
42
+ class="min-w-0 overflow-x-auto rounded-(--era-rd-control) bg-(--era-field-bg) p-(--era-pad-panel) font-mono text-body whitespace-pre-wrap text-muted shadow-(--era-shadow-well)">{stdout}</pre>
43
43
  </Step.Section>
44
44
  {/if}
45
45
 
46
46
  {#if stderr}
47
47
  <Step.Section label="stderr">
48
48
  <pre
49
- class="min-w-0 overflow-x-auto rounded-(--era-rd-md) bg-(--era-field-bg) p-(--era-pad-sm) font-mono text-body whitespace-pre-wrap text-destructive shadow-(--era-shadow-well)">{stderr}</pre>
49
+ class="min-w-0 overflow-x-auto rounded-(--era-rd-control) bg-(--era-field-bg) p-(--era-pad-panel) font-mono text-body whitespace-pre-wrap text-destructive shadow-(--era-shadow-well)">{stderr}</pre>
50
50
  </Step.Section>
51
51
  {/if}
52
52
  </div>
@@ -14,7 +14,7 @@
14
14
  </script>
15
15
 
16
16
  <Step.Summary>
17
- <Wrench class="size-(--era-h-xs) shrink-0" aria-hidden="true" />
17
+ <Wrench class="size-(--era-h-icon) shrink-0" aria-hidden="true" />
18
18
  <span class="truncate text-fg">{type}</span>
19
19
  {@render children?.()}
20
20
  </Step.Summary>
@@ -17,17 +17,17 @@
17
17
 
18
18
  <div
19
19
  class={cn(
20
- 'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-lg) bg-(--era-surface-bg) shadow-(--era-shadow-lg)',
20
+ 'flex min-h-0 flex-col overflow-hidden rounded-(--era-rd-bar) bg-(--era-surface-bg) shadow-(--era-shadow-lg)',
21
21
  className
22
22
  )}
23
23
  >
24
24
  <Bar size="md" class="shrink-0 gap-(--era-gap) rounded-none">
25
25
  <Button icon size="sm" aria-label="Reload" onclick={() => (nonce += 1)}>
26
- <RotateCw class="size-(--era-h-xs)" />
26
+ <RotateCw class="size-(--era-h-icon)" />
27
27
  </Button>
28
28
  <Input
29
29
  bind:value={draft}
30
- class="h-(--era-h-sm) flex-1"
30
+ class="h-(--era-h-chip) flex-1"
31
31
  placeholder="https://…"
32
32
  onkeydown={(e: KeyboardEvent) => {
33
33
  if (e.key === 'Enter') {
@@ -12,7 +12,7 @@
12
12
 
13
13
  <!-- Thin era skin over Svelte Flow — the graph engine is xyflow's. This file
14
14
  lives on its own subpath so the dependency stays opt-in. -->
15
- <SvelteFlow bind:nodes bind:edges fitView class="rounded-(--era-rd-lg) shadow-(--era-shadow)">
15
+ <SvelteFlow bind:nodes bind:edges fitView class="rounded-(--era-rd-bar) shadow-(--era-shadow)">
16
16
  <Background bgColor="var(--color-1)" />
17
17
  <Controls />
18
18
  {@render children?.()}
@@ -12,18 +12,18 @@
12
12
 
13
13
  <div
14
14
  class={cn(
15
- 'flex w-56 flex-col overflow-hidden rounded-(--era-rd-md) bg-(--era-surface-bg-elevated) text-body shadow-(--era-shadow-lg)',
15
+ 'flex w-56 flex-col overflow-hidden rounded-(--era-rd-control) bg-(--era-surface-bg-elevated) text-body shadow-(--era-shadow-lg)',
16
16
  className
17
17
  )}
18
18
  >
19
19
  <Handle type="target" position={Position.Left} />
20
20
  {#if title}
21
21
  <div
22
- class="flex h-(--era-h-md) items-center border-b border-divider-faded px-(--era-inset-md) font-medium text-bright"
22
+ class="flex h-(--era-h-control) items-center border-b border-divider-faded px-(--era-inset-control) font-medium text-bright"
23
23
  >
24
24
  {title}
25
25
  </div>
26
26
  {/if}
27
- <div class="p-(--era-inset-md) text-fg">{@render children?.()}</div>
27
+ <div class="p-(--era-inset-control) text-fg">{@render children?.()}</div>
28
28
  <Handle type="source" position={Position.Right} />
29
29
  </div>
@@ -116,7 +116,7 @@
116
116
  <AI.Conversations.Root>
117
117
  {#snippet header()}
118
118
  <Button class="w-full justify-start" onclick={() => onNewChat?.()}>
119
- <Plus class="size-xs" aria-hidden="true" />
119
+ <Plus class="size-icon" aria-hidden="true" />
120
120
  New chat
121
121
  </Button>
122
122
  {/snippet}
@@ -143,7 +143,7 @@
143
143
  <!-- Thread -->
144
144
  <div class="flex min-w-0 flex-1 flex-col">
145
145
  {#if runStatus !== 'idle'}
146
- <div class="shrink-0 border-b border-divider px-(--era-pad-md) py-gutter">
146
+ <div class="shrink-0 border-b border-divider px-(--era-pad-card) py-gutter">
147
147
  <AI.RunStatus.Root
148
148
  status={runStatus}
149
149
  tools={{
@@ -174,7 +174,7 @@
174
174
  {:else}
175
175
  <AI.Conversation.EmptyState title={emptyTitle} description={emptyDescription}>
176
176
  {#snippet icon()}
177
- <Sparkles class="size-md text-muted" />
177
+ <Sparkles class="size-control text-muted" />
178
178
  {/snippet}
179
179
  </AI.Conversation.EmptyState>
180
180
  {/if}
@@ -187,7 +187,7 @@
187
187
  <AI.Conversation.ScrollButton />
188
188
  </AI.Conversation.Root>
189
189
 
190
- <div class="mx-auto w-full max-w-2xl shrink-0 p-(--era-pad-md) pt-0">
190
+ <div class="mx-auto w-full max-w-2xl shrink-0 p-(--era-pad-card) pt-0">
191
191
  {#if active && active.messages.length === 0 && suggestions.length > 0}
192
192
  <div class="pb-(--era-gap)">
193
193
  <AI.Suggestions.Root>
@@ -265,7 +265,7 @@
265
265
  {#snippet expanded()}
266
266
  {@const tool = block.tools.find((t) => t.id === openChip)}
267
267
  {#if tool}
268
- <Card tone="well" class="flex min-w-0 flex-col gap-(--era-pad-sm) p-(--era-pad-sm)">
268
+ <Card tone="well" class="flex min-w-0 flex-col gap-(--era-pad-panel) p-(--era-pad-panel)">
269
269
  <AI.Tool.Input input={tool.input} />
270
270
  <AI.Tool.Output output={tool.output} />
271
271
  </Card>
@@ -314,10 +314,10 @@
314
314
  {#if !block.streaming && block.text}
315
315
  <AI.Message.Toolbar>
316
316
  <AI.Actions.Action tooltip="Copy" onclick={() => copyText(block.text)}>
317
- <Copy class="size-xs" />
317
+ <Copy class="size-icon" />
318
318
  </AI.Actions.Action>
319
319
  <AI.Actions.Action tooltip="Regenerate" onclick={() => copyText(block.text)}>
320
- <RotateCcw class="size-xs" />
320
+ <RotateCcw class="size-icon" />
321
321
  </AI.Actions.Action>
322
322
  </AI.Message.Toolbar>
323
323
  {#if block.usage}
@@ -44,16 +44,18 @@
44
44
 
45
45
  <!-- Rows carry shrink-0 deliberately. This is a flex COLUMN with a capped
46
46
  height, so without it flex compresses the children to fit rather than
47
- letting the panel scroll: 12 items in an 8-row box rendered every h-md row
47
+ letting the panel scroll: 12 items in an 8-row box rendered every h-control row
48
48
  at 16px against 14px text, which read as a menu with no padding at all.
49
49
  overflow-y-auto never engaged, because the content had already been
50
50
  squashed to fit. -->
51
51
  <div
52
52
  bind:this={list}
53
- class="scrollbar-none flex max-h-[calc(var(--era-h-md)*8)] w-max min-w-48 flex-col overflow-y-auto rounded-md bg-elevated p-menu shadow-lg glass-blur"
53
+ class="scrollbar-none flex max-h-[calc(var(--era-h-control)*8)] w-max min-w-48 flex-col overflow-y-auto rounded-control bg-elevated p-menu shadow-lg glass-blur"
54
54
  >
55
55
  {#if items.length === 0}
56
- <div class="flex h-md shrink-0 items-center px-inset-md text-body era-text-trim text-muted">
56
+ <div
57
+ class="flex h-control shrink-0 items-center px-inset-control text-body era-text-trim text-muted"
58
+ >
57
59
  No commands
58
60
  </div>
59
61
  {:else}
@@ -61,7 +63,7 @@
61
63
  {@const Icon = item.icon}
62
64
  <button
63
65
  type="button"
64
- class="flex h-md w-full shrink-0 cursor-pointer items-center gap-gutter rounded-item px-inset-md text-left text-body era-text-trim text-fg {i ===
66
+ class="flex h-control w-full shrink-0 cursor-pointer items-center gap-gutter rounded-menu-item px-inset-control text-left text-body era-text-trim text-fg {i ===
65
67
  selected
66
68
  ? 'bg-highlight shadow-highlight'
67
69
  : ''}"
@@ -73,7 +75,7 @@
73
75
  onSelect(i);
74
76
  }}
75
77
  >
76
- <Icon class="size-xs shrink-0" />
78
+ <Icon class="size-icon shrink-0" />
77
79
  <span class="flex-1">{item.title}</span>
78
80
  <span class="shrink-0 text-muted">{item.description}</span>
79
81
  </button>
@@ -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,7 +370,7 @@
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
@@ -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>
@@ -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[];