@sableui/react 0.14.0 → 0.16.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 (163) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/DESIGN.md +3 -1
  3. package/bin/sable-lint.mjs +5 -1
  4. package/dist/{_contract-CkqXDVww.d.ts → _contract-CDa9-NdB.d.ts} +47 -1
  5. package/dist/blocks/index.d.ts +12 -1
  6. package/dist/blocks/index.js +4 -0
  7. package/dist/blocks/message-reactions-block.js +87 -0
  8. package/dist/blocks/message-reactions-block.meta.js +23 -0
  9. package/dist/blocks/wallet-block.js +2 -2
  10. package/dist/components/app-shell/app-shell-frame.js +16 -0
  11. package/dist/components/app-shell/app-shell-main.js +12 -0
  12. package/dist/components/app-shell/app-shell.js +28 -4
  13. package/dist/components/app-shell/app-shell.meta.js +88 -4
  14. package/dist/components/area-chart/area-chart.meta.js +6 -1
  15. package/dist/components/attachment/attachment.meta.js +2 -1
  16. package/dist/components/attachment/attachment.variants.js +1 -1
  17. package/dist/components/badge/badge.meta.js +8 -1
  18. package/dist/components/badge/badge.variants.js +7 -7
  19. package/dist/components/banner/banner.meta.js +6 -1
  20. package/dist/components/banner/banner.variants.js +5 -5
  21. package/dist/components/bar-chart/bar-chart.meta.js +6 -1
  22. package/dist/components/bubble/bubble.js +105 -5
  23. package/dist/components/bubble/bubble.meta.js +42 -6
  24. package/dist/components/bubble/bubble.variants.js +1 -1
  25. package/dist/components/bubble/index.js +2 -0
  26. package/dist/components/caret-menu/caret-menu.js +5 -6
  27. package/dist/components/chat-composer/chat-composer.meta.js +2 -2
  28. package/dist/components/chat-composer/chat-composer.variants.js +1 -1
  29. package/dist/components/color-field/color-field.js +6 -8
  30. package/dist/components/combobox/combobox.js +27 -5
  31. package/dist/components/combobox/combobox.meta.js +10 -2
  32. package/dist/components/command-menu/command-menu.js +14 -3
  33. package/dist/components/command-menu/command-menu.meta.js +9 -1
  34. package/dist/components/date-picker/date-picker.meta.js +2 -2
  35. package/dist/components/feedback/feedback.js +9 -2
  36. package/dist/components/feedback/feedback.meta.js +8 -1
  37. package/dist/components/gradient-art/gradient-art.js +8 -5
  38. package/dist/components/gradient-art/gradient-art.meta.js +35 -2
  39. package/dist/components/input/input.meta.js +11 -3
  40. package/dist/components/input-group/input-group.js +1 -1
  41. package/dist/components/input-group/input-group.meta.js +1 -1
  42. package/dist/components/like-button/index.js +7 -0
  43. package/dist/components/like-button/like-button.js +89 -0
  44. package/dist/components/like-button/like-button.meta.js +132 -0
  45. package/dist/components/line-chart/line-chart.meta.js +6 -1
  46. package/dist/components/menu/menu.js +1 -1
  47. package/dist/components/meter/meter.js +53 -7
  48. package/dist/components/meter/meter.meta.js +51 -4
  49. package/dist/components/meter/meter.variants.js +43 -7
  50. package/dist/components/note/note.meta.js +5 -1
  51. package/dist/components/note/note.variants.js +4 -4
  52. package/dist/components/number-field/number-field.meta.js +2 -2
  53. package/dist/components/otp-field/otp-field.meta.js +2 -2
  54. package/dist/components/panel-group/panel-group.js +5 -8
  55. package/dist/components/pie-chart/pie-chart.meta.js +6 -1
  56. package/dist/components/radar-chart/radar-chart.meta.js +6 -1
  57. package/dist/components/radial-chart/radial-chart.meta.js +6 -1
  58. package/dist/components/reaction-picker/index.js +13 -0
  59. package/dist/components/reaction-picker/reaction-picker.js +104 -0
  60. package/dist/components/reaction-picker/reaction-picker.meta.js +156 -0
  61. package/dist/components/search-input/search-input.meta.js +11 -3
  62. package/dist/components/segmented-bar/segmented-bar.meta.js +8 -1
  63. package/dist/components/segmented-bar/segmented-bar.variants.js +7 -7
  64. package/dist/components/select/select.js +1 -1
  65. package/dist/components/select/select.meta.js +2 -2
  66. package/dist/components/sheet/sheet.js +5 -4
  67. package/dist/components/sidebar/sidebar.js +16 -1
  68. package/dist/components/sidebar/sidebar.meta.js +7 -2
  69. package/dist/components/sparkline/sparkline.meta.js +8 -1
  70. package/dist/components/status-dot/status-dot.meta.js +8 -1
  71. package/dist/components/status-dot/status-dot.variants.js +7 -7
  72. package/dist/components/stepper/stepper.meta.js +2 -1
  73. package/dist/components/stepper/stepper.variants.js +1 -1
  74. package/dist/components/table/table.meta.js +4 -4
  75. package/dist/components/textarea/textarea.js +5 -0
  76. package/dist/components/textarea/textarea.meta.js +3 -3
  77. package/dist/components/toast/toast.js +25 -13
  78. package/dist/components/toast/toast.meta.js +7 -1
  79. package/dist/file-hashes.json +112 -100
  80. package/dist/foundations/accessibility.js +5 -0
  81. package/dist/foundations/motion.js +21 -1
  82. package/dist/icon-sets/reicon.js +11 -1
  83. package/dist/index.d.ts +425 -84
  84. package/dist/index.js +11 -1
  85. package/dist/lib/chart/types.js +8 -8
  86. package/dist/lib/chart/use-arrival.js +5 -4
  87. package/dist/lib/field-shell.js +1 -1
  88. package/dist/lib/highlight-glide.js +6 -6
  89. package/dist/lib/scrub-gesture.js +6 -6
  90. package/dist/lib/taxonomy.js +2 -0
  91. package/dist/lib/use-caret-trigger.js +11 -18
  92. package/dist/lib/use-match-highlight.js +69 -0
  93. package/dist/lib/use-smooth-wheel.js +10 -8
  94. package/dist/motion/Burst.js +79 -0
  95. package/dist/motion/index.js +2 -0
  96. package/dist/presets/index.d.ts +13 -2
  97. package/dist/presets/index.js +17 -1
  98. package/dist/styles.css +241 -0
  99. package/dist/{theme-provider-CdSicAad.d.ts → theme-provider-BydfM5Z0.d.ts} +1 -1
  100. package/dist/themes/_contract.js +14 -0
  101. package/dist/themes/atelier/atelier.css +18 -0
  102. package/dist/themes/atelier/index.d.ts +1 -1
  103. package/dist/themes/contrast.js +48 -1
  104. package/dist/themes/ember/ember.css +18 -0
  105. package/dist/themes/ember/index.d.ts +1 -1
  106. package/dist/themes/index.d.ts +2 -2
  107. package/dist/themes/meridian/index.d.ts +1 -1
  108. package/dist/themes/meridian/meridian.css +18 -0
  109. package/dist/themes/poppy/index.d.ts +1 -1
  110. package/dist/themes/poppy/poppy.css +18 -0
  111. package/dist/themes/prism/index.d.ts +1 -1
  112. package/dist/themes/prism/prism.css +18 -0
  113. package/dist/themes/sable/index.d.ts +1 -1
  114. package/dist/themes/sable/sable.css +18 -0
  115. package/dist/themes/verdant/index.d.ts +1 -1
  116. package/dist/themes/verdant/verdant.css +18 -0
  117. package/llms/blocks/message-reactions-block.md +116 -0
  118. package/llms/blocks/wallet-block.md +5 -4
  119. package/llms/components/app-shell.md +72 -3
  120. package/llms/components/area-chart.md +1 -1
  121. package/llms/components/attachment.md +1 -1
  122. package/llms/components/badge.md +1 -1
  123. package/llms/components/banner.md +1 -1
  124. package/llms/components/bar-chart.md +1 -1
  125. package/llms/components/bubble.md +17 -7
  126. package/llms/components/chat-composer.md +1 -1
  127. package/llms/components/combobox.md +2 -1
  128. package/llms/components/command-menu.md +3 -2
  129. package/llms/components/date-picker.md +1 -1
  130. package/llms/components/feedback.md +2 -1
  131. package/llms/components/gradient-art.md +28 -1
  132. package/llms/components/input-group.md +1 -1
  133. package/llms/components/input.md +4 -2
  134. package/llms/components/like-button.md +91 -0
  135. package/llms/components/line-chart.md +1 -1
  136. package/llms/components/meter.md +33 -4
  137. package/llms/components/note.md +1 -1
  138. package/llms/components/number-field.md +1 -1
  139. package/llms/components/otp-field.md +1 -1
  140. package/llms/components/pie-chart.md +1 -1
  141. package/llms/components/radar-chart.md +1 -1
  142. package/llms/components/radial-chart.md +1 -1
  143. package/llms/components/reaction-picker.md +115 -0
  144. package/llms/components/search-input.md +20 -2
  145. package/llms/components/segmented-bar.md +1 -1
  146. package/llms/components/select.md +1 -1
  147. package/llms/components/sidebar.md +3 -2
  148. package/llms/components/sparkline.md +1 -1
  149. package/llms/components/status-dot.md +1 -1
  150. package/llms/components/stepper.md +1 -1
  151. package/llms/components/table.md +2 -2
  152. package/llms/components/textarea.md +2 -2
  153. package/llms/components/toast.md +2 -1
  154. package/llms/foundations/accessibility.md +1 -0
  155. package/llms/foundations/motion.md +18 -2
  156. package/llms/reference/token-intent.md +22 -2
  157. package/llms/reference/utilities.md +9 -3
  158. package/llms-full.txt +596 -61
  159. package/llms.txt +10 -7
  160. package/package.json +1 -1
  161. package/registry.json +968 -68
  162. package/scripts/lint-rules.mjs +6 -3
  163. package/targets/ios.json +18 -0
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
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';
@@ -440,6 +440,118 @@ declare namespace Presence {
440
440
  var displayName: string;
441
441
  }
442
442
 
443
+ /**
444
+ * The palette: nine colour families and a scale under every tone, generated
445
+ * for whatever theme is painting. `scripts/build-palette.mjs` writes this into
446
+ * `src/palette.css`; `palette.test.ts` holds every built-in theme to it.
447
+ *
448
+ * The contract is roles, and roles are not enough for a product. Tags, avatars,
449
+ * labels and illustration need more colours than three tones, and raw Tailwind
450
+ * steps ignore the theme, so they were banned outright. These follow it:
451
+ *
452
+ * - A **family** (red, orange, yellow, green, teal, blue, purple, pink) keeps
453
+ * its own hue and leans toward the brand by half the gap, at most 15°, and
454
+ * only as far as the brand has colour to lean toward (an ink-black primary
455
+ * pulls nothing). Material 3's harmonize, the same lean the customizer gives
456
+ * status colours. Lightness and chroma are fixed per step, fitted inside sRGB
457
+ * across the whole lean, so no brand can push a step out of gamut.
458
+ * - **neutral** is the theme's own page and ink mixed in steps, so it carries
459
+ * whatever tint the theme's surfaces do.
460
+ * - Every **tone** (tone-1…3, info, warning, success, destructive) gets a scale
461
+ * on one shared ladder of depths, and the tone lands exactly on the step
462
+ * nearest its own lightness: a light status colour in dark mode is 800, a
463
+ * mid one is 500. The steps either side stretch to keep the ladder's ends,
464
+ * so a tone near one end does not crush five steps into the little room
465
+ * left past it, and tone-1-100 and success-100 are the same depth.
466
+ *
467
+ * Steps follow the mode rather than literal lightness: a low step is always
468
+ * near the page and a high step always far from it, so 800 text on a 100
469
+ * wash reads in both modes with no `dark:` (Sable has none).
470
+ */
471
+ declare const PALETTE_STEPS: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
472
+ type PaletteStep = (typeof PALETTE_STEPS)[number];
473
+ interface PaletteFamily {
474
+ name: string;
475
+ /** The family's own hue, before the lean. */
476
+ hue: number;
477
+ /** Step 500, per mode: lightness and the chroma the family is aiming for. */
478
+ light: {
479
+ l: number;
480
+ c: number;
481
+ };
482
+ dark: {
483
+ l: number;
484
+ c: number;
485
+ };
486
+ }
487
+ declare const PALETTE_FAMILIES: readonly PaletteFamily[];
488
+ /** The hue families by name — the values Badge, Pill and StatusDot take on `tone`. */
489
+ declare const PALETTE_COLORS: readonly ["red", "orange", "yellow", "green", "teal", "blue", "purple", "pink"];
490
+ type PaletteColor = (typeof PALETTE_COLORS)[number];
491
+ declare const isPaletteColor: (value: unknown) => value is PaletteColor;
492
+ /** Tokens that get a scale of their own, `--<token>-50` … `--<token>-950`. */
493
+ declare const PALETTE_TONES: readonly ["tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
494
+ /** Everything the palette names: neutral, the families, then the tone scales. */
495
+ declare const PALETTE_SCALES: readonly ["neutral", ...string[], "tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
496
+
497
+ interface BurstProps {
498
+ /**
499
+ * Plays the burst each time this value changes. Nothing plays on mount, so
500
+ * a page that loads with a post already liked stays still. A counter that
501
+ * goes up on each "on" is the usual trigger; leave it alone on "off" so
502
+ * un-liking is quiet.
503
+ */
504
+ trigger: unknown;
505
+ /**
506
+ * The palette families the dots take in turn. The ring blooms in the host's
507
+ * `currentColor` and fades into the first. Families, not colours: the
508
+ * palette is generated from the active theme, so the confetti re-themes
509
+ * with everything else. @default ["pink", "purple", "blue", "orange"]
510
+ */
511
+ palette?: readonly PaletteColor[];
512
+ /** How many places dots fly from; each throws a pair. @default 7 */
513
+ count?: number;
514
+ /**
515
+ * Throw this instead of dots: copies of the glyph being celebrated (an
516
+ * emoji reaction), larger than a dot and with no ring, the way a reaction
517
+ * sprays its own emoji. Text only — it is repeated once per piece.
518
+ */
519
+ particle?: ReactNode;
520
+ /**
521
+ * Also play once when it mounts. For a glyph that arrives BECAUSE of the
522
+ * action — a reaction pill that did not exist until the reader chose it —
523
+ * where mounting is the change. Never for a page that loads.
524
+ * @default false
525
+ */
526
+ playOnMount?: boolean;
527
+ /** Sizing (`[--burst-size:…]`) or placement. */
528
+ className?: string;
529
+ /**
530
+ * How much motion this component uses. A burst is pure flourish, so it
531
+ * renders only at `full`: `subtle` and `off` render nothing.
532
+ */
533
+ motion?: MotionLevel;
534
+ }
535
+ /**
536
+ * Burst — the follow-through after a small celebratory toggle: a disc that
537
+ * hollows into a ring, then dots thrown outward that shrink as they go. Place
538
+ * it inside a `relative` wrapper around the glyph it celebrates, beside a
539
+ * `motion-bloom` on the glyph itself:
540
+ *
541
+ * <span className="relative inline-flex">
542
+ * <span key={likes} className={liked ? "motion-bloom" : undefined}><Icon name="heart" /></span>
543
+ * <Burst trigger={likes} />
544
+ * </span>
545
+ *
546
+ * It sizes from `--burst-size` (the ring's diameter, default 2.25em — about
547
+ * twice the glyph) and colours from the themed palette families. Decorative and
548
+ * `aria-hidden`; it draws outside its box and never takes pointer events.
549
+ * Use it for a moment of delight on an action a person chose — a like, a
550
+ * star, a finished task — never on something the system did, and never on
551
+ * every row of a list at once.
552
+ */
553
+ declare function Burst({ trigger, palette, count, particle, playOnMount, className, motion, }: BurstProps): react.JSX.Element | null;
554
+
443
555
  /** Is the cross-document/SPA View Transitions API available? */
444
556
  declare function supportsViewTransitions(): boolean;
445
557
  /**
@@ -468,7 +580,7 @@ declare namespace ViewTransitionName {
468
580
  }
469
581
 
470
582
  declare const buttonVariants: (props?: ({
471
- 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;
472
584
  size?: "icon" | "sm" | "md" | "xs" | "cta" | "icon-sm" | "icon-xs" | null | undefined;
473
585
  } & class_variance_authority_types.ClassProp) | undefined) => string;
474
586
 
@@ -643,6 +755,67 @@ declare namespace ConfirmButton {
643
755
 
644
756
  declare const confirmButtonMeta: ComponentMeta;
645
757
 
758
+ type LabelledSize = "xs" | "sm" | "md";
759
+ interface LikeButtonProps extends Omit<ButtonProps, "children" | "variant" | "size" | "iconStart" | "iconEnd" | "badge" | "loading" | "loadingLabel" | "render" | "type"> {
760
+ /** Pressed (liked), controlled. */
761
+ pressed?: boolean;
762
+ /** Pressed (liked) at first, uncontrolled. @default false */
763
+ defaultPressed?: boolean;
764
+ /** Called when a press turns it on or off, with the new state. */
765
+ onPressedChange?: (pressed: boolean, event: MouseEvent<HTMLButtonElement>) => void;
766
+ /**
767
+ * The total, shown beside the glyph and rolled when it changes. Pressing
768
+ * adds or removes the viewer's like at once, before your handler has saved
769
+ * it, and the button goes back to showing `count` exactly whenever `count`
770
+ * changes — so pass the server's total and update it when the save lands.
771
+ * Omit it for a bare glyph.
772
+ */
773
+ count?: number;
774
+ /** How to write the count — `{ notation: "compact" }` for 1.2K. Passed to `Intl.NumberFormat`. */
775
+ format?: Intl.NumberFormatOptions;
776
+ /** The glyph, by icon name. Its `solid` variant is shown while pressed. @default "heart" */
777
+ icon?: string;
778
+ /**
779
+ * The palette family the glyph fills with while pressed; the burst blooms
780
+ * from it. A family, not a colour, so it follows the theme. @default "red"
781
+ */
782
+ tone?: PaletteColor;
783
+ /** The accessible name, read before the count. @default "Like" */
784
+ label?: string;
785
+ /** @default "ghost" */
786
+ variant?: "ghost" | "outline" | "secondary";
787
+ /** @default "sm" */
788
+ size?: LabelledSize;
789
+ /**
790
+ * How much motion this component uses: `full` (default) inherits the app's
791
+ * policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
792
+ * It can only turn motion down — it never overrides a reader's reduce-motion
793
+ * setting. The bloom and burst are the flourish; the fill and the count
794
+ * changing stay.
795
+ */
796
+ motion?: MotionLevel;
797
+ }
798
+ /**
799
+ * LikeButton — a pressed-or-not toggle for a like, a star, a save. Pressing
800
+ * it on fills the glyph, which blooms past its size and settles while a ring
801
+ * and a spray of dots burst from it, and the count rolls up a digit. Pressing
802
+ * it off is quiet: the glyph empties and the count rolls back.
803
+ *
804
+ * <LikeButton count={post.likes} defaultPressed={post.liked} onPressedChange={(on) => save(on)} />
805
+ * <LikeButton icon="star" tone="yellow" label="Star" count={repo.stars} />
806
+ *
807
+ * A Sable Button carrying `aria-pressed`, with Toggle's controlled/uncontrolled
808
+ * contract (`pressed` / `defaultPressed` / `onPressedChange`). It composes
809
+ * Button rather than Toggle: Toggle's pressed fill is the one thing a like
810
+ * must not show — its state is the glyph.
811
+ */
812
+ declare function LikeButton({ className, count, format, icon, tone, label, variant, size, motion, pressed: pressedProp, defaultPressed, onPressedChange, onClick, ...props }: LikeButtonProps): react.JSX.Element;
813
+ declare namespace LikeButton {
814
+ var displayName: string;
815
+ }
816
+
817
+ declare const likeButtonMeta: ComponentMeta;
818
+
646
819
  interface CardProps extends ComponentPropsWithRef<"div"> {
647
820
  /** "default" = raised surface (bg-card + edge + soft shadow). "flat" = transparent. */
648
821
  variant?: "default" | "flat";
@@ -1306,7 +1479,9 @@ interface InputProps$1 extends Omit<ComponentPropsWithRef<"input">, "size"> {
1306
1479
  }
1307
1480
  /**
1308
1481
  * Input — a styled native `<input>`. Soft-square (rounded-sm, 8px), never a pill.
1309
- * 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.
1310
1485
  * Set `aria-invalid` (Base UI form fields do this for you) to surface the
1311
1486
  * destructive error treatment on border + ring.
1312
1487
  *
@@ -1375,7 +1550,7 @@ interface TextareaProps extends ComponentPropsWithRef<"textarea"> {
1375
1550
  }
1376
1551
  /**
1377
1552
  * Textarea — a styled native multi-line text control. Soft-square (rounded-sm,
1378
- * 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
1379
1554
  * border; the focus ring uses the --ring token. Set `aria-invalid` to surface
1380
1555
  * the destructive error treatment on border + ring (same as Input). Pass `autoResize` to grow with content.
1381
1556
  *
@@ -2452,6 +2627,12 @@ type RootProps$3 = Omit<ComponentProps<typeof Meter$1.Root>, "className"> & {
2452
2627
  strokeWidth?: number;
2453
2628
  /** Print the value in the ring's centre. */
2454
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;
2455
2636
  };
2456
2637
  /**
2457
2638
  * Meter — a static measurement within a known range, over Base UI's Meter.
@@ -2473,8 +2654,10 @@ type RootProps$3 = Omit<ComponentProps<typeof Meter$1.Root>, "className"> & {
2473
2654
  * </Meter>
2474
2655
  *
2475
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).
2476
2659
  */
2477
- 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;
2478
2661
  declare namespace Meter {
2479
2662
  var displayName: string;
2480
2663
  }
@@ -2483,7 +2666,11 @@ type TrackProps$1 = Omit<ComponentProps<typeof Meter$1.Track>, "className"> & {
2483
2666
  /** Bar thickness. Inherits the Meter's `size` unless set here. @default "md" */
2484
2667
  size?: MeterSize;
2485
2668
  };
2486
- /** 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
+ */
2487
2674
  declare function MeterTrack({ className, children, size, ...props }: TrackProps$1): react.JSX.Element;
2488
2675
  declare namespace MeterTrack {
2489
2676
  var displayName: string;
@@ -2663,9 +2850,9 @@ declare const CHART_SERIES_COUNT = 8;
2663
2850
  declare function chartColor(index: number): string;
2664
2851
  /**
2665
2852
  * The CSS colour for a tone as a chart fill — for a series that names its role
2666
- * (`tone: "success"`), not for default series (see chartColor). Tones are
2667
- * tuned to be legible as TEXT (dark, restrained); a plotted mark keeps the hue
2668
- * 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
2669
2856
  * tone (a slate "3") still reads as colour rather than grey.
2670
2857
  */
2671
2858
  declare function toneColor(tone: ChartTone): string;
@@ -4177,7 +4364,7 @@ declare const datePickerMeta: ComponentMeta;
4177
4364
  * binds it via Base UI's `toastManager` prop.
4178
4365
  */
4179
4366
  declare const toastManager: _base_ui_react.ToastManager<any>;
4180
- /** Visual/semantic type of a toast — drives the accent and (for loading) a spinner. */
4367
+ /** Visual/semantic type of a toast — drives the status glyph and (for loading) a spinner. */
4181
4368
  type ToastType = "success" | "error" | "warning" | "info" | "loading";
4182
4369
  /** Screen anchor for the toast stack. */
4183
4370
  type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
@@ -4616,7 +4803,16 @@ interface ComboboxItemGroup<Item = unknown> {
4616
4803
  /** The rows under it. */
4617
4804
  items: readonly Item[];
4618
4805
  }
4619
- 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
+ };
4620
4816
  /**
4621
4817
  * Root of the combobox. Owns selection, input value, filtering and open state —
4622
4818
  * all of it Base UI's, passed straight through.
@@ -4627,7 +4823,7 @@ type ComboboxProps<Value, Multiple extends boolean | undefined = false> = Combob
4627
4823
  * highlight is forwarded to the virtual list, which knows every row's offset
4628
4824
  * whether or not it exists. Your own `onItemHighlighted` still fires, first.
4629
4825
  */
4630
- 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;
4631
4827
  declare const ComboboxValue: typeof Combobox$1.Value;
4632
4828
  declare const ComboboxClear: react.ForwardRefExoticComponent<Omit<_base_ui_react.AutocompleteClearProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
4633
4829
  declare const ComboboxPortal: {
@@ -4706,7 +4902,7 @@ type ContentProps$2 = Omit<ComponentProps<typeof Combobox$1.Popup>, "className">
4706
4902
  * callers pass items/children directly. Defaults to the `bottom` side, `start`
4707
4903
  * aligned, 6px offset; matches the input width via `--anchor-width`.
4708
4904
  */
4709
- 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;
4710
4906
  type ItemProps$1 = Omit<ComponentProps<typeof Combobox$1.Item>, "className"> & {
4711
4907
  className?: string;
4712
4908
  };
@@ -5949,6 +6145,9 @@ declare function hueColor(h: number): string;
5949
6145
 
5950
6146
  declare const colorFieldMeta: ComponentMeta;
5951
6147
 
6148
+ /** How AppShell frames its main content on desktop. See `AppShellProps.frame`. */
6149
+ type AppShellFrame = "flush" | "inset";
6150
+
5952
6151
  interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
5953
6152
  /**
5954
6153
  * Full-width status banners pinned above the frame (offline / chain-down).
@@ -5981,6 +6180,23 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
5981
6180
  dock?: ReactNode;
5982
6181
  /** Floating overlays (a message launcher, FAB, modal mount points). */
5983
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;
5984
6200
  /** Main content. */
5985
6201
  children?: ReactNode;
5986
6202
  }
@@ -5992,7 +6208,9 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
5992
6208
  * It is layout-agnostic about the breakpoint switch: each slot component owns
5993
6209
  * its own `hidden`/`lg:*` visibility (Sidebar is `hidden lg:flex`, AppHeader and
5994
6210
  * BottomNav are `lg:hidden`), so the same shell drives mobile and desktop. The
5995
- * 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).
5996
6214
  *
5997
6215
  * <AppShell
5998
6216
  * banners={<NetworkBanner />}
@@ -6003,7 +6221,7 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
6003
6221
  * <Region max="feed">…</Region>
6004
6222
  * </AppShell>
6005
6223
  */
6006
- 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;
6007
6225
  declare namespace AppShell {
6008
6226
  var displayName: string;
6009
6227
  }
@@ -6080,6 +6298,12 @@ interface SidebarProps extends ComponentPropsWithRef<"aside"> {
6080
6298
  * - `page` — the page's own surface and ink, no border. Use it when a
6081
6299
  * full-width header sits above the rail: a tinted column that starts
6082
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.
6083
6307
  * @default "rail"
6084
6308
  */
6085
6309
  surface?: "rail" | "page";
@@ -6425,7 +6649,7 @@ interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChang
6425
6649
  }
6426
6650
  /**
6427
6651
  * SearchInput — a styled search field with a leading magnifier and a clearable
6428
- * X. Soft-square (rounded-sm), card surface, 2px focus ring — same shell as
6652
+ * X. Soft-square (rounded-sm), field surface, 2px focus ring — same shell as
6429
6653
  * Input, padded to make room for the leading and trailing affordances. The
6430
6654
  * clear button only renders while the value is non-empty.
6431
6655
  *
@@ -7532,6 +7756,14 @@ interface CommandMenuProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
7532
7756
  * self-filtering — if you own which rows exist, you own all of them.
7533
7757
  */
7534
7758
  filter?: CommandFilter;
7759
+ /**
7760
+ * Paint the query wherever it appears in a row's label, on the `highlight`
7761
+ * token pair. A literal, case-insensitive match — so under a fuzzy `filter`
7762
+ * a row that matched as a subsequence keeps an unpainted label, which is
7763
+ * honest: nothing in it reads as the query. See useMatchHighlight.
7764
+ * @default true
7765
+ */
7766
+ highlightMatches?: boolean;
7535
7767
  /**
7536
7768
  * Classes for the scrolling list, which is a `Scroller` — so `className`
7537
7769
  * (which lands on the dialog surface) cannot reach it, and the list's own
@@ -7620,7 +7852,7 @@ type CommandMenuPanelProps = Omit<CommandMenuProps, "open" | "onOpenChange" | "f
7620
7852
  * top-aligned Dialog with a combobox search header and a scrollable listbox of
7621
7853
  * command options.
7622
7854
  */
7623
- 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;
7855
+ 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;
7624
7856
  /**
7625
7857
  * The same palette rendered in place: search header, filtered and grouped
7626
7858
  * listbox, the full keyboard model — on a card in the page instead of in a
@@ -7634,7 +7866,7 @@ declare function CommandMenu({ open, onOpenChange, items, query: queryProp, onQu
7634
7866
  * once the query is empty, so a Popover around the panel still closes on it.
7635
7867
  * Choosing a row runs its onSelect and leaves the panel as it was.
7636
7868
  */
7637
- declare function CommandMenuPanel({ items, query: queryProp, onQueryChange, filter, listClassName, placeholder, emptyMessage, title, scope, inputProps, children, className, ...props }: CommandMenuPanelProps): react.JSX.Element;
7869
+ declare function CommandMenuPanel({ items, query: queryProp, onQueryChange, filter, highlightMatches, listClassName, placeholder, emptyMessage, title, scope, inputProps, children, className, ...props }: CommandMenuPanelProps): react.JSX.Element;
7638
7870
  interface CommandMenuGroupProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
7639
7871
  /** Group heading shown above the items. */
7640
7872
  label: string;
@@ -7714,7 +7946,7 @@ interface CommandMenuTriggerProps extends Omit<ComponentPropsWithRef<"button">,
7714
7946
  }
7715
7947
  /**
7716
7948
  * CommandMenuTrigger — the search field in a header that is really a button:
7717
- * it wears SearchInput's shell (border-input, card surface, leading magnifier,
7949
+ * it wears SearchInput's shell (the field fill and outline, leading magnifier,
7718
7950
  * muted placeholder) and opens a `CommandMenu` on click or on ⌘K / Ctrl+K.
7719
7951
  *
7720
7952
  * const [open, setOpen] = useState(false)
@@ -8324,6 +8556,8 @@ type ArtVariant = "mesh" | "grain";
8324
8556
 
8325
8557
  /** The decorative tones art can be painted from — the palette's `--tone-*` family. */
8326
8558
  type ArtTone = "info" | "3" | "2" | "1" | "warning";
8559
+ /** How strongly the art is painted: the preset's art as-is, or a pastel wash of it. */
8560
+ type ArtIntensity = "vivid" | "soft";
8327
8561
  interface GradientArtProps extends ComponentProps<"div"> {
8328
8562
  /**
8329
8563
  * `mesh` (default) — soft spots of colour pulled together by gentle waves
@@ -8342,6 +8576,14 @@ interface GradientArtProps extends ComponentProps<"div"> {
8342
8576
  * item keeps its own look across renders and reloads.
8343
8577
  */
8344
8578
  seed?: string | number;
8579
+ /**
8580
+ * `vivid` (default) paints the preset's art at full strength. `soft` turns
8581
+ * every colour and the ground into a light pastel of itself — a wash to
8582
+ * stage white chips, logo tiles or a card's header band on, in light and
8583
+ * dark alike. It is a light ground: put content on a card or chip over it,
8584
+ * not overlay-foreground text straight on it.
8585
+ */
8586
+ intensity?: ArtIntensity;
8345
8587
  }
8346
8588
  /**
8347
8589
  * GradientArt — placeholder artwork painted from the theme's art direction:
@@ -8358,7 +8600,7 @@ interface GradientArtProps extends ComponentProps<"div"> {
8358
8600
  *
8359
8601
  * Children render above the art: initials, a play glyph, a caption.
8360
8602
  */
8361
- declare function GradientArt({ variant, tones, seed, className, style, children, ...props }: GradientArtProps): react.JSX.Element;
8603
+ declare function GradientArt({ variant, tones, seed, intensity, className, style, children, ...props }: GradientArtProps): react.JSX.Element;
8362
8604
  declare namespace GradientArt {
8363
8605
  var displayName: string;
8364
8606
  }
@@ -8937,6 +9179,68 @@ declare namespace Message {
8937
9179
 
8938
9180
  declare const messageMeta: ComponentMeta;
8939
9181
 
9182
+ /** One choice in a reaction picker: the emoji and the name a screen reader says for it. */
9183
+ interface Reaction {
9184
+ emoji: string;
9185
+ /** The accessible name, e.g. "Heart". An emoji's own spoken name varies by platform. */
9186
+ label: string;
9187
+ }
9188
+ /** The quick set a picker offers when you pass none — the reactions most chats lead with. */
9189
+ declare const DEFAULT_REACTIONS: readonly Reaction[];
9190
+ interface ReactionChoiceProps {
9191
+ /** The choices, in order. @default DEFAULT_REACTIONS */
9192
+ reactions?: readonly Reaction[];
9193
+ /** The emoji the reader has already reacted with: shown pressed, and choosing one again removes it. */
9194
+ selected?: readonly string[];
9195
+ /** Called with the emoji the reader chose. Toggle it in or out of `selected`. */
9196
+ onSelect?: (emoji: string) => void;
9197
+ /**
9198
+ * How much motion this component uses: `full` (default) inherits the app's
9199
+ * policy, `subtle` keeps the press and drops the wave of emoji blooming in,
9200
+ * `off` stills it. It can only turn motion down.
9201
+ */
9202
+ motion?: MotionLevel;
9203
+ }
9204
+ interface ReactionPickerProps extends ReactionChoiceProps, Omit<ToolbarProps, "children" | "onSelect"> {
9205
+ /** Trailing controls after the emoji — a "more" button that opens a full picker. */
9206
+ children?: ReactNode;
9207
+ }
9208
+ /**
9209
+ * ReactionPicker — the quick row of emoji you react to a message with. A
9210
+ * toolbar: one stop in the tab order, the arrow keys move along it, and each
9211
+ * emoji is a toggle reporting `aria-pressed`. Opening it plays a short wave as
9212
+ * the emoji bloom in one after another, and the one under the pointer
9213
+ * magnifies. Put it in a Popover from an add-reaction control — or use
9214
+ * `BubbleReactionAdd`, which is exactly that — and use `MenuReactions` for the
9215
+ * same row inside a right-click menu.
9216
+ *
9217
+ * <ReactionPicker selected={mine} onSelect={(emoji) => toggle(message.id, emoji)} />
9218
+ */
9219
+ declare function ReactionPicker({ reactions, selected, onSelect, motion, className, children, "aria-label": ariaLabel, ...props }: ReactionPickerProps): react.JSX.Element;
9220
+ declare namespace ReactionPicker {
9221
+ var displayName: string;
9222
+ }
9223
+ interface MenuReactionsProps extends ReactionChoiceProps, Omit<ComponentProps<typeof Menu$1.Group>, "className" | "children" | "onSelect"> {
9224
+ className?: string;
9225
+ }
9226
+ /**
9227
+ * The same quick row as the first group of a menu — the reactions above Reply
9228
+ * and Copy when a message is right-clicked or long-pressed. Each emoji is a
9229
+ * checkbox menu item (checked when the reader has reacted with it), so the
9230
+ * arrow keys and typeahead reach it like any other row, and choosing one
9231
+ * closes the menu. Works in `MenuContent` and `ContextMenuContent` alike.
9232
+ *
9233
+ * <ContextMenuContent>
9234
+ * <MenuReactions selected={mine} onSelect={toggle} />
9235
+ * <ContextMenuSeparator />
9236
+ * <ContextMenuItem>Reply</ContextMenuItem>
9237
+ * </ContextMenuContent>
9238
+ */
9239
+ declare function MenuReactions({ reactions, selected, onSelect, motion, className, "aria-label": ariaLabel, ...props }: MenuReactionsProps): react.JSX.Element;
9240
+ declare namespace MenuReactions {
9241
+ var displayName: string;
9242
+ }
9243
+
8940
9244
  interface BubbleProps extends ComponentPropsWithRef<"div"> {
8941
9245
  /**
8942
9246
  * Surface treatment. `muted` for the other party, `primary` for the reader's
@@ -8971,8 +9275,9 @@ interface BubbleProps extends ComponentPropsWithRef<"div"> {
8971
9275
  * <Message>
8972
9276
  * <Bubble>Shipping it now.</Bubble>
8973
9277
  * <BubbleReactions>
8974
- * <BubbleReaction emoji="🎉" count={3} active onClick={() => toggle("🎉")} />
8975
- * <BubbleReaction emoji="👀" count={1} onClick={() => toggle("👀")} />
9278
+ * <BubbleReaction emoji="🎉" label="Party" count={3} active onClick={() => toggle("🎉")} />
9279
+ * <BubbleReaction emoji="👀" label="Eyes" count={1} onClick={() => toggle("👀")} />
9280
+ * <BubbleReactionAdd selected={mine} onSelect={toggle} />
8976
9281
  * </BubbleReactions>
8977
9282
  * </Message>
8978
9283
  *
@@ -8989,31 +9294,82 @@ interface BubbleReactionsProps extends ComponentPropsWithRef<"div"> {
8989
9294
  /** Match the enclosing `<Bubble align>` so the row hangs off the right edge. @default "start" */
8990
9295
  align?: "start" | "end";
8991
9296
  }
8992
- /** The row of reaction pills belonging to one bubble. */
8993
- declare function BubbleReactions({ align, className, ...props }: BubbleReactionsProps): react.JSX.Element;
9297
+ /**
9298
+ * The row of reaction pills belonging to one bubble. Render it for every
9299
+ * message, even one with no reactions yet: it hides itself while empty, and
9300
+ * staying mounted is how it knows the first reaction someone adds is new
9301
+ * (and so celebrates) rather than one the page loaded with.
9302
+ */
9303
+ declare function BubbleReactions({ align, className, children, ...props }: BubbleReactionsProps): react.JSX.Element;
8994
9304
  declare namespace BubbleReactions {
8995
9305
  var displayName: string;
8996
9306
  }
8997
9307
  interface BubbleReactionProps extends Omit<ComponentPropsWithRef<"button">, "children"> {
8998
9308
  /** The reaction glyph. Rendered as text, so any emoji works with no icon mapping. */
8999
9309
  emoji: ReactNode;
9310
+ /**
9311
+ * What the emoji means, for the accessible name ("Party, 3"). An emoji's own
9312
+ * spoken name varies by platform; without a label the pill is named by its
9313
+ * count alone.
9314
+ */
9315
+ label?: string;
9000
9316
  /** How many people reacted this way. Hidden at 1 — the pill already says "one". */
9001
9317
  count?: number;
9002
9318
  /** The reader reacted this way. Drives `aria-pressed`, not just the styling. */
9003
9319
  active?: boolean;
9320
+ /**
9321
+ * How much motion this component uses: `full` (default) inherits the app's
9322
+ * policy, `subtle` keeps the tint and the count changing and drops the
9323
+ * bloom and the spray of emoji, `off` stills it. It can only turn motion down.
9324
+ */
9325
+ motion?: MotionLevel;
9004
9326
  }
9005
9327
  /**
9006
9328
  * One reaction pill — a toggle, not a label. It reports `aria-pressed` because
9007
9329
  * "did I react to this" is state a screen-reader user needs before deciding
9008
9330
  * whether pressing it adds or removes their reaction.
9331
+ *
9332
+ * When it becomes the reader's own — pressed on, or added from a picker — the
9333
+ * emoji blooms and a spray of copies of it bursts out, the way a chat app
9334
+ * answers a reaction, and the count rolls. Pressing it off is quiet. A pill
9335
+ * the page loads with never plays.
9009
9336
  */
9010
- declare function BubbleReaction({ emoji, count, active, className, ...props }: BubbleReactionProps): react.JSX.Element;
9337
+ declare function BubbleReaction({ emoji, label, count, active, motion, className, ...props }: BubbleReactionProps): react.JSX.Element;
9011
9338
  declare namespace BubbleReaction {
9012
9339
  var displayName: string;
9013
9340
  }
9341
+ interface BubbleReactionAddProps extends Omit<ComponentPropsWithRef<"button">, "children" | "onSelect"> {
9342
+ /** The choices the picker offers. @default DEFAULT_REACTIONS */
9343
+ reactions?: readonly Reaction[];
9344
+ /** The emoji the reader has already reacted with, shown pressed in the picker. */
9345
+ selected?: readonly string[];
9346
+ /** Called with the emoji the reader chose; the picker closes. Toggle it in or out of `selected`. */
9347
+ onSelect?: (emoji: string) => void;
9348
+ /** The accessible name. @default "Add reaction" */
9349
+ label?: string;
9350
+ /** Passed to the picker: how much motion it uses. */
9351
+ motion?: MotionLevel;
9352
+ }
9353
+ /**
9354
+ * The add-reaction pill at the end of a reaction row: a smiley that opens a
9355
+ * ReactionPicker above it. Choosing an emoji closes the picker and hands the
9356
+ * emoji to `onSelect`; add it to the row and the new pill celebrates as it
9357
+ * arrives.
9358
+ *
9359
+ * <BubbleReactions>
9360
+ * {pills}
9361
+ * <BubbleReactionAdd selected={mine} onSelect={toggle} />
9362
+ * </BubbleReactions>
9363
+ */
9364
+ declare function BubbleReactionAdd({ reactions, selected, onSelect, label, motion, className, ...props }: BubbleReactionAddProps): react.JSX.Element;
9365
+ declare namespace BubbleReactionAdd {
9366
+ var displayName: string;
9367
+ }
9014
9368
 
9015
9369
  declare const bubbleMeta: ComponentMeta;
9016
9370
 
9371
+ declare const reactionPickerMeta: ComponentMeta;
9372
+
9017
9373
  interface AttachmentProps extends Omit<ComponentPropsWithRef<"div">, "onClick"> {
9018
9374
  /**
9019
9375
  * File name. When it runs out of room the stem truncates and the extension
@@ -9397,6 +9753,45 @@ declare function usePresentation(): Presentation;
9397
9753
  */
9398
9754
  declare function useScrollActivity(): (node: HTMLElement | null) => void;
9399
9755
 
9756
+ /**
9757
+ * useMatchHighlight — paint every occurrence of a query inside a region, without
9758
+ * touching the region's DOM.
9759
+ *
9760
+ * const results = useMatchHighlight<HTMLUListElement>(query)
9761
+ * <SearchInput value={query} onValueChange={setQuery} />
9762
+ * <ul ref={results}>{rows}</ul>
9763
+ *
9764
+ * The obvious way to mark a match is to split the label around it and wrap the
9765
+ * hit in a `<mark>`. That means every row renders its label as three nodes, the
9766
+ * component owning the row has to know the query, and the text a screen reader
9767
+ * walks is cut into fragments. The CSS Custom Highlight API marks a Range
9768
+ * instead: the text nodes stay exactly as React rendered them, and the paint is
9769
+ * `::highlight(sable-match)` in styles.css, on the `highlight` token pair —
9770
+ * whose stated intent is search hits.
9771
+ *
9772
+ * Returns a callback ref rather than taking a ref object, because the regions
9773
+ * this is for (a popup list, a results panel) usually mount after the component
9774
+ * holding the query does, and an effect keyed on the query never sees a ref
9775
+ * object fill in.
9776
+ *
9777
+ * Matching is case-insensitive and literal, within one text node: a match split
9778
+ * across elements (`<b>Re</b>port`) is not painted. That is the same text the
9779
+ * built-in filters compare, so whatever survives a substring filter is lit.
9780
+ * `selector` narrows the search to parts of the region — a row's label and not
9781
+ * its shortcut hint.
9782
+ *
9783
+ * Purely visual, and that is fine here: the query is already in the field, and
9784
+ * the row's accessible name is unchanged. Where the API is missing it does
9785
+ * nothing at all.
9786
+ */
9787
+ declare function useMatchHighlight<T extends Element = HTMLElement>(query: string, options?: UseMatchHighlightOptions): (element: T | null) => void;
9788
+ interface UseMatchHighlightOptions {
9789
+ /** Only search inside elements matching this, within the region. */
9790
+ selector?: string;
9791
+ /** Turn the paint off without unmounting anything. @default true */
9792
+ enabled?: boolean;
9793
+ }
9794
+
9400
9795
  interface UseCopyOptions {
9401
9796
  /** How long `copied` stays true after a successful copy, in ms. @default 1500 */
9402
9797
  timeout?: number;
@@ -9485,60 +9880,6 @@ interface SmoothWheelOptions {
9485
9880
  */
9486
9881
  declare function useSmoothWheel({ axis, mapVertical, smooth, }?: SmoothWheelOptions): (node: HTMLElement | null) => void;
9487
9882
 
9488
- /**
9489
- * The palette: nine colour families and a scale under every tone, generated
9490
- * for whatever theme is painting. `scripts/build-palette.mjs` writes this into
9491
- * `src/palette.css`; `palette.test.ts` holds every built-in theme to it.
9492
- *
9493
- * The contract is roles, and roles are not enough for a product. Tags, avatars,
9494
- * labels and illustration need more colours than three tones, and raw Tailwind
9495
- * steps ignore the theme, so they were banned outright. These follow it:
9496
- *
9497
- * - A **family** (red, orange, yellow, green, teal, blue, purple, pink) keeps
9498
- * its own hue and leans toward the brand by half the gap, at most 15°, and
9499
- * only as far as the brand has colour to lean toward (an ink-black primary
9500
- * pulls nothing). Material 3's harmonize, the same lean the customizer gives
9501
- * status colours. Lightness and chroma are fixed per step, fitted inside sRGB
9502
- * across the whole lean, so no brand can push a step out of gamut.
9503
- * - **neutral** is the theme's own page and ink mixed in steps, so it carries
9504
- * whatever tint the theme's surfaces do.
9505
- * - Every **tone** (tone-1…3, info, warning, success, destructive) gets a scale
9506
- * on one shared ladder of depths, and the tone lands exactly on the step
9507
- * nearest its own lightness: a light status colour in dark mode is 800, a
9508
- * mid one is 500. The steps either side stretch to keep the ladder's ends,
9509
- * so a tone near one end does not crush five steps into the little room
9510
- * left past it, and tone-1-100 and success-100 are the same depth.
9511
- *
9512
- * Steps follow the mode rather than literal lightness: a low step is always
9513
- * near the page and a high step always far from it, so 800 text on a 100
9514
- * wash reads in both modes with no `dark:` (Sable has none).
9515
- */
9516
- declare const PALETTE_STEPS: readonly [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];
9517
- type PaletteStep = (typeof PALETTE_STEPS)[number];
9518
- interface PaletteFamily {
9519
- name: string;
9520
- /** The family's own hue, before the lean. */
9521
- hue: number;
9522
- /** Step 500, per mode: lightness and the chroma the family is aiming for. */
9523
- light: {
9524
- l: number;
9525
- c: number;
9526
- };
9527
- dark: {
9528
- l: number;
9529
- c: number;
9530
- };
9531
- }
9532
- declare const PALETTE_FAMILIES: readonly PaletteFamily[];
9533
- /** The hue families by name — the values Badge, Pill and StatusDot take on `tone`. */
9534
- declare const PALETTE_COLORS: readonly ["red", "orange", "yellow", "green", "teal", "blue", "purple", "pink"];
9535
- type PaletteColor = (typeof PALETTE_COLORS)[number];
9536
- declare const isPaletteColor: (value: unknown) => value is PaletteColor;
9537
- /** Tokens that get a scale of their own, `--<token>-50` … `--<token>-950`. */
9538
- declare const PALETTE_TONES: readonly ["tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
9539
- /** Everything the palette names: neutral, the families, then the tone scales. */
9540
- declare const PALETTE_SCALES: readonly ["neutral", ...string[], "tone-1", "tone-2", "tone-3", "tone-info", "tone-warning", "success", "destructive"];
9541
-
9542
- declare const SABLE_UI_VERSION: "0.14.0";
9883
+ declare const SABLE_UI_VERSION: "0.16.0";
9543
9884
 
9544
- 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, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, 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, 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, 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, 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, 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, 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, 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 };
9885
+ 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, 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 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, 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, useMatchHighlight, useMotion, useMotionLevel, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useShake, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };