@signal9/era-ui 12.1.2 → 14.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 (138) hide show
  1. package/dist/dev/audit-overlay.svelte +1 -1
  2. package/dist/docs/component-docs-core.js +2 -2
  3. package/dist/docs/consumer-import.d.ts +37 -0
  4. package/dist/docs/consumer-import.js +42 -0
  5. package/dist/docs/css-utilities.js +17 -1
  6. package/dist/docs/notes.md +12 -11
  7. package/dist/era-ui.css +1 -1
  8. package/dist/generated-docs/accordion.md +1 -1
  9. package/dist/generated-docs/alert-dialog.md +1 -1
  10. package/dist/generated-docs/avatar.md +1 -1
  11. package/dist/generated-docs/badge.md +3 -0
  12. package/dist/generated-docs/button.md +4 -0
  13. package/dist/generated-docs/calendar.md +1 -1
  14. package/dist/generated-docs/checkbox.md +1 -1
  15. package/dist/generated-docs/chip.md +3 -0
  16. package/dist/generated-docs/collapsible.md +1 -1
  17. package/dist/generated-docs/combobox.md +1 -1
  18. package/dist/generated-docs/command.md +1 -1
  19. package/dist/generated-docs/context-menu.md +1 -1
  20. package/dist/generated-docs/date-field.md +1 -1
  21. package/dist/generated-docs/date-picker.md +1 -1
  22. package/dist/generated-docs/date-range-field.md +1 -1
  23. package/dist/generated-docs/date-range-picker.md +1 -1
  24. package/dist/generated-docs/dialog.md +1 -1
  25. package/dist/generated-docs/dropdown-menu.md +1 -1
  26. package/dist/generated-docs/link-preview.md +1 -1
  27. package/dist/generated-docs/llms-full.txt +101 -68
  28. package/dist/generated-docs/llms.txt +1 -1
  29. package/dist/generated-docs/manifest.json +24 -24
  30. package/dist/generated-docs/menu.md +1 -1
  31. package/dist/generated-docs/menubar.md +1 -1
  32. package/dist/generated-docs/navigation-menu.md +1 -1
  33. package/dist/generated-docs/notes.md +12 -11
  34. package/dist/generated-docs/pagination.md +1 -1
  35. package/dist/generated-docs/pin-input.md +1 -1
  36. package/dist/generated-docs/popover.md +1 -1
  37. package/dist/generated-docs/radio-group.md +1 -1
  38. package/dist/generated-docs/range-calendar.md +1 -1
  39. package/dist/generated-docs/rating-group.md +1 -1
  40. package/dist/generated-docs/scroll-area.md +1 -1
  41. package/dist/generated-docs/select.md +1 -1
  42. package/dist/generated-docs/sheet.md +1 -1
  43. package/dist/generated-docs/slider.md +1 -1
  44. package/dist/generated-docs/step.md +1 -1
  45. package/dist/generated-docs/table.md +1 -1
  46. package/dist/generated-docs/tabs.md +1 -1
  47. package/dist/generated-docs/time-field.md +1 -1
  48. package/dist/generated-docs/time-range-field.md +1 -1
  49. package/dist/generated-docs/toggle-group.md +1 -1
  50. package/dist/generated-docs/toolbar.md +1 -1
  51. package/dist/generated-docs/tooltip.md +1 -1
  52. package/dist/generated-docs/utilities.json +10 -10
  53. package/dist/generated-docs/utilities.md +41 -19
  54. package/dist/os/index.d.ts +0 -1
  55. package/dist/os/index.js +0 -1
  56. package/dist/os/notification-center.svelte +1 -2
  57. package/dist/os/taskbar.svelte +2 -3
  58. package/dist/os/toaster.svelte +2 -3
  59. package/dist/styles/index.css +77 -12
  60. package/dist/styles/layers.css +48 -0
  61. package/dist/styles/surfaces/base.css +4 -2
  62. package/dist/styles/surfaces/glass.css +0 -13
  63. package/dist/theme/index.d.ts +87 -0
  64. package/dist/theme/index.js +86 -0
  65. package/dist/ui/alert-dialog/alert-dialog-content.svelte +2 -2
  66. package/dist/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  67. package/dist/ui/badge/badge.svelte +14 -1
  68. package/dist/ui/badge/badge.svelte.d.ts +4 -0
  69. package/dist/ui/button/button.svelte +37 -7
  70. package/dist/ui/button/button.svelte.d.ts +6 -0
  71. package/dist/ui/chip/chip.svelte +14 -1
  72. package/dist/ui/chip/chip.svelte.d.ts +4 -0
  73. package/dist/ui/combobox/combobox-content.svelte +1 -1
  74. package/dist/ui/command-bar/command-bar.svelte +1 -1
  75. package/dist/ui/context-menu/context-menu-content.svelte +1 -1
  76. package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
  77. package/dist/ui/date-picker/date-picker-content.svelte +1 -1
  78. package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -1
  79. package/dist/ui/dialog/dialog-content.svelte +1 -1
  80. package/dist/ui/dialog/dialog-overlay.svelte +5 -1
  81. package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
  82. package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
  83. package/dist/ui/link-preview/link-preview-content.svelte +1 -1
  84. package/dist/ui/menubar/menubar-content.svelte +1 -1
  85. package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
  86. package/dist/ui/pin-input/index.d.ts +1 -0
  87. package/dist/ui/pin-input/index.js +10 -0
  88. package/dist/ui/popover/popover-content.svelte +1 -1
  89. package/dist/ui/select/select-content.svelte +1 -1
  90. package/dist/ui/sheet/sheet-content.svelte +1 -1
  91. package/dist/ui/sheet/sheet-content.svelte.d.ts +1 -1
  92. package/dist/ui/tooltip/tooltip-content.svelte +1 -1
  93. package/package.json +9 -12
  94. package/dist/apps/index.d.ts +0 -20
  95. package/dist/apps/index.js +0 -20
  96. package/dist/apps/llm-shell/index.d.ts +0 -2
  97. package/dist/apps/llm-shell/index.js +0 -1
  98. package/dist/apps/llm-shell/llm-shell.svelte +0 -334
  99. package/dist/apps/llm-shell/llm-shell.svelte.d.ts +0 -57
  100. package/dist/apps/llm-shell/llm-swarm.svelte +0 -79
  101. package/dist/apps/llm-shell/llm-swarm.svelte.d.ts +0 -25
  102. package/dist/apps/llm-shell/types.d.ts +0 -103
  103. package/dist/apps/llm-shell/types.js +0 -1
  104. package/dist/apps/notes/editor/bubble-menu.svelte.d.ts +0 -11
  105. package/dist/apps/notes/editor/bubble-menu.svelte.js +0 -165
  106. package/dist/apps/notes/editor/bubble-toolbar.svelte +0 -55
  107. package/dist/apps/notes/editor/bubble-toolbar.svelte.d.ts +0 -22
  108. package/dist/apps/notes/editor/extensions.d.ts +0 -18
  109. package/dist/apps/notes/editor/extensions.js +0 -88
  110. package/dist/apps/notes/editor/floating.d.ts +0 -25
  111. package/dist/apps/notes/editor/floating.js +0 -54
  112. package/dist/apps/notes/editor/link.d.ts +0 -9
  113. package/dist/apps/notes/editor/link.js +0 -22
  114. package/dist/apps/notes/editor/list-cleanup-rule.d.ts +0 -14
  115. package/dist/apps/notes/editor/list-cleanup-rule.js +0 -47
  116. package/dist/apps/notes/editor/slash-command.svelte.d.ts +0 -22
  117. package/dist/apps/notes/editor/slash-command.svelte.js +0 -215
  118. package/dist/apps/notes/editor/slash-menu.svelte +0 -82
  119. package/dist/apps/notes/editor/slash-menu.svelte.d.ts +0 -23
  120. package/dist/apps/notes/index.d.ts +0 -11
  121. package/dist/apps/notes/index.js +0 -13
  122. package/dist/apps/notes/markdown.d.ts +0 -12
  123. package/dist/apps/notes/markdown.js +0 -165
  124. package/dist/apps/notes/note-editor.svelte +0 -176
  125. package/dist/apps/notes/note-editor.svelte.d.ts +0 -36
  126. package/dist/apps/notes/notes-store.svelte.d.ts +0 -64
  127. package/dist/apps/notes/notes-store.svelte.js +0 -234
  128. package/dist/apps/notes/notes.svelte +0 -501
  129. package/dist/apps/notes/notes.svelte.d.ts +0 -53
  130. package/dist/apps/notes/tree.d.ts +0 -70
  131. package/dist/apps/notes/tree.js +0 -185
  132. package/dist/apps/notes/types.d.ts +0 -49
  133. package/dist/apps/notes/types.js +0 -11
  134. package/dist/docs/package-name.d.ts +0 -18
  135. package/dist/docs/package-name.js +0 -18
  136. package/dist/docs/quickstart.md +0 -43
  137. package/dist/os/layers.d.ts +0 -23
  138. package/dist/os/layers.js +0 -23
@@ -5,7 +5,7 @@ Search and select from a filtered list of options.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { Combobox } from "@signal9/era-ui/combobox";
8
+ import * as Combobox from "@signal9/era-ui/combobox";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ A searchable command menu for quick navigation.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { Command } from "@signal9/era-ui/command";
8
+ import * as Command from "@signal9/era-ui/command";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ Options and actions triggered by right-click.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { ContextMenu } from "@signal9/era-ui/context-menu";
8
+ import * as ContextMenu from "@signal9/era-ui/context-menu";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ Segmented date input with keyboard navigation.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { DateField } from "@signal9/era-ui/date-field";
8
+ import * as DateField from "@signal9/era-ui/date-field";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ Date input with a calendar popover.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { DatePicker } from "@signal9/era-ui/date-picker";
8
+ import * as DatePicker from "@signal9/era-ui/date-picker";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ Segmented start/end date input.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { DateRangeField } from "@signal9/era-ui/date-range-field";
8
+ import * as DateRangeField from "@signal9/era-ui/date-range-field";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ Date range input with a calendar popover.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { DateRangePicker } from "@signal9/era-ui/date-range-picker";
8
+ import * as DateRangePicker from "@signal9/era-ui/date-range-picker";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ A modal window for content or user input.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { Dialog } from "@signal9/era-ui/dialog";
8
+ import * as Dialog from "@signal9/era-ui/dialog";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ A menu of selectable items.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { DropdownMenu } from "@signal9/era-ui/dropdown-menu";
8
+ import * as DropdownMenu from "@signal9/era-ui/dropdown-menu";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -5,7 +5,7 @@ Shows rich preview content when hovering a link.
5
5
  ## Import
6
6
 
7
7
  ```ts
8
- import { LinkPreview } from "@signal9/era-ui/link-preview";
8
+ import * as LinkPreview from "@signal9/era-ui/link-preview";
9
9
  ```
10
10
 
11
11
  Composed from sub-components — compose explicitly at the call site:
@@ -63,6 +63,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
63
63
  - `era-ink-center` — on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
64
64
  - `era-token-ink` — the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there.
65
65
  - `era-label-ink` — the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip).
66
+ - `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
66
67
  - `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
67
68
  - `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
68
69
  - `h-icon · h-pill · h-chip · h-control · h-bar` — the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
@@ -87,7 +88,6 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
87
88
  - `ease-base` — Motion — bare transition utilities default to the motion axis, so
88
89
  - `bg-divider · text-divider · border-divider · bg-divider-faded · text-divider-faded · border-divider-faded · bg-background · text-background · … (66 in all)` — Surface divider colors: border-divider, bg-divider-faded, …
89
90
  - `bg-fill · text-fill · border-fill · bg-link · text-link · border-link · bg-primary · text-primary · … (33 in all)` — The standing pill fill — --era-fill, the latched counterpart of the
90
- - `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
91
91
 
92
92
  Full reference (what each emits, when to use it): `/utilities.md`. Machine-readable list: `/utilities.json`.
93
93
 
@@ -170,6 +170,17 @@ motion):
170
170
  | `text-body` | density-derived body/control text size |
171
171
  | `p-gutter` / `gap-gutter` / `mt-gutter` / … | the spacing scale — EVERY spacing prefix works |
172
172
 
173
+ THE SPACING NAMES IN SIZE ORDER, smallest first, because the names do not
174
+ imply it and guessing gets it backwards:
175
+
176
+ gutter < panel < field < card < content
177
+
178
+ Measured at `data-mode="balanced"`: gutter 5px, field ~9px, card ~11px,
179
+ content ~22px. `gutter` is the TIGHT one — the gap between sibling controls
180
+ and a rail's own padding. `field` is a text input's side padding, not the
181
+ label-to-input gap. Reading them the other way round produces a layout whose
182
+ hierarchy is inverted and therefore reads flat.
183
+
173
184
  The spacing names (`gutter`, `card`, `panel`, `content`, `menu`, `field`, the
174
185
  `inset-*` and concentric `*-inset-*` insets, `glyph-*`) are registered as a
175
186
  Tailwind spacing scale, so every prefix derives automatically: `p-`, `px-`,
@@ -195,6 +206,7 @@ source uses it where a name exists.
195
206
  | `era-ink-center` | on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim. |
196
207
  | `era-token-ink` | the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there. |
197
208
  | `era-label-ink` | the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip). |
209
+ | `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
198
210
  | `era-shimmer` | the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text. |
199
211
  | `era-collapse` | the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden). |
200
212
  | `h-icon` `h-pill` `h-chip` `h-control` `h-bar` | the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*). |
@@ -219,7 +231,6 @@ source uses it where a name exists.
219
231
  | `ease-base` | — |
220
232
  | `bg-divider` `text-divider` `border-divider` `bg-divider-faded` `text-divider-faded` `border-divider-faded` `bg-background` `text-background` `border-background` `bg-foreground` `text-foreground` `border-foreground` `bg-1` `text-1` `border-1` `bg-2` `text-2` `border-2` `bg-3` `text-3` `border-3` `bg-4` `text-4` `border-4` `bg-5` `text-5` `border-5` `bg-6` `text-6` `border-6` `bg-7` `text-7` `border-7` `bg-8` `text-8` `border-8` `bg-9` `text-9` `border-9` `bg-10` `text-10` `border-10` `bg-11` `text-11` `border-11` `bg-12` `text-12` `border-12` `bg-border` `text-border` `border-border` `bg-surface` `text-surface` `border-surface` `bg-hover` `text-hover` `border-hover` `bg-fg` `text-fg` `border-fg` `bg-bright` `text-bright` `border-bright` `bg-muted` `text-muted` `border-muted` | — |
221
233
  | `bg-fill` `text-fill` `border-fill` `bg-link` `text-link` `border-link` `bg-primary` `text-primary` `border-primary` `bg-primary-fg` `text-primary-fg` `border-primary-fg` `bg-primary-hover` `text-primary-hover` `border-primary-hover` `bg-destructive` `text-destructive` `border-destructive` `bg-destructive-fg` `text-destructive-fg` `border-destructive-fg` `bg-success` `text-success` `border-success` `bg-success-fg` `text-success-fg` `border-success-fg` `bg-warning` `text-warning` `border-warning` `bg-warning-fg` `text-warning-fg` `border-warning-fg` | — |
222
- | `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
223
234
 
224
235
  ## era-interactive
225
236
 
@@ -517,6 +528,35 @@ Declared in `index.css`.
517
528
  }
518
529
  ```
519
530
 
531
+ ## glass-blur
532
+
533
+ **Use it for:** the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
534
+
535
+ Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter
536
+ is a registered utility, gated to glass subtrees.
537
+
538
+ It lives HERE rather than in surfaces/glass.css, where a surface's own
539
+ chrome would naturally sit, because glass.css is imported into a cascade
540
+ layer and `@utility` cannot be nested inside one. Surface-scoped RULES stay
541
+ in their surface file; surface-scoped UTILITIES have to come out.
542
+
543
+ Declared in `index.css`.
544
+
545
+ ```css
546
+ @utility` cannot be nested inside one. Surface-scoped RULES stay
547
+ * in their surface file; surface-scoped UTILITIES have to come out.
548
+ *
549
+ * @use the backdrop blur for a floating panel (popover, dialog, taskbar) — it
550
+ * applies only inside a data-surface="glass" subtree and is inert elsewhere,
551
+ * so it is safe to leave on a panel that renders under every surface. */
552
+ @utility glass-blur {
553
+ [data-surface='glass'] & {
554
+ backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
555
+ -webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
556
+ }
557
+ }
558
+ ```
559
+
520
560
  ## era-shimmer
521
561
 
522
562
  **Use it for:** the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
@@ -1040,24 +1080,6 @@ Declared in `index.css`.
1040
1080
  }
1041
1081
  ```
1042
1082
 
1043
- ## glass-blur
1044
-
1045
- **Use it for:** the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
1046
-
1047
- Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter
1048
- is a registered utility, gated to glass subtrees.
1049
-
1050
- Declared in `surfaces/glass.css`.
1051
-
1052
- ```css
1053
- @utility glass-blur {
1054
- [data-surface='glass'] & {
1055
- backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
1056
- -webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
1057
- }
1058
- }
1059
- ```
1060
-
1061
1083
  <!-- end: utilities -->
1062
1084
 
1063
1085
  <!-- begin: draggable -->
@@ -1100,19 +1122,20 @@ A complete notes app — rich-text editor, slash commands, local persistence.
1100
1122
 
1101
1123
  ## Usage
1102
1124
 
1103
- Apps ship on their own subpath and are **not** re-exported from `@signal9/era-ui`.
1104
- Notes carries TipTap, and a consumer who never imports an app should never pay
1105
- for it.
1125
+ **Notes is not published.** It lives in `src/apps/` in the era-ui repository,
1126
+ outside the packaged `src/lib`, so there is no import path that reaches it — the
1127
+ `@signal9/era-ui/apps` subpath was removed in v13.
1106
1128
 
1107
- ```svelte
1108
- <script>
1109
- import { Notes } from '@signal9/era-ui/apps';
1110
- </script>
1129
+ A design system that also ships a note-taking application is two products in one
1130
+ package: Notes alone brings fifteen TipTap packages, and its release cadence and
1131
+ support expectations are nothing like a primitive's. It stays in the repo as a
1132
+ reference implementation and a demo — read it, copy it, or lift it into the
1133
+ product that renders it.
1111
1134
 
1112
- <Notes />
1113
- ```
1135
+ What era DOES publish is the part that generalises: `@signal9/era-ui/styles/prose`
1136
+ is the document typography Notes uses, available to anyone building an editor.
1114
1137
 
1115
- That is the whole integration: a sidebar with filter, pin, and delete; a TipTap
1138
+ Read as a reference, the integration is: a sidebar with filter, pin, and delete; a TipTap
1116
1139
  document with a `/` command menu and a selection toolbar; and persistence to
1117
1140
  `localStorage` under `era-ui:notes`.
1118
1141
 
@@ -1146,7 +1169,7 @@ Persistence is one small interface, so server-backed hosting is a drop-in swap
1146
1169
  `load`/`save` may be sync or async:
1147
1170
 
1148
1171
  ```ts
1149
- import { Notes, NotesStore } from '@signal9/era-ui/apps';
1172
+ import { Notes, NotesStore } from '$apps/index.js'; // in-repo; not published
1150
1173
 
1151
1174
  const store = new NotesStore({
1152
1175
  adapter: {
@@ -1225,6 +1248,9 @@ Inherits all props from `HTMLAttributes<HTMLSpanElement>`.
1225
1248
  |------|------|---------|-------|
1226
1249
  | `ref?` | `HTMLSpanElement \| null` | `null` | bindable |
1227
1250
  | `tone?` | `'default' \| 'accent' \| 'destructive' \| 'success' \| 'warning'` | `'default'` | — |
1251
+ | `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
1252
+ an icon in `children`: the label then gets its own box, which is the only
1253
+ place era's ink centring can reach. |
1228
1254
  | `children?` | `Snippet` | — | — |
1229
1255
 
1230
1256
  ## Usage
@@ -1257,7 +1283,7 @@ An image with optional initials/icon fallback.
1257
1283
  ## Import
1258
1284
 
1259
1285
  ```ts
1260
- import { Avatar } from "@signal9/era-ui/avatar";
1286
+ import * as Avatar from "@signal9/era-ui/avatar";
1261
1287
  ```
1262
1288
 
1263
1289
  Composed from sub-components — compose explicitly at the call site:
@@ -1347,6 +1373,10 @@ Inherits all props from `Button.RootProps`.
1347
1373
  spinner. The existing label stays rendered so focus, click targets,
1348
1374
  and screen-reader accessible names don't change shape mid-flight. |
1349
1375
  | `loadingLabel?` | `string` | — | Screen-reader-only label announced while `loading` is true. |
1376
+ | `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
1377
+ an icon in `children`: the label then gets its own box, which is the only
1378
+ place era's ink centring can reach (see era-label-ink). |
1379
+ | `trail?` | `Snippet` | — | Icon rendered AFTER the label, outside it. Same reason as `lead`. |
1350
1380
  | `children?` | `Snippet` | — | — |
1351
1381
  | `ref?` | `(forwarded)` | `null` | bindable |
1352
1382
 
@@ -1490,6 +1520,9 @@ Inherits all props from `HTMLAttributes<HTMLDivElement>`.
1490
1520
  | `size?` | `'chip' \| 'pill'` | `'chip'` | `sm` (default) is the standalone free chip; `pill` is the smaller pill
1491
1521
  that nests inside an md container (a select trigger, a button). |
1492
1522
  | `ondismiss?` | `() => void` | — | — |
1523
+ | `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
1524
+ an icon in `children`: the label then gets its own box, which is the only
1525
+ place era's ink centring can reach. |
1493
1526
  | `children?` | `Snippet` | — | — |
1494
1527
 
1495
1528
  ## Usage
@@ -1686,7 +1719,7 @@ A dialog anchored to a screen edge — a mobile drawer.
1686
1719
  ## Import
1687
1720
 
1688
1721
  ```ts
1689
- import { Sheet } from "@signal9/era-ui/sheet";
1722
+ import * as Sheet from "@signal9/era-ui/sheet";
1690
1723
  ```
1691
1724
 
1692
1725
  Composed from sub-components — compose explicitly at the call site:
@@ -1773,7 +1806,7 @@ Collapsible content sections.
1773
1806
  ## Import
1774
1807
 
1775
1808
  ```ts
1776
- import { Accordion } from "@signal9/era-ui/accordion";
1809
+ import * as Accordion from "@signal9/era-ui/accordion";
1777
1810
  ```
1778
1811
 
1779
1812
  Composed from sub-components — compose explicitly at the call site:
@@ -1835,7 +1868,7 @@ A modal confirmation before destructive actions.
1835
1868
  ## Import
1836
1869
 
1837
1870
  ```ts
1838
- import { AlertDialog } from "@signal9/era-ui/alert-dialog";
1871
+ import * as AlertDialog from "@signal9/era-ui/alert-dialog";
1839
1872
  ```
1840
1873
 
1841
1874
  Composed from sub-components — compose explicitly at the call site:
@@ -1921,7 +1954,7 @@ A date picker calendar grid.
1921
1954
  ## Import
1922
1955
 
1923
1956
  ```ts
1924
- import { Calendar } from "@signal9/era-ui/calendar";
1957
+ import * as Calendar from "@signal9/era-ui/calendar";
1925
1958
  ```
1926
1959
 
1927
1960
  Composed from sub-components — compose explicitly at the call site:
@@ -2052,7 +2085,7 @@ Toggleable check with indeterminate support.
2052
2085
  ## Import
2053
2086
 
2054
2087
  ```ts
2055
- import { Checkbox } from "@signal9/era-ui/checkbox";
2088
+ import * as Checkbox from "@signal9/era-ui/checkbox";
2056
2089
  ```
2057
2090
 
2058
2091
  Composed from sub-components — compose explicitly at the call site:
@@ -2099,7 +2132,7 @@ Show and hide content sections with a trigger.
2099
2132
  ## Import
2100
2133
 
2101
2134
  ```ts
2102
- import { Collapsible } from "@signal9/era-ui/collapsible";
2135
+ import * as Collapsible from "@signal9/era-ui/collapsible";
2103
2136
  ```
2104
2137
 
2105
2138
  Composed from sub-components — compose explicitly at the call site:
@@ -2134,7 +2167,7 @@ Search and select from a filtered list of options.
2134
2167
  ## Import
2135
2168
 
2136
2169
  ```ts
2137
- import { Combobox } from "@signal9/era-ui/combobox";
2170
+ import * as Combobox from "@signal9/era-ui/combobox";
2138
2171
  ```
2139
2172
 
2140
2173
  Composed from sub-components — compose explicitly at the call site:
@@ -2213,7 +2246,7 @@ A searchable command menu for quick navigation.
2213
2246
  ## Import
2214
2247
 
2215
2248
  ```ts
2216
- import { Command } from "@signal9/era-ui/command";
2249
+ import * as Command from "@signal9/era-ui/command";
2217
2250
  ```
2218
2251
 
2219
2252
  Composed from sub-components — compose explicitly at the call site:
@@ -2352,7 +2385,7 @@ Expandable inline step — tool calls, thinking, agent actions.
2352
2385
  ## Import
2353
2386
 
2354
2387
  ```ts
2355
- import { Step } from "@signal9/era-ui/step";
2388
+ import * as Step from "@signal9/era-ui/step";
2356
2389
  ```
2357
2390
 
2358
2391
  Composed from sub-components — compose explicitly at the call site:
@@ -2408,7 +2441,7 @@ Options and actions triggered by right-click.
2408
2441
  ## Import
2409
2442
 
2410
2443
  ```ts
2411
- import { ContextMenu } from "@signal9/era-ui/context-menu";
2444
+ import * as ContextMenu from "@signal9/era-ui/context-menu";
2412
2445
  ```
2413
2446
 
2414
2447
  Composed from sub-components — compose explicitly at the call site:
@@ -2507,7 +2540,7 @@ Segmented date input with keyboard navigation.
2507
2540
  ## Import
2508
2541
 
2509
2542
  ```ts
2510
- import { DateField } from "@signal9/era-ui/date-field";
2543
+ import * as DateField from "@signal9/era-ui/date-field";
2511
2544
  ```
2512
2545
 
2513
2546
  Composed from sub-components — compose explicitly at the call site:
@@ -2561,7 +2594,7 @@ Date input with a calendar popover.
2561
2594
  ## Import
2562
2595
 
2563
2596
  ```ts
2564
- import { DatePicker } from "@signal9/era-ui/date-picker";
2597
+ import * as DatePicker from "@signal9/era-ui/date-picker";
2565
2598
  ```
2566
2599
 
2567
2600
  Composed from sub-components — compose explicitly at the call site:
@@ -2746,7 +2779,7 @@ Segmented start/end date input.
2746
2779
  ## Import
2747
2780
 
2748
2781
  ```ts
2749
- import { DateRangeField } from "@signal9/era-ui/date-range-field";
2782
+ import * as DateRangeField from "@signal9/era-ui/date-range-field";
2750
2783
  ```
2751
2784
 
2752
2785
  Composed from sub-components — compose explicitly at the call site:
@@ -2801,7 +2834,7 @@ Date range input with a calendar popover.
2801
2834
  ## Import
2802
2835
 
2803
2836
  ```ts
2804
- import { DateRangePicker } from "@signal9/era-ui/date-range-picker";
2837
+ import * as DateRangePicker from "@signal9/era-ui/date-range-picker";
2805
2838
  ```
2806
2839
 
2807
2840
  Composed from sub-components — compose explicitly at the call site:
@@ -2986,7 +3019,7 @@ A modal window for content or user input.
2986
3019
  ## Import
2987
3020
 
2988
3021
  ```ts
2989
- import { Dialog } from "@signal9/era-ui/dialog";
3022
+ import * as Dialog from "@signal9/era-ui/dialog";
2990
3023
  ```
2991
3024
 
2992
3025
  Composed from sub-components — compose explicitly at the call site:
@@ -3075,7 +3108,7 @@ A menu of selectable items.
3075
3108
  ## Import
3076
3109
 
3077
3110
  ```ts
3078
- import { DropdownMenu } from "@signal9/era-ui/dropdown-menu";
3111
+ import * as DropdownMenu from "@signal9/era-ui/dropdown-menu";
3079
3112
  ```
3080
3113
 
3081
3114
  Composed from sub-components — compose explicitly at the call site:
@@ -3197,7 +3230,7 @@ A cross-platform scroll container.
3197
3230
  ## Import
3198
3231
 
3199
3232
  ```ts
3200
- import { ScrollArea } from "@signal9/era-ui/scroll-area";
3233
+ import * as ScrollArea from "@signal9/era-ui/scroll-area";
3201
3234
  ```
3202
3235
 
3203
3236
  Composed from sub-components — compose explicitly at the call site:
@@ -3295,7 +3328,7 @@ Shows rich preview content when hovering a link.
3295
3328
  ## Import
3296
3329
 
3297
3330
  ```ts
3298
- import { LinkPreview } from "@signal9/era-ui/link-preview";
3331
+ import * as LinkPreview from "@signal9/era-ui/link-preview";
3299
3332
  ```
3300
3333
 
3301
3334
  Composed from sub-components — compose explicitly at the call site:
@@ -3381,7 +3414,7 @@ Headless menu primitives re-exported from bits-ui.
3381
3414
  ## Import
3382
3415
 
3383
3416
  ```ts
3384
- import { Menu } from "@signal9/era-ui/menu";
3417
+ import * as Menu from "@signal9/era-ui/menu";
3385
3418
  ```
3386
3419
 
3387
3420
  Composed from sub-components — compose explicitly at the call site:
@@ -3397,7 +3430,7 @@ A horizontal bar of dropdown menus.
3397
3430
  ## Import
3398
3431
 
3399
3432
  ```ts
3400
- import { Menubar } from "@signal9/era-ui/menubar";
3433
+ import * as Menubar from "@signal9/era-ui/menubar";
3401
3434
  ```
3402
3435
 
3403
3436
  Composed from sub-components — compose explicitly at the call site:
@@ -3527,7 +3560,7 @@ Headless navigation-menu primitives re-exported from bits-ui.
3527
3560
  ## Import
3528
3561
 
3529
3562
  ```ts
3530
- import { NavigationMenu } from "@signal9/era-ui/navigation-menu";
3563
+ import * as NavigationMenu from "@signal9/era-ui/navigation-menu";
3531
3564
  ```
3532
3565
 
3533
3566
  Composed from sub-components — compose explicitly at the call site:
@@ -3572,7 +3605,7 @@ Enables users to navigate through a series of pages.
3572
3605
  ## Import
3573
3606
 
3574
3607
  ```ts
3575
- import { Pagination } from "@signal9/era-ui/pagination";
3608
+ import * as Pagination from "@signal9/era-ui/pagination";
3576
3609
  ```
3577
3610
 
3578
3611
  Composed from sub-components — compose explicitly at the call site:
@@ -3632,7 +3665,7 @@ Enables users to input a sequence of one-character inputs.
3632
3665
  ## Import
3633
3666
 
3634
3667
  ```ts
3635
- import { PinInput } from "@signal9/era-ui/pin-input";
3668
+ import * as PinInput from "@signal9/era-ui/pin-input";
3636
3669
  ```
3637
3670
 
3638
3671
  Composed from sub-components — compose explicitly at the call site:
@@ -3668,7 +3701,7 @@ A floating panel anchored to a trigger.
3668
3701
  ## Import
3669
3702
 
3670
3703
  ```ts
3671
- import { Popover } from "@signal9/era-ui/popover";
3704
+ import * as Popover from "@signal9/era-ui/popover";
3672
3705
  ```
3673
3706
 
3674
3707
  Composed from sub-components — compose explicitly at the call site:
@@ -3738,7 +3771,7 @@ Headless range-calendar primitives re-exported from bits-ui.
3738
3771
  ## Import
3739
3772
 
3740
3773
  ```ts
3741
- import { RangeCalendar } from "@signal9/era-ui/range-calendar";
3774
+ import * as RangeCalendar from "@signal9/era-ui/range-calendar";
3742
3775
  ```
3743
3776
 
3744
3777
  Composed from sub-components — compose explicitly at the call site:
@@ -3754,7 +3787,7 @@ Groups radio items for single selection.
3754
3787
  ## Import
3755
3788
 
3756
3789
  ```ts
3757
- import { RadioGroup } from "@signal9/era-ui/radio-group";
3790
+ import * as RadioGroup from "@signal9/era-ui/radio-group";
3758
3791
  ```
3759
3792
 
3760
3793
  Composed from sub-components — compose explicitly at the call site:
@@ -3790,7 +3823,7 @@ A star-style single-choice rating input.
3790
3823
  ## Import
3791
3824
 
3792
3825
  ```ts
3793
- import { RatingGroup } from "@signal9/era-ui/rating-group";
3826
+ import * as RatingGroup from "@signal9/era-ui/rating-group";
3794
3827
  ```
3795
3828
 
3796
3829
  Composed from sub-components — compose explicitly at the call site:
@@ -3826,7 +3859,7 @@ A dropdown select menu.
3826
3859
  ## Import
3827
3860
 
3828
3861
  ```ts
3829
- import { Select } from "@signal9/era-ui/select";
3862
+ import * as Select from "@signal9/era-ui/select";
3830
3863
  ```
3831
3864
 
3832
3865
  Composed from sub-components — compose explicitly at the call site:
@@ -3898,7 +3931,7 @@ Enables value selection from a continuous range.
3898
3931
  ## Import
3899
3932
 
3900
3933
  ```ts
3901
- import { Slider } from "@signal9/era-ui/slider";
3934
+ import * as Slider from "@signal9/era-ui/slider";
3902
3935
  ```
3903
3936
 
3904
3937
  Composed from sub-components — compose explicitly at the call site:
@@ -3974,7 +4007,7 @@ A tabular data display with rows, headers, and cells.
3974
4007
  ## Import
3975
4008
 
3976
4009
  ```ts
3977
- import { Table } from "@signal9/era-ui/table";
4010
+ import * as Table from "@signal9/era-ui/table";
3978
4011
  ```
3979
4012
 
3980
4013
  Composed from sub-components — compose explicitly at the call site:
@@ -4092,7 +4125,7 @@ Organizes content into tabbed sections.
4092
4125
  ## Import
4093
4126
 
4094
4127
  ```ts
4095
- import { Tabs } from "@signal9/era-ui/tabs";
4128
+ import * as Tabs from "@signal9/era-ui/tabs";
4096
4129
  ```
4097
4130
 
4098
4131
  Composed from sub-components — compose explicitly at the call site:
@@ -4145,7 +4178,7 @@ Segmented time input with keyboard navigation.
4145
4178
  ## Import
4146
4179
 
4147
4180
  ```ts
4148
- import { TimeField } from "@signal9/era-ui/time-field";
4181
+ import * as TimeField from "@signal9/era-ui/time-field";
4149
4182
  ```
4150
4183
 
4151
4184
  Composed from sub-components — compose explicitly at the call site:
@@ -4199,7 +4232,7 @@ Segmented start/end time input.
4199
4232
  ## Import
4200
4233
 
4201
4234
  ```ts
4202
- import { TimeRangeField } from "@signal9/era-ui/time-range-field";
4235
+ import * as TimeRangeField from "@signal9/era-ui/time-range-field";
4203
4236
  ```
4204
4237
 
4205
4238
  Composed from sub-components — compose explicitly at the call site:
@@ -4254,7 +4287,7 @@ A set of toggle buttons with single or multiple selection.
4254
4287
  ## Import
4255
4288
 
4256
4289
  ```ts
4257
- import { ToggleGroup } from "@signal9/era-ui/toggle-group";
4290
+ import * as ToggleGroup from "@signal9/era-ui/toggle-group";
4258
4291
  ```
4259
4292
 
4260
4293
  Composed from sub-components — compose explicitly at the call site:
@@ -4289,7 +4322,7 @@ Headless toolbar primitives re-exported from bits-ui.
4289
4322
  ## Import
4290
4323
 
4291
4324
  ```ts
4292
- import { Toolbar } from "@signal9/era-ui/toolbar";
4325
+ import * as Toolbar from "@signal9/era-ui/toolbar";
4293
4326
  ```
4294
4327
 
4295
4328
  Composed from sub-components — compose explicitly at the call site:
@@ -4383,7 +4416,7 @@ Supplementary info on hover or focus.
4383
4416
  ## Import
4384
4417
 
4385
4418
  ```ts
4386
- import { Tooltip } from "@signal9/era-ui/tooltip";
4419
+ import * as Tooltip from "@signal9/era-ui/tooltip";
4387
4420
  ```
4388
4421
 
4389
4422
  Composed from sub-components — compose explicitly at the call site:
@@ -101,6 +101,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
101
101
  - `era-ink-center` — on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
102
102
  - `era-token-ink` — the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there.
103
103
  - `era-label-ink` — the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip).
104
+ - `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
104
105
  - `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
105
106
  - `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
106
107
  - `h-icon · h-pill · h-chip · h-control · h-bar` — the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
@@ -125,6 +126,5 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
125
126
  - `ease-base` — Motion — bare transition utilities default to the motion axis, so
126
127
  - `bg-divider · text-divider · border-divider · bg-divider-faded · text-divider-faded · border-divider-faded · bg-background · text-background · … (66 in all)` — Surface divider colors: border-divider, bg-divider-faded, …
127
128
  - `bg-fill · text-fill · border-fill · bg-link · text-link · border-link · bg-primary · text-primary · … (33 in all)` — The standing pill fill — --era-fill, the latched counterpart of the
128
- - `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
129
129
 
130
130
  Full reference (what each emits, when to use it): `{{ORIGIN}}/utilities.md`. Machine-readable list: `{{ORIGIN}}/utilities.json`.