@sableui/react 0.15.0 → 0.17.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 (145) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/bin/sable-lint.mjs +5 -1
  3. package/dist/{_contract-CkqXDVww.d.ts → _contract-CDa9-NdB.d.ts} +47 -1
  4. package/dist/blocks/approval-block.js +30 -48
  5. package/dist/blocks/approval-block.meta.js +7 -8
  6. package/dist/blocks/index.d.ts +1 -1
  7. package/dist/blocks/wallet-block.js +2 -2
  8. package/dist/components/app-shell/app-shell-frame.js +16 -0
  9. package/dist/components/app-shell/app-shell-main.js +12 -0
  10. package/dist/components/app-shell/app-shell.js +28 -4
  11. package/dist/components/app-shell/app-shell.meta.js +88 -4
  12. package/dist/components/area-chart/area-chart.meta.js +6 -1
  13. package/dist/components/attachment/attachment.meta.js +2 -1
  14. package/dist/components/attachment/attachment.variants.js +1 -1
  15. package/dist/components/badge/badge.meta.js +8 -1
  16. package/dist/components/badge/badge.variants.js +7 -7
  17. package/dist/components/banner/banner.meta.js +6 -1
  18. package/dist/components/banner/banner.variants.js +5 -5
  19. package/dist/components/bar-chart/bar-chart.meta.js +6 -1
  20. package/dist/components/caret-menu/caret-menu.js +5 -6
  21. package/dist/components/chat-composer/chat-composer.meta.js +2 -2
  22. package/dist/components/chat-composer/chat-composer.variants.js +1 -1
  23. package/dist/components/color-field/color-field.js +6 -8
  24. package/dist/components/combobox/combobox.js +27 -5
  25. package/dist/components/combobox/combobox.meta.js +10 -2
  26. package/dist/components/command-menu/command-menu.js +14 -3
  27. package/dist/components/command-menu/command-menu.meta.js +9 -1
  28. package/dist/components/date-picker/date-picker.meta.js +2 -2
  29. package/dist/components/feedback/feedback.js +1 -1
  30. package/dist/components/feedback/feedback.meta.js +2 -1
  31. package/dist/components/gradient-art/gradient-art.js +8 -5
  32. package/dist/components/gradient-art/gradient-art.meta.js +35 -2
  33. package/dist/components/input/input.meta.js +11 -3
  34. package/dist/components/input-group/input-group.js +1 -1
  35. package/dist/components/input-group/input-group.meta.js +1 -1
  36. package/dist/components/line-chart/line-chart.meta.js +6 -1
  37. package/dist/components/menu/menu.js +1 -1
  38. package/dist/components/meter/meter.js +53 -7
  39. package/dist/components/meter/meter.meta.js +51 -4
  40. package/dist/components/meter/meter.variants.js +43 -7
  41. package/dist/components/note/note.meta.js +5 -1
  42. package/dist/components/note/note.variants.js +4 -4
  43. package/dist/components/number-field/number-field.meta.js +2 -2
  44. package/dist/components/otp-field/otp-field.meta.js +2 -2
  45. package/dist/components/panel-group/panel-group.js +5 -8
  46. package/dist/components/pie-chart/pie-chart.meta.js +6 -1
  47. package/dist/components/radar-chart/radar-chart.meta.js +6 -1
  48. package/dist/components/radial-chart/radial-chart.meta.js +6 -1
  49. package/dist/components/search-input/search-input.meta.js +11 -3
  50. package/dist/components/section-rail/index.js +7 -0
  51. package/dist/components/section-rail/section-rail.js +153 -0
  52. package/dist/components/section-rail/section-rail.meta.js +189 -0
  53. package/dist/components/segmented-bar/segmented-bar.meta.js +8 -1
  54. package/dist/components/segmented-bar/segmented-bar.variants.js +7 -7
  55. package/dist/components/select/select.js +1 -1
  56. package/dist/components/select/select.meta.js +2 -2
  57. package/dist/components/sheet/sheet.js +5 -4
  58. package/dist/components/sidebar/sidebar.js +16 -1
  59. package/dist/components/sidebar/sidebar.meta.js +7 -2
  60. package/dist/components/sparkline/sparkline.meta.js +8 -1
  61. package/dist/components/status-dot/status-dot.meta.js +8 -1
  62. package/dist/components/status-dot/status-dot.variants.js +7 -7
  63. package/dist/components/stepper/stepper.meta.js +2 -1
  64. package/dist/components/stepper/stepper.variants.js +1 -1
  65. package/dist/components/table/table.meta.js +4 -4
  66. package/dist/components/textarea/textarea.js +5 -0
  67. package/dist/components/textarea/textarea.meta.js +3 -3
  68. package/dist/file-hashes.json +99 -92
  69. package/dist/foundations/accessibility.js +5 -0
  70. package/dist/index.d.ts +227 -25
  71. package/dist/index.js +12 -1
  72. package/dist/lib/chart/types.js +8 -8
  73. package/dist/lib/chart/use-arrival.js +5 -4
  74. package/dist/lib/field-shell.js +1 -1
  75. package/dist/lib/highlight-glide.js +6 -6
  76. package/dist/lib/scrub-gesture.js +6 -6
  77. package/dist/lib/taxonomy.js +1 -0
  78. package/dist/lib/use-active-section.js +59 -0
  79. package/dist/lib/use-caret-trigger.js +11 -18
  80. package/dist/lib/use-match-highlight.js +69 -0
  81. package/dist/lib/use-smooth-wheel.js +10 -8
  82. package/dist/presets/index.d.ts +13 -2
  83. package/dist/presets/index.js +17 -1
  84. package/dist/styles.css +100 -0
  85. package/dist/{theme-provider-CdSicAad.d.ts → theme-provider-BydfM5Z0.d.ts} +1 -1
  86. package/dist/themes/_contract.js +14 -0
  87. package/dist/themes/atelier/atelier.css +18 -0
  88. package/dist/themes/atelier/index.d.ts +1 -1
  89. package/dist/themes/contrast.js +48 -1
  90. package/dist/themes/ember/ember.css +18 -0
  91. package/dist/themes/ember/index.d.ts +1 -1
  92. package/dist/themes/index.d.ts +2 -2
  93. package/dist/themes/meridian/index.d.ts +1 -1
  94. package/dist/themes/meridian/meridian.css +18 -0
  95. package/dist/themes/poppy/index.d.ts +1 -1
  96. package/dist/themes/poppy/poppy.css +18 -0
  97. package/dist/themes/prism/index.d.ts +1 -1
  98. package/dist/themes/prism/prism.css +18 -0
  99. package/dist/themes/sable/index.d.ts +1 -1
  100. package/dist/themes/sable/sable.css +18 -0
  101. package/dist/themes/verdant/index.d.ts +1 -1
  102. package/dist/themes/verdant/verdant.css +18 -0
  103. package/llms/blocks/approval-block.md +40 -55
  104. package/llms/blocks/wallet-block.md +5 -4
  105. package/llms/components/app-shell.md +72 -3
  106. package/llms/components/area-chart.md +1 -1
  107. package/llms/components/attachment.md +1 -1
  108. package/llms/components/badge.md +1 -1
  109. package/llms/components/banner.md +1 -1
  110. package/llms/components/bar-chart.md +1 -1
  111. package/llms/components/chat-composer.md +1 -1
  112. package/llms/components/combobox.md +2 -1
  113. package/llms/components/command-menu.md +3 -2
  114. package/llms/components/date-picker.md +1 -1
  115. package/llms/components/feedback.md +1 -1
  116. package/llms/components/gradient-art.md +28 -1
  117. package/llms/components/input-group.md +1 -1
  118. package/llms/components/input.md +4 -2
  119. package/llms/components/line-chart.md +1 -1
  120. package/llms/components/meter.md +33 -4
  121. package/llms/components/note.md +1 -1
  122. package/llms/components/number-field.md +1 -1
  123. package/llms/components/otp-field.md +1 -1
  124. package/llms/components/pie-chart.md +1 -1
  125. package/llms/components/radar-chart.md +1 -1
  126. package/llms/components/radial-chart.md +1 -1
  127. package/llms/components/search-input.md +20 -2
  128. package/llms/components/section-rail.md +101 -0
  129. package/llms/components/segmented-bar.md +1 -1
  130. package/llms/components/select.md +1 -1
  131. package/llms/components/sidebar.md +3 -2
  132. package/llms/components/sparkline.md +1 -1
  133. package/llms/components/status-dot.md +1 -1
  134. package/llms/components/stepper.md +1 -1
  135. package/llms/components/table.md +2 -2
  136. package/llms/components/textarea.md +2 -2
  137. package/llms/foundations/accessibility.md +1 -0
  138. package/llms/reference/token-intent.md +22 -2
  139. package/llms/reference/utilities.md +5 -2
  140. package/llms-full.txt +367 -105
  141. package/llms.txt +6 -5
  142. package/package.json +1 -1
  143. package/registry.json +609 -67
  144. package/scripts/lint-rules.mjs +6 -3
  145. package/targets/ios.json +9 -0
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import { C as ComponentMeta } from './meta-DX5r5wQL.js';
3
3
  export { A as AnatomyMeta, a as BestPracticeMeta, E as ExampleMeta, M as MotionMeta, b as MotionSlot, c as PropMeta, R as RelatedMeta, S as SubcomponentMeta, U as UsageMeta } from './meta-DX5r5wQL.js';
4
- import { T as ThemeManifest, a as ThemeMode$1 } from './_contract-CkqXDVww.js';
5
- export { A as ART_TOKENS, D as DENSITY_TOKENS, b as DensityToken, M as MOTION_TOKENS, c as MotionToken, P as PALETTE_TOKENS, R as RADIUS_TOKENS, d as RHYTHM_TOKENS, e as RadiusToken, f as RhythmToken, S as SEMANTIC_TOKENS, g as SemanticToken, h as TYPE_OVERLINE_TOKENS, i as TYPE_REFINEMENT_TOKENS, j as TYPE_SCALE_TOKENS, k as TYPE_UI_TOKENS, l as TypeOverlineToken, m as TypeRefinementToken, n as TypeScaleToken, o as TypeUiToken, W as WORKSPACE_SURFACE_TOKENS, p as WorkspaceSurfaceToken } from './_contract-CkqXDVww.js';
6
- import { T as ThemeId } from './theme-provider-CdSicAad.js';
7
- export { D as DEFAULT_THEME_ID, S as SABLE_COLOR_STORAGE_KEY, a as SABLE_THEME_ATTRIBUTE, b as SABLE_THEME_STORAGE_KEY, c as SableColorMode, d as SableThemeContextValue, e as SableThemePreference, f as SableThemeProvider, g as SableThemeProviderProps, h as applySableColorMode, i as applySableTheme, k as defaultThemeId, m as getThemeManifest, o as isThemeId, t as themeIds, p as themeManifestById, q as themeManifests, u as useSableTheme } from './theme-provider-CdSicAad.js';
4
+ import { T as ThemeManifest, a as ThemeMode$1 } from './_contract-CDa9-NdB.js';
5
+ export { A as APP_SHELL_TOKENS, b as ART_TOKENS, D as DENSITY_TOKENS, c as DensityToken, F as FIELD_TOKENS, M as MARK_TOKENS, d as MOTION_TOKENS, e as MotionToken, P as PALETTE_TOKENS, R as RADIUS_TOKENS, f as RHYTHM_TOKENS, g as RadiusToken, h as RhythmToken, S as SEMANTIC_TOKENS, i as SemanticToken, j as TYPE_OVERLINE_TOKENS, k as TYPE_REFINEMENT_TOKENS, l as TYPE_SCALE_TOKENS, m as TYPE_UI_TOKENS, n as TypeOverlineToken, o as TypeRefinementToken, p as TypeScaleToken, q as TypeUiToken, W as WORKSPACE_SURFACE_TOKENS, r as WorkspaceSurfaceToken } from './_contract-CDa9-NdB.js';
6
+ import { T as ThemeId } from './theme-provider-BydfM5Z0.js';
7
+ export { D as DEFAULT_THEME_ID, S as SABLE_COLOR_STORAGE_KEY, a as SABLE_THEME_ATTRIBUTE, b as SABLE_THEME_STORAGE_KEY, c as SableColorMode, d as SableThemeContextValue, e as SableThemePreference, f as SableThemeProvider, g as SableThemeProviderProps, h as applySableColorMode, i as applySableTheme, k as defaultThemeId, m as getThemeManifest, o as isThemeId, t as themeIds, p as themeManifestById, q as themeManifests, u as useSableTheme } from './theme-provider-BydfM5Z0.js';
8
8
  export { AspectBox, AspectBoxProps, Bleed, BleedProps, Breakpoint, Center, CenterProps, Col, ColProps, Columns, ColumnsProps, Grid, GridOverlay, GridOverlayProps, GridProps, Page, PageProps, Region, RegionMax, RegionProps, Responsive, Row, RowProps, SafeArea, SafeAreaProps, Spacer, SpacerProps, SplitPane, SplitPaneProps, Stack, StackProps } from './layout/index.js';
9
9
  export { Icon, IconContextValue, IconProps, IconProvider, IconProviderProps, composeIconSets, useIconSet } from './icon/index.js';
10
10
  export { a as IconRenderProps, I as IconSet, b as IconVariant } from './registry-CyL28OzJ.js';
11
11
  import * as react from 'react';
12
- import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, FormEvent } from 'react';
12
+ import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, RefObject, FormEvent } from 'react';
13
13
  import { VariantProps } from 'class-variance-authority';
14
14
  import { useRender } from '@base-ui/react/use-render';
15
15
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -580,7 +580,7 @@ declare namespace ViewTransitionName {
580
580
  }
581
581
 
582
582
  declare const buttonVariants: (props?: ({
583
- variant?: "link" | "primary" | "secondary" | "destructive" | "outline" | "ghost" | "floating" | "field" | "on-color" | "on-color-outline" | "on-color-ghost" | null | undefined;
583
+ variant?: "link" | "primary" | "secondary" | "destructive" | "field" | "outline" | "ghost" | "floating" | "on-color" | "on-color-outline" | "on-color-ghost" | null | undefined;
584
584
  size?: "icon" | "sm" | "md" | "xs" | "cta" | "icon-sm" | "icon-xs" | null | undefined;
585
585
  } & class_variance_authority_types.ClassProp) | undefined) => string;
586
586
 
@@ -1479,7 +1479,9 @@ interface InputProps$1 extends Omit<ComponentPropsWithRef<"input">, "size"> {
1479
1479
  }
1480
1480
  /**
1481
1481
  * Input — a styled native `<input>`. Soft-square (rounded-sm, 8px), never a pill.
1482
- * Sits on the card surface with a 1px input border; focus raises a 2px ring.
1482
+ * Wears the theme's field surface (`field` fill, 1px `field-border` outline — outlined
1483
+ * on the card by default, a filled well in a theme that fills its fields); focus
1484
+ * raises a 2px ring.
1483
1485
  * Set `aria-invalid` (Base UI form fields do this for you) to surface the
1484
1486
  * destructive error treatment on border + ring.
1485
1487
  *
@@ -1548,7 +1550,7 @@ interface TextareaProps extends ComponentPropsWithRef<"textarea"> {
1548
1550
  }
1549
1551
  /**
1550
1552
  * Textarea — a styled native multi-line text control. Soft-square (rounded-sm,
1551
- * like all inputs, never a pill). Sits on the card surface with a 1px input
1553
+ * like all inputs, never a pill). Sits on the field surface with a 1px field
1552
1554
  * border; the focus ring uses the --ring token. Set `aria-invalid` to surface
1553
1555
  * the destructive error treatment on border + ring (same as Input). Pass `autoResize` to grow with content.
1554
1556
  *
@@ -2625,6 +2627,12 @@ type RootProps$3 = Omit<ComponentProps<typeof Meter$1.Root>, "className"> & {
2625
2627
  strokeWidth?: number;
2626
2628
  /** Print the value in the ring's centre. */
2627
2629
  showValue?: boolean;
2630
+ /**
2631
+ * Draw the bar as this many separate ticks instead of a continuous fill —
2632
+ * a quota, score or spend limit read at a glance (▮▮▮▮▮▮▯▯▯▯). Any reading
2633
+ * above `min` fills at least one tick. Bar only: ignored for `shape="ring"`.
2634
+ */
2635
+ segments?: number;
2628
2636
  };
2629
2637
  /**
2630
2638
  * Meter — a static measurement within a known range, over Base UI's Meter.
@@ -2646,8 +2654,10 @@ type RootProps$3 = Omit<ComponentProps<typeof Meter$1.Root>, "className"> & {
2646
2654
  * </Meter>
2647
2655
  *
2648
2656
  * `shape="ring"` draws the same measurement as a circular gauge (it was Gauge).
2657
+ * `segments={20}` draws the bar as a row of ticks — a spend limit or a score
2658
+ * read at a glance (bar only).
2649
2659
  */
2650
- declare function Meter({ className, children, tone, shape, size, strokeWidth, showValue, ...props }: RootProps$3): react.JSX.Element;
2660
+ declare function Meter({ className, children, tone, shape, size, strokeWidth, showValue, segments, ...props }: RootProps$3): react.JSX.Element;
2651
2661
  declare namespace Meter {
2652
2662
  var displayName: string;
2653
2663
  }
@@ -2656,7 +2666,11 @@ type TrackProps$1 = Omit<ComponentProps<typeof Meter$1.Track>, "className"> & {
2656
2666
  /** Bar thickness. Inherits the Meter's `size` unless set here. @default "md" */
2657
2667
  size?: MeterSize;
2658
2668
  };
2659
- /** The rail. Renders a MeterIndicator child by default. */
2669
+ /**
2670
+ * The rail. Renders a MeterIndicator child by default — or, when the Meter has
2671
+ * `segments`, its row of ticks (children are not rendered then: there is no
2672
+ * single fill to put in it).
2673
+ */
2660
2674
  declare function MeterTrack({ className, children, size, ...props }: TrackProps$1): react.JSX.Element;
2661
2675
  declare namespace MeterTrack {
2662
2676
  var displayName: string;
@@ -2836,9 +2850,9 @@ declare const CHART_SERIES_COUNT = 8;
2836
2850
  declare function chartColor(index: number): string;
2837
2851
  /**
2838
2852
  * The CSS colour for a tone as a chart fill — for a series that names its role
2839
- * (`tone: "success"`), not for default series (see chartColor). Tones are
2840
- * tuned to be legible as TEXT (dark, restrained); a plotted mark keeps the hue
2841
- * but is lifted into the chart lightness band with a chroma floor, so a quiet
2853
+ * (`tone: "success"`), not for default series (see chartColor). Status and
2854
+ * decorative tones plot at graphic strength (their `-mark` tokens, which each
2855
+ * theme tunes), held in the chart lightness band with a chroma floor, so a quiet
2842
2856
  * tone (a slate "3") still reads as colour rather than grey.
2843
2857
  */
2844
2858
  declare function toneColor(tone: ChartTone): string;
@@ -4789,7 +4803,16 @@ interface ComboboxItemGroup<Item = unknown> {
4789
4803
  /** The rows under it. */
4790
4804
  items: readonly Item[];
4791
4805
  }
4792
- type ComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxRootProps<Value, Multiple>;
4806
+ type ComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxRootProps<Value, Multiple> & {
4807
+ /**
4808
+ * Paint the typed text wherever it appears in a row's label, on the
4809
+ * `highlight` token pair. Only typed text: a field that still holds the
4810
+ * selected item's label lists everything, and lighting that label in every
4811
+ * row would mark matches nobody searched for. See useMatchHighlight.
4812
+ * @default true
4813
+ */
4814
+ highlightMatches?: boolean;
4815
+ };
4793
4816
  /**
4794
4817
  * Root of the combobox. Owns selection, input value, filtering and open state —
4795
4818
  * all of it Base UI's, passed straight through.
@@ -4800,7 +4823,7 @@ type ComboboxProps<Value, Multiple extends boolean | undefined = false> = Combob
4800
4823
  * highlight is forwarded to the virtual list, which knows every row's offset
4801
4824
  * whether or not it exists. Your own `onItemHighlighted` still fires, first.
4802
4825
  */
4803
- declare function Combobox<Value, Multiple extends boolean | undefined = false>({ onItemHighlighted, ...props }: ComboboxProps<Value, Multiple>): react.JSX.Element;
4826
+ declare function Combobox<Value, Multiple extends boolean | undefined = false>({ onItemHighlighted, onInputValueChange, highlightMatches, ...props }: ComboboxProps<Value, Multiple>): react.JSX.Element;
4804
4827
  declare const ComboboxValue: typeof Combobox$1.Value;
4805
4828
  declare const ComboboxClear: react.ForwardRefExoticComponent<Omit<_base_ui_react.AutocompleteClearProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
4806
4829
  declare const ComboboxPortal: {
@@ -4879,7 +4902,7 @@ type ContentProps$2 = Omit<ComponentProps<typeof Combobox$1.Popup>, "className">
4879
4902
  * callers pass items/children directly. Defaults to the `bottom` side, `start`
4880
4903
  * aligned, 6px offset; matches the input width via `--anchor-width`.
4881
4904
  */
4882
- declare function ComboboxContent({ className, children, side, align, sideOffset, scroll, ...props }: ContentProps$2): react.JSX.Element;
4905
+ declare function ComboboxContent({ className, children, side, align, sideOffset, scroll, ref, ...props }: ContentProps$2): react.JSX.Element;
4883
4906
  type ItemProps$1 = Omit<ComponentProps<typeof Combobox$1.Item>, "className"> & {
4884
4907
  className?: string;
4885
4908
  };
@@ -6122,6 +6145,9 @@ declare function hueColor(h: number): string;
6122
6145
 
6123
6146
  declare const colorFieldMeta: ComponentMeta;
6124
6147
 
6148
+ /** How AppShell frames its main content on desktop. See `AppShellProps.frame`. */
6149
+ type AppShellFrame = "flush" | "inset";
6150
+
6125
6151
  interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
6126
6152
  /**
6127
6153
  * Full-width status banners pinned above the frame (offline / chain-down).
@@ -6154,6 +6180,23 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
6154
6180
  dock?: ReactNode;
6155
6181
  /** Floating overlays (a message launcher, FAB, modal mount points). */
6156
6182
  overlays?: ReactNode;
6183
+ /**
6184
+ * How the desktop frame (`lg` and up) holds the content. Below `lg` the two
6185
+ * are identical: mobile header, plain main, page scroll, bottom nav.
6186
+ * - `flush` (default) — main sits directly on the page beside the rail and
6187
+ * the document scrolls.
6188
+ * - `inset` — the shell's ground (`shell-ground`, one step off the rail's
6189
+ * surface) holds the rail and the gap, and main
6190
+ * is a raised, rounded, bordered panel inset from the window edges that
6191
+ * scrolls inside itself while the rail stays put. For dense, multi-pane
6192
+ * product apps. The Sidebar in the `sidebar` slot reads the frame (see
6193
+ * `app-shell-frame.tsx`), drops its right border — the gap is the divider
6194
+ * now — and fills the body row. Pair it with `surface="rail"`; with
6195
+ * `surface="page"` the ground turns page-coloured and the panel's border
6196
+ * alone lifts it.
6197
+ * @default "flush"
6198
+ */
6199
+ frame?: AppShellFrame;
6157
6200
  /** Main content. */
6158
6201
  children?: ReactNode;
6159
6202
  }
@@ -6165,7 +6208,9 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
6165
6208
  * It is layout-agnostic about the breakpoint switch: each slot component owns
6166
6209
  * its own `hidden`/`lg:*` visibility (Sidebar is `hidden lg:flex`, AppHeader and
6167
6210
  * BottomNav are `lg:hidden`), so the same shell drives mobile and desktop. The
6168
- * only coupling AppShell adds is reserving bottom space for a fixed `bottomNav`.
6211
+ * only couplings AppShell adds are reserving bottom space for a fixed
6212
+ * `bottomNav` and, with `frame="inset"`, telling the Sidebar in its slot to drop
6213
+ * its border and fill the row (`AppShellFrameProvider`, app-shell-frame.tsx).
6169
6214
  *
6170
6215
  * <AppShell
6171
6216
  * banners={<NetworkBanner />}
@@ -6176,7 +6221,7 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
6176
6221
  * <Region max="feed">…</Region>
6177
6222
  * </AppShell>
6178
6223
  */
6179
- declare function AppShell({ banners, header, sidebar, bottomNav, dock, overlays, className, children, ...rest }: AppShellProps): react.JSX.Element;
6224
+ declare function AppShell({ banners, header, sidebar, bottomNav, dock, overlays, frame, className, children, ...rest }: AppShellProps): react.JSX.Element;
6180
6225
  declare namespace AppShell {
6181
6226
  var displayName: string;
6182
6227
  }
@@ -6253,6 +6298,12 @@ interface SidebarProps extends ComponentPropsWithRef<"aside"> {
6253
6298
  * - `page` — the page's own surface and ink, no border. Use it when a
6254
6299
  * full-width header sits above the rail: a tinted column that starts
6255
6300
  * under a page-coloured bar reads as pasted on, not as chrome.
6301
+ *
6302
+ * Inside `<AppShell frame="inset">` the rail's surface is also the shell's
6303
+ * ground, so from `lg` the `rail` border is dropped (the gap around the main
6304
+ * panel divides them) and the rail fills the shell's body row rather than
6305
+ * sizing itself to the viewport. AppShell signals this through its
6306
+ * `sidebar` slot only (`useAppShellFrame`), so a rail elsewhere is unaffected.
6256
6307
  * @default "rail"
6257
6308
  */
6258
6309
  surface?: "rail" | "page";
@@ -6420,6 +6471,67 @@ declare namespace SideNavItem {
6420
6471
 
6421
6472
  declare const sideNavMeta: ComponentMeta;
6422
6473
 
6474
+ interface SectionRailSection {
6475
+ /** The section element's `id` — the rail links to `#id` and watches it. */
6476
+ id: string;
6477
+ /** The section's name: the tooltip, and the link's accessible name. */
6478
+ label: string;
6479
+ }
6480
+ interface SectionRailProps extends Omit<ComponentPropsWithRef<"nav">, "children"> {
6481
+ /** The sections, in document order. */
6482
+ sections: readonly SectionRailSection[];
6483
+ /**
6484
+ * The current section's id, when the parent decides it. Leave it unset and
6485
+ * the rail follows the scroll itself.
6486
+ */
6487
+ value?: string;
6488
+ /** Called with the new id when the reader scrolls into a section or picks one. */
6489
+ onValueChange?: (id: string) => void;
6490
+ /**
6491
+ * Where the reading line sits, as a fraction of the viewport from its top.
6492
+ * A section becomes current once its top crosses it.
6493
+ * @default 0.35
6494
+ */
6495
+ offset?: number;
6496
+ /** The element that scrolls, when it is not the window. */
6497
+ root?: RefObject<HTMLElement | null>;
6498
+ /**
6499
+ * Which edge of the page the rail sits on. The labels open toward the
6500
+ * content, on the other side.
6501
+ * @default "left"
6502
+ */
6503
+ side?: "left" | "right";
6504
+ /**
6505
+ * How much motion this component uses: `full` (default) inherits the app's
6506
+ * policy, `subtle` keeps feedback and drops the marker's glide, `off` stills
6507
+ * it. It can only turn motion down — it never overrides a reader's
6508
+ * reduce-motion setting.
6509
+ */
6510
+ motion?: MotionLevel;
6511
+ }
6512
+ /**
6513
+ * SectionRail — a slim vertical rail of dots, one per section of a long page,
6514
+ * that shows where the reader is and jumps to any section. A bar marks the
6515
+ * current section and glides to the next as the page scrolls; hovering or
6516
+ * focusing a dot names its section in a tooltip that travels with the pointer.
6517
+ *
6518
+ * <SectionRail
6519
+ * sections={[{ id: "overview", label: "Overview" }, { id: "process", label: "Process" }]}
6520
+ * className="fixed top-1/2 left-6 z-(--z-nav) -translate-y-1/2 max-lg:hidden"
6521
+ * />
6522
+ *
6523
+ * It renders in flow; place it with layout classes. Picking a dot scrolls to
6524
+ * the section with the page's own `scroll-behavior` (instantly under reduced
6525
+ * motion) and, at page level, puts its id in the URL without adding a history
6526
+ * entry. Give sections a `scroll-mt-*` when a sticky header would cover them.
6527
+ */
6528
+ declare function SectionRail({ sections, value, onValueChange, offset, root, side, motion, className, "aria-label": ariaLabel, ref, ...props }: SectionRailProps): react.JSX.Element;
6529
+ declare namespace SectionRail {
6530
+ var displayName: string;
6531
+ }
6532
+
6533
+ declare const sectionRailMeta: ComponentMeta;
6534
+
6423
6535
  /**
6424
6536
  * BottomNav — the mobile bottom tab bar. Fixed to the bottom edge, hidden at
6425
6537
  * `lg` (the desktop Sidebar takes over). Pads the home-indicator safe area and
@@ -6598,7 +6710,7 @@ interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChang
6598
6710
  }
6599
6711
  /**
6600
6712
  * SearchInput — a styled search field with a leading magnifier and a clearable
6601
- * X. Soft-square (rounded-sm), card surface, 2px focus ring — same shell as
6713
+ * X. Soft-square (rounded-sm), field surface, 2px focus ring — same shell as
6602
6714
  * Input, padded to make room for the leading and trailing affordances. The
6603
6715
  * clear button only renders while the value is non-empty.
6604
6716
  *
@@ -7705,6 +7817,14 @@ interface CommandMenuProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
7705
7817
  * self-filtering — if you own which rows exist, you own all of them.
7706
7818
  */
7707
7819
  filter?: CommandFilter;
7820
+ /**
7821
+ * Paint the query wherever it appears in a row's label, on the `highlight`
7822
+ * token pair. A literal, case-insensitive match — so under a fuzzy `filter`
7823
+ * a row that matched as a subsequence keeps an unpainted label, which is
7824
+ * honest: nothing in it reads as the query. See useMatchHighlight.
7825
+ * @default true
7826
+ */
7827
+ highlightMatches?: boolean;
7708
7828
  /**
7709
7829
  * Classes for the scrolling list, which is a `Scroller` — so `className`
7710
7830
  * (which lands on the dialog surface) cannot reach it, and the list's own
@@ -7793,7 +7913,7 @@ type CommandMenuPanelProps = Omit<CommandMenuProps, "open" | "onOpenChange" | "f
7793
7913
  * top-aligned Dialog with a combobox search header and a scrollable listbox of
7794
7914
  * command options.
7795
7915
  */
7796
- declare function CommandMenu({ open, onOpenChange, items, query: queryProp, onQueryChange, filter, listClassName, placeholder, emptyMessage, title, description, finalFocus, scope, inputProps, children, className, ...props }: CommandMenuProps): react.JSX.Element;
7916
+ declare function CommandMenu({ open, onOpenChange, items, query: queryProp, onQueryChange, filter, highlightMatches, listClassName, placeholder, emptyMessage, title, description, finalFocus, scope, inputProps, children, className, ...props }: CommandMenuProps): react.JSX.Element;
7797
7917
  /**
7798
7918
  * The same palette rendered in place: search header, filtered and grouped
7799
7919
  * listbox, the full keyboard model — on a card in the page instead of in a
@@ -7807,7 +7927,7 @@ declare function CommandMenu({ open, onOpenChange, items, query: queryProp, onQu
7807
7927
  * once the query is empty, so a Popover around the panel still closes on it.
7808
7928
  * Choosing a row runs its onSelect and leaves the panel as it was.
7809
7929
  */
7810
- declare function CommandMenuPanel({ items, query: queryProp, onQueryChange, filter, listClassName, placeholder, emptyMessage, title, scope, inputProps, children, className, ...props }: CommandMenuPanelProps): react.JSX.Element;
7930
+ declare function CommandMenuPanel({ items, query: queryProp, onQueryChange, filter, highlightMatches, listClassName, placeholder, emptyMessage, title, scope, inputProps, children, className, ...props }: CommandMenuPanelProps): react.JSX.Element;
7811
7931
  interface CommandMenuGroupProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
7812
7932
  /** Group heading shown above the items. */
7813
7933
  label: string;
@@ -7887,7 +8007,7 @@ interface CommandMenuTriggerProps extends Omit<ComponentPropsWithRef<"button">,
7887
8007
  }
7888
8008
  /**
7889
8009
  * CommandMenuTrigger — the search field in a header that is really a button:
7890
- * it wears SearchInput's shell (border-input, card surface, leading magnifier,
8010
+ * it wears SearchInput's shell (the field fill and outline, leading magnifier,
7891
8011
  * muted placeholder) and opens a `CommandMenu` on click or on ⌘K / Ctrl+K.
7892
8012
  *
7893
8013
  * const [open, setOpen] = useState(false)
@@ -8497,6 +8617,8 @@ type ArtVariant = "mesh" | "grain";
8497
8617
 
8498
8618
  /** The decorative tones art can be painted from — the palette's `--tone-*` family. */
8499
8619
  type ArtTone = "info" | "3" | "2" | "1" | "warning";
8620
+ /** How strongly the art is painted: the preset's art as-is, or a pastel wash of it. */
8621
+ type ArtIntensity = "vivid" | "soft";
8500
8622
  interface GradientArtProps extends ComponentProps<"div"> {
8501
8623
  /**
8502
8624
  * `mesh` (default) — soft spots of colour pulled together by gentle waves
@@ -8515,6 +8637,14 @@ interface GradientArtProps extends ComponentProps<"div"> {
8515
8637
  * item keeps its own look across renders and reloads.
8516
8638
  */
8517
8639
  seed?: string | number;
8640
+ /**
8641
+ * `vivid` (default) paints the preset's art at full strength. `soft` turns
8642
+ * every colour and the ground into a light pastel of itself — a wash to
8643
+ * stage white chips, logo tiles or a card's header band on, in light and
8644
+ * dark alike. It is a light ground: put content on a card or chip over it,
8645
+ * not overlay-foreground text straight on it.
8646
+ */
8647
+ intensity?: ArtIntensity;
8518
8648
  }
8519
8649
  /**
8520
8650
  * GradientArt — placeholder artwork painted from the theme's art direction:
@@ -8531,7 +8661,7 @@ interface GradientArtProps extends ComponentProps<"div"> {
8531
8661
  *
8532
8662
  * Children render above the art: initials, a play glyph, a caption.
8533
8663
  */
8534
- declare function GradientArt({ variant, tones, seed, className, style, children, ...props }: GradientArtProps): react.JSX.Element;
8664
+ declare function GradientArt({ variant, tones, seed, intensity, className, style, children, ...props }: GradientArtProps): react.JSX.Element;
8535
8665
  declare namespace GradientArt {
8536
8666
  var displayName: string;
8537
8667
  }
@@ -9684,6 +9814,45 @@ declare function usePresentation(): Presentation;
9684
9814
  */
9685
9815
  declare function useScrollActivity(): (node: HTMLElement | null) => void;
9686
9816
 
9817
+ /**
9818
+ * useMatchHighlight — paint every occurrence of a query inside a region, without
9819
+ * touching the region's DOM.
9820
+ *
9821
+ * const results = useMatchHighlight<HTMLUListElement>(query)
9822
+ * <SearchInput value={query} onValueChange={setQuery} />
9823
+ * <ul ref={results}>{rows}</ul>
9824
+ *
9825
+ * The obvious way to mark a match is to split the label around it and wrap the
9826
+ * hit in a `<mark>`. That means every row renders its label as three nodes, the
9827
+ * component owning the row has to know the query, and the text a screen reader
9828
+ * walks is cut into fragments. The CSS Custom Highlight API marks a Range
9829
+ * instead: the text nodes stay exactly as React rendered them, and the paint is
9830
+ * `::highlight(sable-match)` in styles.css, on the `highlight` token pair —
9831
+ * whose stated intent is search hits.
9832
+ *
9833
+ * Returns a callback ref rather than taking a ref object, because the regions
9834
+ * this is for (a popup list, a results panel) usually mount after the component
9835
+ * holding the query does, and an effect keyed on the query never sees a ref
9836
+ * object fill in.
9837
+ *
9838
+ * Matching is case-insensitive and literal, within one text node: a match split
9839
+ * across elements (`<b>Re</b>port`) is not painted. That is the same text the
9840
+ * built-in filters compare, so whatever survives a substring filter is lit.
9841
+ * `selector` narrows the search to parts of the region — a row's label and not
9842
+ * its shortcut hint.
9843
+ *
9844
+ * Purely visual, and that is fine here: the query is already in the field, and
9845
+ * the row's accessible name is unchanged. Where the API is missing it does
9846
+ * nothing at all.
9847
+ */
9848
+ declare function useMatchHighlight<T extends Element = HTMLElement>(query: string, options?: UseMatchHighlightOptions): (element: T | null) => void;
9849
+ interface UseMatchHighlightOptions {
9850
+ /** Only search inside elements matching this, within the region. */
9851
+ selector?: string;
9852
+ /** Turn the paint off without unmounting anything. @default true */
9853
+ enabled?: boolean;
9854
+ }
9855
+
9687
9856
  interface UseCopyOptions {
9688
9857
  /** How long `copied` stays true after a successful copy, in ms. @default 1500 */
9689
9858
  timeout?: number;
@@ -9772,6 +9941,39 @@ interface SmoothWheelOptions {
9772
9941
  */
9773
9942
  declare function useSmoothWheel({ axis, mapVertical, smooth, }?: SmoothWheelOptions): (node: HTMLElement | null) => void;
9774
9943
 
9775
- declare const SABLE_UI_VERSION: "0.15.0";
9944
+ interface UseActiveSectionOptions {
9945
+ /**
9946
+ * Where the reading line sits, as a fraction of the viewport's height from
9947
+ * its top. A section becomes current once its top crosses the line, so the
9948
+ * one being read wins over the one merely peeking in at the bottom.
9949
+ * @default 0.35
9950
+ */
9951
+ offset?: number;
9952
+ /**
9953
+ * The element that scrolls, when it is not the window — a `Scroller`, an
9954
+ * inset `AppShell` main, a docs preview.
9955
+ */
9956
+ root?: RefObject<HTMLElement | null>;
9957
+ }
9958
+ /**
9959
+ * useActiveSection — which of these sections the reader is in. The scroll spy
9960
+ * behind `SectionRail`, exported for a contents list a consumer draws itself
9961
+ * (an "On this page" column, a chapter select).
9962
+ *
9963
+ * const active = useActiveSection(["intro", "usage", "api"])
9964
+ *
9965
+ * The current section is the last one, in the order given, whose top has
9966
+ * crossed the reading line (`offset`). Before any has, the first one is
9967
+ * current: the reader is at the start. Once the scroller reaches its end the
9968
+ * last section in view wins instead, because a short closing section can never
9969
+ * climb to the line and would otherwise never become current.
9970
+ *
9971
+ * Measures on scroll and resize, at most once a frame. Ids missing from the
9972
+ * document are skipped, so sections may mount late. Returns `null` only for an
9973
+ * empty list.
9974
+ */
9975
+ declare function useActiveSection(ids: readonly string[], { offset, root }?: UseActiveSectionOptions): string | null;
9976
+
9977
+ declare const SABLE_UI_VERSION: "0.17.0";
9776
9978
 
9777
- export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, BubbleReactionAdd, type BubbleReactionAddProps, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Burst, type BurstProps, Button, type ButtonBleed, ButtonGroup, type ButtonGroupProps, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, CaretMenu, CaretMenuItem, type CaretMenuItemProps, type CaretMenuProps, type CaretTrigger, type CaretTriggerField, type CaretTriggerMatch, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, ConfirmButton, type ConfirmButtonProps, type ConstraintFlag, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, type CopySource, DEFAULT_REACTIONS, DataTable, type DataTableColumn, type DataTableProps, type DataTableRowKey, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, DisclosurePicker, DisclosurePickerEmpty, DisclosurePickerList, type DisclosurePickerListProps, DisclosurePickerOption, type DisclosurePickerOptionProps, DisclosurePickerPanel, type DisclosurePickerPanelProps, type DisclosurePickerProps, type DisclosurePickerSearch, DisclosurePickerTrigger, type DisclosurePickerTriggerProps, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, type FieldsetVariant, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, FontPicker, type FontPickerFont, type FontPickerOption, type FontPickerProps, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, InputGroup, type InputGroupProps, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LikeButton, type LikeButtonProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, MediaImage, type MediaImageProps, MediaTile, type MediaTileProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuReactions, type MenuReactionsProps, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Menubar, type MenubarProps, MenubarTrigger, type MenubarTriggerProps, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionLevel, type MotionPolicy, MotionProvider, type MotionProviderProps, MotionScope, type MotionScopeProps, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, NumberTicker, type NumberTickerProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, type PaletteColor, type PaletteFamily, type PaletteStep, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyGroup, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, type Reaction, ReactionPicker, type ReactionPickerProps, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$2 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetList, SheetPortal, type SheetProps, type SheetSnapPoint, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, SkipLink, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, type SmoothWheelOptions, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TOOL_CALL_STATUS_LABELS, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemePreview, type ThemePreviewProps, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, ToolCall, type ToolCallProps, type ToolCallStatus, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipGroup, type TooltipGroupProps, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCaretTriggerOptions, type UseCaretTriggerResult, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonGroupMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, caretMenuMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, confirmButtonMeta, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputGroupMeta, inputMeta, isPaletteColor, isTransparent, kbdMeta, labelMeta, likeButtonMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, menubarMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, motionAttribute, navigationMenuMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, numberTickerMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, reactionPickerMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolCallMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useAutoSize, useCaretTrigger, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMotion, useMotionLevel, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useShake, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
9979
+ export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtIntensity, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, BubbleReactionAdd, type BubbleReactionAddProps, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Burst, type BurstProps, Button, type ButtonBleed, ButtonGroup, type ButtonGroupProps, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, CaretMenu, CaretMenuItem, type CaretMenuItemProps, type CaretMenuProps, type CaretTrigger, type CaretTriggerField, type CaretTriggerMatch, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, ConfirmButton, type ConfirmButtonProps, type ConstraintFlag, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, type CopySource, DEFAULT_REACTIONS, DataTable, type DataTableColumn, type DataTableProps, type DataTableRowKey, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, DisclosurePicker, DisclosurePickerEmpty, DisclosurePickerList, type DisclosurePickerListProps, DisclosurePickerOption, type DisclosurePickerOptionProps, DisclosurePickerPanel, type DisclosurePickerPanelProps, type DisclosurePickerProps, type DisclosurePickerSearch, DisclosurePickerTrigger, type DisclosurePickerTriggerProps, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, type FieldsetVariant, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, FontPicker, type FontPickerFont, type FontPickerOption, type FontPickerProps, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, InputGroup, type InputGroupProps, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LikeButton, type LikeButtonProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, MediaImage, type MediaImageProps, MediaTile, type MediaTileProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuReactions, type MenuReactionsProps, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Menubar, type MenubarProps, MenubarTrigger, type MenubarTriggerProps, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionLevel, type MotionPolicy, MotionProvider, type MotionProviderProps, MotionScope, type MotionScopeProps, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, NumberTicker, type NumberTickerProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, type PaletteColor, type PaletteFamily, type PaletteStep, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyGroup, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, type Reaction, ReactionPicker, type ReactionPickerProps, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SectionRail, type SectionRailProps, type SectionRailSection, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$2 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetList, SheetPortal, type SheetProps, type SheetSnapPoint, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, SkipLink, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, type SmoothWheelOptions, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TOOL_CALL_STATUS_LABELS, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemePreview, type ThemePreviewProps, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, ToolCall, type ToolCallProps, type ToolCallStatus, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipGroup, type TooltipGroupProps, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseActiveSectionOptions, type UseCaretTriggerOptions, type UseCaretTriggerResult, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UseMatchHighlightOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonGroupMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, caretMenuMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, confirmButtonMeta, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputGroupMeta, inputMeta, isPaletteColor, isTransparent, kbdMeta, labelMeta, likeButtonMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, menubarMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, motionAttribute, navigationMenuMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, numberTickerMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, reactionPickerMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, sectionRailMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolCallMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useActiveSection, useAnchoredDensity, useAutoSize, useCaretTrigger, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMatchHighlight, useMotion, useMotionLevel, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useShake, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
package/dist/index.js CHANGED
@@ -18,6 +18,9 @@ import {
18
18
  DENSITY_TOKENS,
19
19
  RHYTHM_TOKENS,
20
20
  WORKSPACE_SURFACE_TOKENS,
21
+ FIELD_TOKENS,
22
+ APP_SHELL_TOKENS,
23
+ MARK_TOKENS,
21
24
  ART_TOKENS,
22
25
  PALETTE_TOKENS,
23
26
  TYPE_UI_TOKENS
@@ -127,6 +130,7 @@ export * from "./components/color-field/index.js";
127
130
  export * from "./components/app-shell/index.js";
128
131
  export * from "./components/sidebar/index.js";
129
132
  export * from "./components/side-nav/index.js";
133
+ export * from "./components/section-rail/index.js";
130
134
  export * from "./components/bottom-nav/index.js";
131
135
  export * from "./components/app-header/index.js";
132
136
  export * from "./components/page-header/index.js";
@@ -170,15 +174,18 @@ export * from "./components/marker/index.js";
170
174
  import { Density, DensityProvider, useDensity, useAnchoredDensity, useTypeTier } from "./lib/density.js";
171
175
  import { PresentationProvider, usePresentation } from "./lib/presentation.js";
172
176
  import { useScrollActivity } from "./lib/use-scroll-activity.js";
177
+ import { useMatchHighlight } from "./lib/use-match-highlight.js";
173
178
  import { useCopy } from "./lib/use-copy.js";
174
179
  import { useSmoothWheel } from "./lib/use-smooth-wheel.js";
180
+ import { useActiveSection } from "./lib/use-active-section.js";
175
181
  import {
176
182
  useCaretTrigger
177
183
  } from "./lib/use-caret-trigger.js";
178
184
  import { STATUS_TONES, STATUS_TONE_ICON } from "./lib/status-tone.js";
179
185
  import { PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, isPaletteColor } from "./lib/palette.js";
180
- var SABLE_UI_VERSION = "0.15.0";
186
+ var SABLE_UI_VERSION = "0.17.0";
181
187
  export {
188
+ APP_SHELL_TOKENS,
182
189
  ART_TOKENS,
183
190
  CHART_SERIES_COUNT,
184
191
  COMPONENT_GROUPS,
@@ -187,6 +194,8 @@ export {
187
194
  DENSITY_TOKENS,
188
195
  Density,
189
196
  DensityProvider,
197
+ FIELD_TOKENS,
198
+ MARK_TOKENS,
190
199
  MOTION_TOKENS,
191
200
  PALETTE_COLORS,
192
201
  PALETTE_FAMILIES,
@@ -227,10 +236,12 @@ export {
227
236
  themeIds,
228
237
  themeManifestById,
229
238
  themeManifests,
239
+ useActiveSection,
230
240
  useAnchoredDensity,
231
241
  useCaretTrigger,
232
242
  useCopy,
233
243
  useDensity,
244
+ useMatchHighlight,
234
245
  usePresentation,
235
246
  useSableTheme,
236
247
  useScrollActivity,
@@ -4,18 +4,18 @@ function chartColor(index) {
4
4
  return `var(--chart-${index % CHART_SERIES_COUNT + 1})`;
5
5
  }
6
6
  var TONE_VAR = {
7
- "1": "var(--tone-1)",
8
- "2": "var(--tone-2)",
9
- "3": "var(--tone-3)",
10
- info: "var(--tone-info)",
11
- warning: "var(--tone-warning)",
7
+ "1": "var(--tone-1-mark)",
8
+ "2": "var(--tone-2-mark)",
9
+ "3": "var(--tone-3-mark)",
10
+ info: "var(--tone-info-mark)",
11
+ warning: "var(--tone-warning-mark)",
12
12
  primary: "var(--primary)",
13
13
  neutral: "var(--muted-foreground)",
14
- success: "var(--success)",
15
- destructive: "var(--destructive)"
14
+ success: "var(--success-mark)",
15
+ destructive: "var(--destructive-mark)"
16
16
  };
17
17
  function toneColor(tone) {
18
- return `oklch(from ${TONE_VAR[tone]} clamp(0.5, calc(l + 0.1), 0.72) max(calc(c * 1.1), 0.1) h)`;
18
+ return `oklch(from ${TONE_VAR[tone]} clamp(0.5, l, 0.78) max(c, 0.1) h)`;
19
19
  }
20
20
  function resolveSeries(series) {
21
21
  return series.map((s, i) => ({
@@ -25,13 +25,14 @@ function useArrival() {
25
25
  cancelAnimationFrame(frame);
26
26
  frame = requestAnimationFrame(() => onScreen() && setArrived(true));
27
27
  };
28
- window.addEventListener("scroll", check, { passive: true, capture: true });
29
- window.addEventListener("resize", check, { passive: true });
28
+ const listeners = new AbortController();
29
+ const { signal } = listeners;
30
+ window.addEventListener("scroll", check, { passive: true, capture: true, signal });
31
+ window.addEventListener("resize", check, { passive: true, signal });
30
32
  return () => {
31
33
  observer.disconnect();
32
34
  cancelAnimationFrame(frame);
33
- window.removeEventListener("scroll", check, { capture: true });
34
- window.removeEventListener("resize", check);
35
+ listeners.abort();
35
36
  };
36
37
  }, [el, arrived]);
37
38
  return [ref, arrived];
@@ -1,5 +1,5 @@
1
1
  // src/lib/field-shell.ts
2
- var FIELD_SHELL = "rounded-sm border border-input bg-card motion-interactive placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
2
+ var FIELD_SHELL = "rounded-sm border border-field-border bg-field motion-interactive placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
3
3
  var MOBILE_FIELD_TIER = "max-sm:text-body-lg";
4
4
  var FIELD_INVALID = "aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive/30";
5
5
  var FIELD_SHELL_XS = "rounded-[var(--panel-field-radius,var(--radius-xs))] border-transparent bg-panel-field hover:bg-panel-field-hover";
@@ -95,16 +95,16 @@ function HighlightGlide({
95
95
  mutations.observe(host, { attributes: true, attributeFilter: [follow], subtree: true, childList: true });
96
96
  const resize = new ResizeObserver(place);
97
97
  resize.observe(host);
98
- host.addEventListener("scroll", place, true);
99
- host.addEventListener("transitionend", place);
100
- host.addEventListener("animationend", place);
98
+ const listeners = new AbortController();
99
+ const { signal } = listeners;
100
+ host.addEventListener("scroll", place, { capture: true, signal });
101
+ host.addEventListener("transitionend", place, { signal });
102
+ host.addEventListener("animationend", place, { signal });
101
103
  return () => {
102
104
  cancelAnimationFrame(frame);
103
105
  mutations.disconnect();
104
106
  resize.disconnect();
105
- host.removeEventListener("scroll", place, true);
106
- host.removeEventListener("transitionend", place);
107
- host.removeEventListener("animationend", place);
107
+ listeners.abort();
108
108
  host.removeAttribute("data-glide");
109
109
  };
110
110
  }, [follow, timing]);