@signal9/era-ui 26.1.1 → 28.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 (34) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/docs/consumer-import.d.ts +28 -0
  3. package/dist/docs/consumer-import.js +28 -0
  4. package/dist/era-ui.css +1 -1
  5. package/dist/generated-docs/accordion.md +1 -1
  6. package/dist/generated-docs/alert-dialog.md +11 -1
  7. package/dist/generated-docs/combobox.md +1 -1
  8. package/dist/generated-docs/context-menu.md +13 -3
  9. package/dist/generated-docs/date-picker.md +1 -1
  10. package/dist/generated-docs/date-range-picker.md +1 -1
  11. package/dist/generated-docs/dialog.md +11 -1
  12. package/dist/generated-docs/dropdown-menu.md +14 -4
  13. package/dist/generated-docs/link-preview.md +11 -1
  14. package/dist/generated-docs/llms-full.txt +246 -25
  15. package/dist/generated-docs/llms.txt +2 -2
  16. package/dist/generated-docs/manifest.json +72 -18
  17. package/dist/generated-docs/menubar.md +4 -3
  18. package/dist/generated-docs/meter.md +6 -0
  19. package/dist/generated-docs/nav.md +61 -0
  20. package/dist/generated-docs/select.md +2 -2
  21. package/dist/generated-docs/step.md +2 -2
  22. package/dist/generated-docs/timeline.md +32 -0
  23. package/dist/generated-docs/todo.md +3 -0
  24. package/dist/generated-docs/toggle-group.md +1 -0
  25. package/dist/generated-docs/tooltip.md +11 -1
  26. package/dist/generated-docs/tree.md +36 -0
  27. package/dist/generated-docs/utilities.json +5 -1
  28. package/dist/generated-docs/utilities.md +3 -2
  29. package/dist/ui/nav/nav-item.svelte +39 -23
  30. package/dist/ui/nav/nav-item.svelte.d.ts +41 -25
  31. package/package.json +6 -5
  32. package/skill/SKILL.md +13 -4
  33. package/dist/docs/llms-txt.d.ts +0 -2
  34. package/dist/docs/llms-txt.js +0 -100
@@ -86,7 +86,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
86
86
  - `bg-well · text-well · border-well · bg-elevated · text-elevated · border-elevated · bg-highlight · text-highlight · … (12 in all)` — Surface fills — bg-well is the surface's own resting fill (pairs with
87
87
  - `p-gutter · px-gutter · py-gutter · gap-gutter · p-panel · px-panel · py-panel · gap-panel · … (24 in all)` — THE SPACING SCALE — one entry per token, from which Tailwind derives the
88
88
  - `p-inset-pill · px-inset-pill · py-inset-pill · gap-inset-pill · p-inset-chip · px-inset-chip · py-inset-chip · gap-inset-chip · … (12 in all)` — text-symmetric content padding — (tier − text)/2, the inset that vertically centres body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's.
89
- - `p-icon-inset-pill · px-icon-inset-pill · py-icon-inset-pill · gap-icon-inset-pill · p-icon-inset-chip · px-icon-inset-chip · py-icon-inset-chip · gap-icon-inset-chip · … (32 in all)` — the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control.
89
+ - `p-icon-inset-pill · px-icon-inset-pill · py-icon-inset-pill · gap-icon-inset-pill · p-icon-inset-chip · px-icon-inset-chip · py-icon-inset-chip · gap-icon-inset-chip · … (36 in all)` — the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control.
90
90
  - `p-glyph-icon · px-glyph-icon · py-glyph-icon · gap-glyph-icon · p-glyph-pill · px-glyph-pill · py-glyph-pill · gap-glyph-pill` — the glyph size for a tier — the INK inside the box, not the box (size-glyph-pill is the dismiss × in a pill, size-pill is the pill).
91
91
  - `bg-field · text-field · border-field · bg-field-highlight · text-field-highlight · border-field-highlight` — the recessed field fill — bg-field is a text input's resting well, bg-field-highlight its focused/hovered face.
92
92
  - `ease-base` — Motion — bare transition utilities default to the motion axis, so
@@ -105,6 +105,14 @@ What era ui is — density, surface, corners, type, and colour as orthogonal axe
105
105
 
106
106
  <!-- end: getting-started -->
107
107
 
108
+ <!-- begin: todo -->
109
+
110
+ # Todo
111
+
112
+ An agent's plan board — a collapsible checklist whose header still shows the active item.
113
+
114
+ <!-- end: todo -->
115
+
108
116
  <!-- begin: spacing -->
109
117
 
110
118
  # Spacing
@@ -233,7 +241,7 @@ source uses it where a name exists.
233
241
  | `bg-well` `text-well` `border-well` `bg-elevated` `text-elevated` `border-elevated` `bg-highlight` `text-highlight` `border-highlight` `bg-overlay` `text-overlay` `border-overlay` | — |
234
242
  | `p-gutter` `px-gutter` `py-gutter` `gap-gutter` `p-panel` `px-panel` `py-panel` `gap-panel` `p-card` `px-card` `py-card` `gap-card` `p-content` `px-content` `py-content` `gap-content` `p-menu` `px-menu` `py-menu` `gap-menu` `p-field` `px-field` `py-field` `gap-field` | — |
235
243
  | `p-inset-pill` `px-inset-pill` `py-inset-pill` `gap-inset-pill` `p-inset-chip` `px-inset-chip` `py-inset-chip` `gap-inset-chip` `p-inset-control` `px-inset-control` `py-inset-control` `gap-inset-control` | text-symmetric content padding — (tier − text)/2, the inset that vertically centres body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's. |
236
- | `p-icon-inset-pill` `px-icon-inset-pill` `py-icon-inset-pill` `gap-icon-inset-pill` `p-icon-inset-chip` `px-icon-inset-chip` `py-icon-inset-chip` `gap-icon-inset-chip` `p-icon-inset-control` `px-icon-inset-control` `py-icon-inset-control` `gap-icon-inset-control` `p-icon-inset-bar` `px-icon-inset-bar` `py-icon-inset-bar` `gap-icon-inset-bar` `p-pill-inset-chip` `px-pill-inset-chip` `py-pill-inset-chip` `gap-pill-inset-chip` `p-pill-inset-control` `px-pill-inset-control` `py-pill-inset-control` `gap-pill-inset-control` `p-chip-inset-control` `px-chip-inset-control` `py-chip-inset-control` `gap-chip-inset-control` `p-chip-inset-bar` `px-chip-inset-bar` `py-chip-inset-bar` `gap-chip-inset-bar` | the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control. |
244
+ | `p-icon-inset-pill` `px-icon-inset-pill` `py-icon-inset-pill` `gap-icon-inset-pill` `p-icon-inset-chip` `px-icon-inset-chip` `py-icon-inset-chip` `gap-icon-inset-chip` `p-icon-inset-control` `px-icon-inset-control` `py-icon-inset-control` `gap-icon-inset-control` `p-icon-inset-bar` `px-icon-inset-bar` `py-icon-inset-bar` `gap-icon-inset-bar` `p-pill-inset-chip` `px-pill-inset-chip` `py-pill-inset-chip` `gap-pill-inset-chip` `p-pill-inset-control` `px-pill-inset-control` `py-pill-inset-control` `gap-pill-inset-control` `p-pill-inset-bar` `px-pill-inset-bar` `py-pill-inset-bar` `gap-pill-inset-bar` `p-chip-inset-control` `px-chip-inset-control` `py-chip-inset-control` `gap-chip-inset-control` `p-chip-inset-bar` `px-chip-inset-bar` `py-chip-inset-bar` `gap-chip-inset-bar` | the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control. |
237
245
  | `p-glyph-icon` `px-glyph-icon` `py-glyph-icon` `gap-glyph-icon` `p-glyph-pill` `px-glyph-pill` `py-glyph-pill` `gap-glyph-pill` | the glyph size for a tier — the INK inside the box, not the box (size-glyph-pill is the dismiss × in a pill, size-pill is the pill). |
238
246
  | `bg-field` `text-field` `border-field` `bg-field-highlight` `text-field-highlight` `border-field-highlight` | the recessed field fill — bg-field is a text input's resting well, bg-field-highlight its focused/hovered face. |
239
247
  | `ease-base` | — |
@@ -1107,7 +1115,7 @@ Declared in `index.css`.
1107
1115
  }
1108
1116
  ```
1109
1117
 
1110
- ## p-icon-inset-pill · px-icon-inset-pill · py-icon-inset-pill · gap-icon-inset-pill · p-icon-inset-chip · px-icon-inset-chip · py-icon-inset-chip · gap-icon-inset-chip · … (32 in all)
1118
+ ## p-icon-inset-pill · px-icon-inset-pill · py-icon-inset-pill · gap-icon-inset-pill · p-icon-inset-chip · px-icon-inset-chip · py-icon-inset-chip · gap-icon-inset-chip · … (36 in all)
1111
1119
 
1112
1120
  **Use it for:** the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control.
1113
1121
 
@@ -1121,6 +1129,7 @@ Declared in `index.css`.
1121
1129
  --spacing-icon-inset-bar: var(--era-icon-inset-bar);
1122
1130
  --spacing-pill-inset-chip: var(--era-pill-inset-chip);
1123
1131
  --spacing-pill-inset-control: var(--era-pill-inset-control);
1132
+ --spacing-pill-inset-bar: var(--era-pill-inset-bar);
1124
1133
  --spacing-chip-inset-control: var(--era-chip-inset-control);
1125
1134
  --spacing-chip-inset-bar: var(--era-chip-inset-bar);
1126
1135
  }
@@ -1491,6 +1500,72 @@ the compact pairing (pills/fields in an sm or md bar). |
1491
1500
 
1492
1501
  <!-- end: bar -->
1493
1502
 
1503
+ <!-- begin: nav -->
1504
+
1505
+ # Nav
1506
+
1507
+ A navigation landmark and its items — the current one announces itself, and that announcement is what paints it.
1508
+
1509
+ ## Import
1510
+
1511
+ ```ts
1512
+ import * as Nav from "@signal9/era-ui/nav";
1513
+ ```
1514
+
1515
+ Composed from sub-components — compose explicitly at the call site:
1516
+
1517
+ - `Nav.Bar`
1518
+ - `Nav.Item`
1519
+
1520
+ ## Nav.Bar
1521
+
1522
+ Inherits all props from `HTMLAttributes<HTMLElement>`.
1523
+
1524
+ | Prop | Type | Default | Notes |
1525
+ |------|------|---------|-------|
1526
+ | `ref?` | `HTMLElement \| null` | `null` | bindable |
1527
+ | `size?` | `'chip' \| 'control' \| 'bar'` | `'bar'` | Height tier, exactly as Bar's — the geometry is Bar's, not a second copy. |
1528
+ | `content?` | `'tier' \| 'pill'` | `'tier'` | Tier of the items inside, so the wall stays concentric to them. |
1529
+ | `divider?` | `boolean` | `false` | Draw Bar's flush cap-a-panel rule beneath the bar. Off by default,
1530
+ because a nav that sits in a page already has whatever separation the
1531
+ layout gives it — and a link-variant nav in particular reads as text,
1532
+ where an unasked-for rule is chrome. Turn it on rather than reaching for
1533
+ a Separator underneath, so the line is the bar's own and stays with it. |
1534
+ | `label?` | `string` | `'Main'` | The accessible name for this landmark. A page may hold several
1535
+ navigations (primary, breadcrumb, pagination, footer) and a screen
1536
+ reader lists them all by name — unnamed, they read as "navigation",
1537
+ "navigation", "navigation". Defaults to "Main" rather than nothing so
1538
+ the common case is named without anyone having to know this. |
1539
+ | `children?` | `Snippet` | — | — |
1540
+
1541
+ ## Nav.Item
1542
+
1543
+ Inherits all props from `HTMLAnchorAttributes`.
1544
+
1545
+ | Prop | Type | Default | Notes |
1546
+ |------|------|---------|-------|
1547
+ | `ref?` | `HTMLAnchorElement \| null` | `null` | bindable |
1548
+ | `href` | `string` | — | — |
1549
+ | `variant?` | `'filled' \| 'link'` | `'filled'` | `filled` (default) is a control on a rung — a bar of buttons. `link`
1550
+ drops the chrome entirely and renders running text, for a primary nav
1551
+ that should read as links rather than a row of raised keycaps. Existing
1552
+ bars are byte-identical. |
1553
+ | `current?` | `boolean` | `false` | Whether this item points at the page you are on.
1554
+ There is deliberately no `active` prop beside this one. `active` would
1555
+ be a second source of truth for one fact, and the two drift the moment
1556
+ a route changes and someone updates the styling flag but not the
1557
+ announcement — leaving a tab that LOOKS current to sighted users and
1558
+ announces nothing to a screen reader, or the reverse. This sets
1559
+ `aria-current="page"`, and the styling below keys off that attribute,
1560
+ so the look and the announcement cannot disagree: there is one fact
1561
+ and it is the accessible one. |
1562
+ | `size?` | `'control' \| 'chip' \| 'pill' \| 'icon'` | `'control'` | Tier, matching Button's rungs so an item nests in a bar the same way. |
1563
+ | `lead?` | `Snippet` | — | Icon before the label, outside it — same contract as Button's. |
1564
+ | `trail?` | `Snippet` | — | Icon after the label, outside it. |
1565
+ | `children?` | `Snippet` | — | — |
1566
+
1567
+ <!-- end: nav -->
1568
+
1494
1569
  <!-- begin: button -->
1495
1570
 
1496
1571
  # Button
@@ -1988,7 +2063,7 @@ Inherits all props from `Accordion.HeaderProps`.
1988
2063
 
1989
2064
  ## Accordion.Trigger
1990
2065
 
1991
- Inherits all props from `PartProps<Accordion.TriggerProps>`.
2066
+ Inherits all props from `OwnedPartProps<Accordion.TriggerProps>`.
1992
2067
 
1993
2068
  | Prop | Type | Default | Notes |
1994
2069
  |------|------|---------|-------|
@@ -2018,6 +2093,7 @@ import * as AlertDialog from "@signal9/era-ui/alert-dialog";
2018
2093
 
2019
2094
  Composed from sub-components — compose explicitly at the call site:
2020
2095
 
2096
+ - `AlertDialog.Root`
2021
2097
  - `AlertDialog.Trigger`
2022
2098
  - `AlertDialog.Content`
2023
2099
  - `AlertDialog.Overlay`
@@ -2026,6 +2102,15 @@ Composed from sub-components — compose explicitly at the call site:
2026
2102
  - `AlertDialog.Cancel`
2027
2103
  - `AlertDialog.Action`
2028
2104
 
2105
+ ## AlertDialog.Root
2106
+
2107
+ Inherits all props from `AlertDialog.RootProps`.
2108
+
2109
+ | Prop | Type | Default | Notes |
2110
+ |------|------|---------|-------|
2111
+ | `children?` | `Snippet` | — | — |
2112
+ | `open?` | `(forwarded)` | `false` | bindable |
2113
+
2029
2114
  ## AlertDialog.Trigger
2030
2115
 
2031
2116
  Inherits all props from `WithoutChildrenOrChild<AlertDialog.TriggerProps>`.
@@ -2038,7 +2123,7 @@ Inherits all props from `ButtonVariants`.
2038
2123
 
2039
2124
  ## AlertDialog.Content
2040
2125
 
2041
- Inherits all props from `PartProps<AlertDialog.ContentProps>`.
2126
+ Inherits all props from `OwnedPartProps<AlertDialog.ContentProps>`.
2042
2127
 
2043
2128
  | Prop | Type | Default | Notes |
2044
2129
  |------|------|---------|-------|
@@ -2335,7 +2420,7 @@ Inherits all props from `Combobox.InputProps`.
2335
2420
 
2336
2421
  ## Combobox.Trigger
2337
2422
 
2338
- Inherits all props from `PartProps<Combobox.TriggerProps>`.
2423
+ Inherits all props from `OwnedPartProps<Combobox.TriggerProps>`.
2339
2424
 
2340
2425
  | Prop | Type | Default | Notes |
2341
2426
  |------|------|---------|-------|
@@ -2552,7 +2637,7 @@ Inherits all props from `Collapsible.RootProps`.
2552
2637
 
2553
2638
  ## Step.Summary
2554
2639
 
2555
- Inherits all props from `PartProps<Collapsible.TriggerProps>`.
2640
+ Inherits all props from `OwnedPartProps<Collapsible.TriggerProps>`.
2556
2641
 
2557
2642
  | Prop | Type | Default | Notes |
2558
2643
  |------|------|---------|-------|
@@ -2560,7 +2645,7 @@ Inherits all props from `PartProps<Collapsible.TriggerProps>`.
2560
2645
 
2561
2646
  ## Step.Content
2562
2647
 
2563
- Inherits all props from `PartProps<Collapsible.ContentProps>`.
2648
+ Inherits all props from `OwnedPartProps<Collapsible.ContentProps>`.
2564
2649
 
2565
2650
  | Prop | Type | Default | Notes |
2566
2651
  |------|------|---------|-------|
@@ -2591,6 +2676,7 @@ import * as ContextMenu from "@signal9/era-ui/context-menu";
2591
2676
 
2592
2677
  Composed from sub-components — compose explicitly at the call site:
2593
2678
 
2679
+ - `ContextMenu.Root`
2594
2680
  - `ContextMenu.Trigger`
2595
2681
  - `ContextMenu.Content`
2596
2682
  - `ContextMenu.Item`
@@ -2601,6 +2687,15 @@ Composed from sub-components — compose explicitly at the call site:
2601
2687
  - `ContextMenu.SubContent`
2602
2688
  - `ContextMenu.GroupHeading`
2603
2689
 
2690
+ ## ContextMenu.Root
2691
+
2692
+ Inherits all props from `ContextMenu.RootProps`.
2693
+
2694
+ | Prop | Type | Default | Notes |
2695
+ |------|------|---------|-------|
2696
+ | `children?` | `Snippet` | — | — |
2697
+ | `open?` | `(forwarded)` | `false` | bindable |
2698
+
2604
2699
  ## ContextMenu.Trigger
2605
2700
 
2606
2701
  Inherits all props from `ContextMenu.TriggerProps`.
@@ -2611,7 +2706,7 @@ Inherits all props from `ContextMenu.TriggerProps`.
2611
2706
 
2612
2707
  ## ContextMenu.Content
2613
2708
 
2614
- Inherits all props from `PartProps<ContextMenu.ContentProps>`.
2709
+ Inherits all props from `OwnedPartProps<ContextMenu.ContentProps>`.
2615
2710
 
2616
2711
  | Prop | Type | Default | Notes |
2617
2712
  |------|------|---------|-------|
@@ -2652,7 +2747,7 @@ Inherits all props from `ContextMenu.SeparatorProps`.
2652
2747
 
2653
2748
  ## ContextMenu.SubTrigger
2654
2749
 
2655
- Inherits all props from `PartProps<ContextMenu.SubTriggerProps>`.
2750
+ Inherits all props from `OwnedPartProps<ContextMenu.SubTriggerProps>`.
2656
2751
 
2657
2752
  | Prop | Type | Default | Notes |
2658
2753
  |------|------|---------|-------|
@@ -2660,7 +2755,7 @@ Inherits all props from `PartProps<ContextMenu.SubTriggerProps>`.
2660
2755
 
2661
2756
  ## ContextMenu.SubContent
2662
2757
 
2663
- Inherits all props from `PartProps<ContextMenu.SubContentProps>`.
2758
+ Inherits all props from `OwnedPartProps<ContextMenu.SubContentProps>`.
2664
2759
 
2665
2760
  | Prop | Type | Default | Notes |
2666
2761
  |------|------|---------|-------|
@@ -2799,7 +2894,7 @@ Inherits all props from `DatePicker.SegmentProps`.
2799
2894
 
2800
2895
  ## DatePicker.Trigger
2801
2896
 
2802
- Inherits all props from `PartProps<DatePicker.TriggerProps>`.
2897
+ Inherits all props from `OwnedPartProps<DatePicker.TriggerProps>`.
2803
2898
 
2804
2899
  | Prop | Type | Default | Notes |
2805
2900
  |------|------|---------|-------|
@@ -3039,7 +3134,7 @@ Inherits all props from `DateRangePicker.SegmentProps`.
3039
3134
 
3040
3135
  ## DateRangePicker.Trigger
3041
3136
 
3042
- Inherits all props from `PartProps<DateRangePicker.TriggerProps>`.
3137
+ Inherits all props from `OwnedPartProps<DateRangePicker.TriggerProps>`.
3043
3138
 
3044
3139
  | Prop | Type | Default | Notes |
3045
3140
  |------|------|---------|-------|
@@ -3169,6 +3264,7 @@ import * as Dialog from "@signal9/era-ui/dialog";
3169
3264
 
3170
3265
  Composed from sub-components — compose explicitly at the call site:
3171
3266
 
3267
+ - `Dialog.Root`
3172
3268
  - `Dialog.Trigger`
3173
3269
  - `Dialog.Content`
3174
3270
  - `Dialog.Overlay`
@@ -3177,6 +3273,15 @@ Composed from sub-components — compose explicitly at the call site:
3177
3273
  - `Dialog.Close`
3178
3274
  - `Dialog.Header`
3179
3275
 
3276
+ ## Dialog.Root
3277
+
3278
+ Inherits all props from `Dialog.RootProps`.
3279
+
3280
+ | Prop | Type | Default | Notes |
3281
+ |------|------|---------|-------|
3282
+ | `children?` | `Snippet` | — | — |
3283
+ | `open?` | `(forwarded)` | `false` | bindable |
3284
+
3180
3285
  ## Dialog.Trigger
3181
3286
 
3182
3287
  Inherits all props from `WithoutChildrenOrChild<Dialog.TriggerProps>`.
@@ -3189,7 +3294,7 @@ Inherits all props from `ButtonVariants`.
3189
3294
 
3190
3295
  ## Dialog.Content
3191
3296
 
3192
- Inherits all props from `PartProps<Dialog.ContentProps>`.
3297
+ Inherits all props from `OwnedPartProps<Dialog.ContentProps>`.
3193
3298
 
3194
3299
  | Prop | Type | Default | Notes |
3195
3300
  |------|------|---------|-------|
@@ -3258,6 +3363,7 @@ import * as DropdownMenu from "@signal9/era-ui/dropdown-menu";
3258
3363
 
3259
3364
  Composed from sub-components — compose explicitly at the call site:
3260
3365
 
3366
+ - `DropdownMenu.Root`
3261
3367
  - `DropdownMenu.Trigger`
3262
3368
  - `DropdownMenu.Content`
3263
3369
  - `DropdownMenu.Item`
@@ -3268,9 +3374,18 @@ Composed from sub-components — compose explicitly at the call site:
3268
3374
  - `DropdownMenu.SubContent`
3269
3375
  - `DropdownMenu.GroupHeading`
3270
3376
 
3377
+ ## DropdownMenu.Root
3378
+
3379
+ Inherits all props from `DropdownMenu.RootProps`.
3380
+
3381
+ | Prop | Type | Default | Notes |
3382
+ |------|------|---------|-------|
3383
+ | `children?` | `Snippet` | — | — |
3384
+ | `open?` | `(forwarded)` | `false` | bindable |
3385
+
3271
3386
  ## DropdownMenu.Trigger
3272
3387
 
3273
- Inherits all props from `PartProps<DropdownMenu.TriggerProps>`.
3388
+ Inherits all props from `OwnedPartProps<DropdownMenu.TriggerProps>`.
3274
3389
 
3275
3390
  | Prop | Type | Default | Notes |
3276
3391
  |------|------|---------|-------|
@@ -3278,7 +3393,7 @@ Inherits all props from `PartProps<DropdownMenu.TriggerProps>`.
3278
3393
 
3279
3394
  ## DropdownMenu.Content
3280
3395
 
3281
- Inherits all props from `PartProps<DropdownMenu.ContentProps>`.
3396
+ Inherits all props from `OwnedPartProps<DropdownMenu.ContentProps>`.
3282
3397
 
3283
3398
  | Prop | Type | Default | Notes |
3284
3399
  |------|------|---------|-------|
@@ -3319,7 +3434,7 @@ Inherits all props from `DropdownMenu.SeparatorProps`.
3319
3434
 
3320
3435
  ## DropdownMenu.SubTrigger
3321
3436
 
3322
- Inherits all props from `PartProps<DropdownMenu.SubTriggerProps>`.
3437
+ Inherits all props from `OwnedPartProps<DropdownMenu.SubTriggerProps>`.
3323
3438
 
3324
3439
  | Prop | Type | Default | Notes |
3325
3440
  |------|------|---------|-------|
@@ -3327,7 +3442,7 @@ Inherits all props from `PartProps<DropdownMenu.SubTriggerProps>`.
3327
3442
 
3328
3443
  ## DropdownMenu.SubContent
3329
3444
 
3330
- Inherits all props from `PartProps<DropdownMenu.SubContentProps>`.
3445
+ Inherits all props from `OwnedPartProps<DropdownMenu.SubContentProps>`.
3331
3446
 
3332
3447
  | Prop | Type | Default | Notes |
3333
3448
  |------|------|---------|-------|
@@ -3478,9 +3593,19 @@ import * as LinkPreview from "@signal9/era-ui/link-preview";
3478
3593
 
3479
3594
  Composed from sub-components — compose explicitly at the call site:
3480
3595
 
3596
+ - `LinkPreview.Root`
3481
3597
  - `LinkPreview.Trigger`
3482
3598
  - `LinkPreview.Content`
3483
3599
 
3600
+ ## LinkPreview.Root
3601
+
3602
+ Inherits all props from `LinkPreview.RootProps`.
3603
+
3604
+ | Prop | Type | Default | Notes |
3605
+ |------|------|---------|-------|
3606
+ | `children?` | `Snippet` | — | — |
3607
+ | `open?` | `(forwarded)` | `false` | bindable |
3608
+
3484
3609
  ## LinkPreview.Trigger
3485
3610
 
3486
3611
  Inherits all props from `PartProps<LinkPreview.TriggerProps>`.
@@ -3491,7 +3616,7 @@ Inherits all props from `PartProps<LinkPreview.TriggerProps>`.
3491
3616
 
3492
3617
  ## LinkPreview.Content
3493
3618
 
3494
- Inherits all props from `PartProps<LinkPreview.ContentProps>`.
3619
+ Inherits all props from `OwnedPartProps<LinkPreview.ContentProps>`.
3495
3620
 
3496
3621
  | Prop | Type | Default | Notes |
3497
3622
  |------|------|---------|-------|
@@ -3598,6 +3723,7 @@ Inherits all props from `Menubar.RootProps`.
3598
3723
  | Prop | Type | Default | Notes |
3599
3724
  |------|------|---------|-------|
3600
3725
  | `ref?` | `(forwarded)` | `null` | bindable |
3726
+ | `value?` | `(forwarded)` | `''` | bindable |
3601
3727
 
3602
3728
  ## Menubar.Trigger
3603
3729
 
@@ -3609,7 +3735,7 @@ Inherits all props from `PartProps<Menubar.TriggerProps>`.
3609
3735
 
3610
3736
  ## Menubar.Content
3611
3737
 
3612
- Inherits all props from `PartProps<Menubar.ContentProps>`.
3738
+ Inherits all props from `OwnedPartProps<Menubar.ContentProps>`.
3613
3739
 
3614
3740
  | Prop | Type | Default | Notes |
3615
3741
  |------|------|---------|-------|
@@ -3650,7 +3776,7 @@ Inherits all props from `Menubar.SeparatorProps`.
3650
3776
 
3651
3777
  ## Menubar.SubTrigger
3652
3778
 
3653
- Inherits all props from `PartProps<Menubar.SubTriggerProps>`.
3779
+ Inherits all props from `OwnedPartProps<Menubar.SubTriggerProps>`.
3654
3780
 
3655
3781
  | Prop | Type | Default | Notes |
3656
3782
  |------|------|---------|-------|
@@ -3658,7 +3784,7 @@ Inherits all props from `PartProps<Menubar.SubTriggerProps>`.
3658
3784
 
3659
3785
  ## Menubar.SubContent
3660
3786
 
3661
- Inherits all props from `PartProps<Menubar.SubContentProps>`.
3787
+ Inherits all props from `OwnedPartProps<Menubar.SubContentProps>`.
3662
3788
 
3663
3789
  | Prop | Type | Default | Notes |
3664
3790
  |------|------|---------|-------|
@@ -3692,6 +3818,12 @@ Inherits all props from `Meter.RootProps`.
3692
3818
 
3693
3819
  | Prop | Type | Default | Notes |
3694
3820
  |------|------|---------|-------|
3821
+ | `tone?` | `'default' \| 'accent' \| 'destructive' \| 'success' \| 'warning'` | `'default'` | The band this reading falls in. Tone is the fill's colour only — the
3822
+ track stays neutral, because the well belongs to the control and the
3823
+ fill belongs to the value.
3824
+ Tone carries no semantics on its own: a meter in the destructive band
3825
+ still needs an accessible label saying what has run out. Pair it with
3826
+ `aria-label` / a visible label, never rely on the hue alone. |
3695
3827
  | `ref?` | `(forwarded)` | `null` | bindable |
3696
3828
 
3697
3829
  <!-- end: meter -->
@@ -4018,7 +4150,7 @@ Composed from sub-components — compose explicitly at the call site:
4018
4150
 
4019
4151
  ## Select.Trigger
4020
4152
 
4021
- Inherits all props from `PartProps<Select.TriggerProps>`.
4153
+ Inherits all props from `OwnedPartProps<Select.TriggerProps>`.
4022
4154
 
4023
4155
  | Prop | Type | Default | Notes |
4024
4156
  |------|------|---------|-------|
@@ -4035,7 +4167,7 @@ Inherits all props from `WithoutChildrenOrChild<Select.ValueProps>`.
4035
4167
 
4036
4168
  ## Select.Content
4037
4169
 
4038
- Inherits all props from `PartProps<Select.ContentProps>`.
4170
+ Inherits all props from `OwnedPartProps<Select.ContentProps>`.
4039
4171
 
4040
4172
  | Prop | Type | Default | Notes |
4041
4173
  |------|------|---------|-------|
@@ -4446,6 +4578,7 @@ Inherits all props from `PartProps<ToggleGroup.RootProps>`.
4446
4578
 
4447
4579
  | Prop | Type | Default | Notes |
4448
4580
  |------|------|---------|-------|
4581
+ | `variant?` | `ToggleGroupVariant` | `'plain'` | — |
4449
4582
  | `ref?` | `(forwarded)` | `null` | bindable |
4450
4583
 
4451
4584
  ## ToggleGroup.Item
@@ -4458,6 +4591,84 @@ Inherits all props from `ToggleGroup.ItemProps`.
4458
4591
 
4459
4592
  <!-- end: toggle-group -->
4460
4593
 
4594
+ <!-- begin: timeline -->
4595
+
4596
+ # Timeline
4597
+
4598
+ A staged progress bar where each segment's width is how long that step took.
4599
+
4600
+ ## Import
4601
+
4602
+ ```ts
4603
+ import * as Timeline from "@signal9/era-ui/timeline";
4604
+ ```
4605
+
4606
+ Composed from sub-components — compose explicitly at the call site:
4607
+
4608
+ - `Timeline.Root`
4609
+ - `Timeline.Step`
4610
+
4611
+ ## Timeline.Root
4612
+
4613
+ | Prop | Type | Default | Notes |
4614
+ |------|------|---------|-------|
4615
+ | `steps?` | `TimelineStep[]` | `[]` | — |
4616
+ | `tick?` | `number` | `100` | Live counter interval in ms. 0 stops the clock (the counter freezes). |
4617
+ | `showClock?` | `boolean` | `true` | — |
4618
+ | `children?` | `Snippet` | — | — |
4619
+ | `class?` | `string` | — | — |
4620
+
4621
+ ## Timeline.Step
4622
+
4623
+ | Prop | Type | Default | Notes |
4624
+ |------|------|---------|-------|
4625
+ | `step` | `TimelineStep` | — | — |
4626
+ | `showClock?` | `boolean` | `true` | — |
4627
+ | `class?` | `string` | — | — |
4628
+
4629
+ <!-- end: timeline -->
4630
+
4631
+ <!-- begin: tree -->
4632
+
4633
+ # Tree
4634
+
4635
+ A disclosure hierarchy with real tree semantics — roving focus, and selection separate from expansion.
4636
+
4637
+ ## Import
4638
+
4639
+ ```ts
4640
+ import * as Tree from "@signal9/era-ui/tree";
4641
+ ```
4642
+
4643
+ Composed from sub-components — compose explicitly at the call site:
4644
+
4645
+ - `Tree.Root`
4646
+ - `Tree.Item`
4647
+
4648
+ ## Tree.Root
4649
+
4650
+ Inherits all props from `HTMLAttributes<HTMLUListElement>`.
4651
+
4652
+ | Prop | Type | Default | Notes |
4653
+ |------|------|---------|-------|
4654
+ | `ref?` | `HTMLUListElement \| null` | `null` | bindable |
4655
+ | `nodes?` | `TreeNode[]` | `[]` | — |
4656
+ | `expanded?` | `string[]` | `[]` | bindable — Controlled: bind it, or drive it from the URL. |
4657
+ | `selected?` | `string \| null` | `null` | bindable |
4658
+ | `label?` | `string` | `'Tree'` | Accessible name for the tree landmark. |
4659
+ | `item?` | `Snippet<[FlatNode]>` | — | Render your own row. Omitted, the default row is used. |
4660
+ | `trailing?` | `Snippet<[FlatNode]>` | — | End-of-row slot on the default row — a count badge, a status dot. |
4661
+
4662
+ ## Tree.Item
4663
+
4664
+ | Prop | Type | Default | Notes |
4665
+ |------|------|---------|-------|
4666
+ | `item` | `FlatNode` | — | — |
4667
+ | `trailing?` | `Snippet<[FlatNode]>` | — | Rendered at the end of the row — a count badge, a status dot. |
4668
+ | `class?` | `string` | — | — |
4669
+
4670
+ <!-- end: tree -->
4671
+
4461
4672
  <!-- begin: toolbar -->
4462
4673
 
4463
4674
  # Toolbar
@@ -4566,9 +4777,19 @@ import * as Tooltip from "@signal9/era-ui/tooltip";
4566
4777
 
4567
4778
  Composed from sub-components — compose explicitly at the call site:
4568
4779
 
4780
+ - `Tooltip.Root`
4569
4781
  - `Tooltip.Trigger`
4570
4782
  - `Tooltip.Content`
4571
4783
 
4784
+ ## Tooltip.Root
4785
+
4786
+ Inherits all props from `Tooltip.RootProps`.
4787
+
4788
+ | Prop | Type | Default | Notes |
4789
+ |------|------|---------|-------|
4790
+ | `children?` | `Snippet` | — | — |
4791
+ | `open?` | `(forwarded)` | `false` | bindable |
4792
+
4572
4793
  ## Tooltip.Trigger
4573
4794
 
4574
4795
  Inherits all props from `Tooltip.TriggerProps`.
@@ -4579,7 +4800,7 @@ Inherits all props from `Tooltip.TriggerProps`.
4579
4800
 
4580
4801
  ## Tooltip.Content
4581
4802
 
4582
- Inherits all props from `PartProps<Tooltip.ContentProps>`.
4803
+ Inherits all props from `OwnedPartProps<Tooltip.ContentProps>`.
4583
4804
 
4584
4805
  | Prop | Type | Default | Notes |
4585
4806
  |------|------|---------|-------|
@@ -86,7 +86,7 @@ Full concatenated reference: `{{ORIGIN}}/llms-full.txt`.
86
86
 
87
87
  ## Components
88
88
 
89
- getting-started, spacing, surfaces, measurements, text, utilities, draggable, os, changelog, llm-shell, notes, aspect-ratio, badge, avatar, bar, button, button-group, pane, card, chip, code-block, copy-button, cycle, kv, separator, sheet, skeleton, switch, toggle, accordion, alert-dialog, calendar, checkbox, collapsible, combobox, command, command-bar, step, context-menu, date-field, date-picker, date-range-field, date-range-picker, dialog, dropdown-menu, file-upload, scroll-area, input, link-preview, label, logo, menu, menubar, meter, navigation-menu, mode, pagination, pin-input, popover, progress, range-calendar, radio-group, rating-group, select, slider, table, tabs, time-field, time-range-field, toggle-group, toolbar, video-player, tooltip
89
+ getting-started, todo, spacing, surfaces, measurements, text, utilities, draggable, os, changelog, llm-shell, notes, aspect-ratio, badge, avatar, bar, nav, button, button-group, pane, card, chip, code-block, copy-button, cycle, kv, separator, sheet, skeleton, switch, toggle, accordion, alert-dialog, calendar, checkbox, collapsible, combobox, command, command-bar, step, context-menu, date-field, date-picker, date-range-field, date-range-picker, dialog, dropdown-menu, file-upload, scroll-area, input, link-preview, label, logo, menu, menubar, meter, navigation-menu, mode, pagination, pin-input, popover, progress, range-calendar, radio-group, rating-group, select, slider, table, tabs, time-field, time-range-field, toggle-group, timeline, tree, toolbar, video-player, tooltip
90
90
 
91
91
  ## CSS utilities
92
92
 
@@ -124,7 +124,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
124
124
  - `bg-well · text-well · border-well · bg-elevated · text-elevated · border-elevated · bg-highlight · text-highlight · … (12 in all)` — Surface fills — bg-well is the surface's own resting fill (pairs with
125
125
  - `p-gutter · px-gutter · py-gutter · gap-gutter · p-panel · px-panel · py-panel · gap-panel · … (24 in all)` — THE SPACING SCALE — one entry per token, from which Tailwind derives the
126
126
  - `p-inset-pill · px-inset-pill · py-inset-pill · gap-inset-pill · p-inset-chip · px-inset-chip · py-inset-chip · gap-inset-chip · … (12 in all)` — text-symmetric content padding — (tier − text)/2, the inset that vertically centres body text in its tier; px-inset-control is a text button's side padding, p-inset-control a code block's.
127
- - `p-icon-inset-pill · px-icon-inset-pill · py-icon-inset-pill · gap-icon-inset-pill · p-icon-inset-chip · px-icon-inset-chip · py-icon-inset-chip · gap-icon-inset-chip · … (32 in all)` — the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control.
127
+ - `p-icon-inset-pill · px-icon-inset-pill · py-icon-inset-pill · gap-icon-inset-pill · p-icon-inset-chip · px-icon-inset-chip · py-icon-inset-chip · gap-icon-inset-chip · … (36 in all)` — the concentric inset for a nested pair — (h-container − h-child)/2, the gap that makes a child control sit evenly inside its container, and the radius step that keeps their corners concentric. Named for the pair it joins: gap-icon-inset-control seats an icon in a control.
128
128
  - `p-glyph-icon · px-glyph-icon · py-glyph-icon · gap-glyph-icon · p-glyph-pill · px-glyph-pill · py-glyph-pill · gap-glyph-pill` — the glyph size for a tier — the INK inside the box, not the box (size-glyph-pill is the dismiss × in a pill, size-pill is the pill).
129
129
  - `bg-field · text-field · border-field · bg-field-highlight · text-field-highlight · border-field-highlight` — the recessed field fill — bg-field is a text input's resting well, bg-field-highlight its focused/hovered face.
130
130
  - `ease-base` — Motion — bare transition utilities default to the motion axis, so