@sableui/react 0.17.0 → 0.19.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 (154) hide show
  1. package/AGENTS.md +10 -3
  2. package/CHANGELOG.md +235 -0
  3. package/README.md +11 -4
  4. package/bin/sable.mjs +266 -30
  5. package/dist/{_contract-CDa9-NdB.d.ts → _contract-DlklV0Im.d.ts} +2 -2
  6. package/dist/activity-DT8VK9fx.d.ts +25 -0
  7. package/dist/adapters/github.d.ts +41 -0
  8. package/dist/adapters/github.js +24 -0
  9. package/dist/blocks/index.d.ts +1 -1
  10. package/dist/components/activity-heatmap/activity-heatmap.js +420 -0
  11. package/dist/components/activity-heatmap/activity-heatmap.meta.js +142 -0
  12. package/dist/components/activity-heatmap/index.js +9 -0
  13. package/dist/components/avatar/avatar.js +16 -7
  14. package/dist/components/avatar/avatar.meta.js +43 -10
  15. package/dist/components/avatar/avatar.variants.js +26 -2
  16. package/dist/components/code-block/code-block.js +5 -3
  17. package/dist/components/code-block/code-block.meta.js +6 -0
  18. package/dist/components/collapsible/collapsible.js +6 -5
  19. package/dist/components/collapsible/collapsible.meta.js +14 -5
  20. package/dist/components/data-table/data-table.js +132 -45
  21. package/dist/components/data-table/data-table.meta.js +63 -4
  22. package/dist/components/date-picker/date-picker.js +13 -6
  23. package/dist/components/date-picker/date-picker.meta.js +22 -0
  24. package/dist/components/dialog/dialog.js +25 -5
  25. package/dist/components/dialog/dialog.meta.js +26 -5
  26. package/dist/components/media-image/media-image.js +3 -1
  27. package/dist/components/media-image/media-image.meta.js +15 -1
  28. package/dist/components/media-tile/media-tile.js +13 -1
  29. package/dist/components/media-tile/media-tile.meta.js +10 -0
  30. package/dist/components/menu/menu.js +2 -0
  31. package/dist/components/menu/menu.meta.js +2 -2
  32. package/dist/components/page-header/page-header.js +9 -4
  33. package/dist/components/page-header/page-header.meta.js +26 -1
  34. package/dist/components/panel-group/panel-group.js +17 -1
  35. package/dist/components/panel-group/panel-group.meta.js +43 -3
  36. package/dist/components/pill/pill.meta.js +15 -6
  37. package/dist/components/pill/pill.variants.js +1 -0
  38. package/dist/components/search-input/search-input.js +30 -5
  39. package/dist/components/search-input/search-input.meta.js +29 -4
  40. package/dist/components/section-header/section-header.js +27 -17
  41. package/dist/components/section-header/section-header.meta.js +27 -5
  42. package/dist/components/sheet/sheet.js +15 -3
  43. package/dist/components/sheet/sheet.meta.js +2 -2
  44. package/dist/components/side-nav/side-nav.variants.js +8 -3
  45. package/dist/components/sidebar/index.js +4 -0
  46. package/dist/components/sidebar/sidebar.js +90 -11
  47. package/dist/components/sidebar/sidebar.meta.js +38 -4
  48. package/dist/components/table/table.js +7 -3
  49. package/dist/components/tabs/tabs.js +10 -2
  50. package/dist/components/tabs/tabs.meta.js +4 -0
  51. package/dist/components/workspace/workspace.js +13 -3
  52. package/dist/components/workspace/workspace.meta.js +109 -1
  53. package/dist/file-hashes.json +94 -80
  54. package/dist/foundations/typography.js +13 -0
  55. package/dist/icon/Icon.js +21 -2
  56. package/dist/icon/index.d.ts +36 -1
  57. package/dist/icon/index.js +5 -0
  58. package/dist/icon/names.js +240 -0
  59. package/dist/icon-sets/reicon.js +41 -1
  60. package/dist/index.d.ts +540 -75
  61. package/dist/index.js +18 -1
  62. package/dist/layout/AspectBox.js +2 -5
  63. package/dist/layout/Bleed.js +10 -6
  64. package/dist/layout/Center.js +11 -3
  65. package/dist/layout/Columns.js +6 -3
  66. package/dist/layout/Grid.js +14 -6
  67. package/dist/layout/GridOverlay.js +7 -7
  68. package/dist/layout/Region.js +18 -3
  69. package/dist/layout/Row.js +27 -20
  70. package/dist/layout/Spacer.js +13 -2
  71. package/dist/layout/SplitPane.js +1 -1
  72. package/dist/layout/Stack.js +25 -18
  73. package/dist/layout/index.d.ts +57 -6
  74. package/dist/lib/chart/activity.js +32 -0
  75. package/dist/lib/chart/calendar.js +67 -0
  76. package/dist/lib/chart/chart-tooltip.js +2 -2
  77. package/dist/lib/chart/heat.js +55 -0
  78. package/dist/lib/cn.js +1 -0
  79. package/dist/lib/focus-return.js +53 -0
  80. package/dist/lib/taxonomy.js +1 -0
  81. package/dist/lib/use-media-query.js +41 -0
  82. package/dist/{meta-DX5r5wQL.d.ts → meta-Dfm9AExe.d.ts} +6 -0
  83. package/dist/patterns/dashboard-page.js +23 -17
  84. package/dist/patterns/index.d.ts +7 -2
  85. package/dist/patterns/index.js +5 -1
  86. package/dist/patterns/tracker-page.js +392 -0
  87. package/dist/patterns/tracker-page.meta.js +40 -0
  88. package/dist/presets/index.d.ts +1 -1
  89. package/dist/styles.css +301 -188
  90. package/dist/{theme-provider-BydfM5Z0.d.ts → theme-provider-BUBealk_.d.ts} +1 -1
  91. package/dist/themes/_contract.js +9 -1
  92. package/dist/themes/atelier/index.d.ts +1 -1
  93. package/dist/themes/ember/index.d.ts +1 -1
  94. package/dist/themes/index.d.ts +2 -2
  95. package/dist/themes/meridian/index.d.ts +1 -1
  96. package/dist/themes/poppy/index.d.ts +1 -1
  97. package/dist/themes/prism/index.d.ts +1 -1
  98. package/dist/themes/sable/index.d.ts +1 -1
  99. package/dist/themes/verdant/index.d.ts +1 -1
  100. package/llms/components/activity-heatmap.md +133 -0
  101. package/llms/components/avatar.md +32 -9
  102. package/llms/components/code-block.md +1 -0
  103. package/llms/components/collapsible.md +12 -4
  104. package/llms/components/data-table.md +40 -3
  105. package/llms/components/date-picker.md +15 -1
  106. package/llms/components/dialog.md +34 -3
  107. package/llms/components/media-image.md +12 -0
  108. package/llms/components/media-tile.md +21 -0
  109. package/llms/components/menu.md +1 -1
  110. package/llms/components/page-header.md +16 -1
  111. package/llms/components/panel-group.md +34 -2
  112. package/llms/components/pill.md +24 -5
  113. package/llms/components/search-input.md +37 -4
  114. package/llms/components/section-header.md +28 -4
  115. package/llms/components/sheet.md +2 -2
  116. package/llms/components/sidebar.md +17 -4
  117. package/llms/components/tabs.md +1 -0
  118. package/llms/components/workspace.md +81 -1
  119. package/llms/foundations/typography.md +4 -1
  120. package/llms/layout/aspect-box.md +1 -1
  121. package/llms/layout/bleed.md +1 -1
  122. package/llms/layout/center.md +1 -1
  123. package/llms/layout/columns.md +1 -1
  124. package/llms/layout/grid.md +1 -1
  125. package/llms/layout/region.md +1 -1
  126. package/llms/layout/row.md +9 -1
  127. package/llms/layout/spacer.md +1 -1
  128. package/llms/layout/split-pane.md +1 -1
  129. package/llms/layout/stack.md +1 -1
  130. package/llms/patterns/dashboard-page.md +18 -15
  131. package/llms/patterns/tracker-page.md +450 -0
  132. package/llms/reference/token-intent.md +3 -1
  133. package/llms/reference/utilities.md +4 -1
  134. package/llms/tasks/auditing-an-app.md +35 -1
  135. package/llms/tasks/building-a-page.md +3 -2
  136. package/llms/tasks/building-a-tool.md +101 -5
  137. package/llms/tasks/building-with-sable.md +11 -3
  138. package/llms/tasks/creating-a-preset.md +9 -0
  139. package/llms/tasks/getting-started.md +10 -3
  140. package/llms/tasks/using-presets.md +1 -2
  141. package/llms-full.txt +1215 -89
  142. package/llms.txt +11 -9
  143. package/package.json +7 -1
  144. package/registry.json +1021 -70
  145. package/scripts/adoption.mjs +252 -0
  146. package/scripts/agent-setup.mjs +110 -18
  147. package/scripts/app-css.mjs +129 -0
  148. package/scripts/grade.mjs +178 -2
  149. package/scripts/lint-rules.mjs +126 -0
  150. package/scripts/wiring.mjs +2 -1
  151. package/skills/entry/SKILL.md +1 -1
  152. package/skills/sable/SKILL.md +64 -6
  153. package/skills/sable/agents/openai.yaml +1 -1
  154. package/targets/ios.json +9 -0
package/dist/index.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import { ClassValue } from 'clsx';
2
- import { C as ComponentMeta } from './meta-DX5r5wQL.js';
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-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
- 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
- export { Icon, IconContextValue, IconProps, IconProvider, IconProviderProps, composeIconSets, useIconSet } from './icon/index.js';
2
+ import { C as ComponentMeta } from './meta-Dfm9AExe.js';
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-Dfm9AExe.js';
4
+ import { T as ThemeManifest, a as ThemeMode$1 } from './_contract-DlklV0Im.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-DlklV0Im.js';
6
+ import { T as ThemeId } from './theme-provider-BUBealk_.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-BUBealk_.js';
8
+ import { Breakpoint } from './layout/index.js';
9
+ export { AspectBox, AspectBoxProps, Bleed, BleedProps, 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';
10
+ export { ICON_ALIASES, ICON_NAMES, Icon, IconContextValue, IconName, IconProps, IconProvider, IconProviderProps, composeIconSets, nearestIconNames, resolveIconAlias, useIconSet } from './icon/index.js';
10
11
  export { a as IconRenderProps, I as IconSet, b as IconVariant } from './registry-CyL28OzJ.js';
11
12
  import * as react from 'react';
12
- import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, RefObject, FormEvent } from 'react';
13
+ import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, RefObject, FormEvent, CSSProperties } from 'react';
13
14
  import { VariantProps } from 'class-variance-authority';
14
15
  import { useRender } from '@base-ui/react/use-render';
15
16
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -27,6 +28,8 @@ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
27
28
  import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
28
29
  import { Progress as Progress$1 } from '@base-ui/react/progress';
29
30
  import { Meter as Meter$1 } from '@base-ui/react/meter';
31
+ import { a as ActivityData } from './activity-DT8VK9fx.js';
32
+ export { A as ActivityDay, m as mergeActivity } from './activity-DT8VK9fx.js';
30
33
  import { Toggle as Toggle$1 } from '@base-ui/react/toggle';
31
34
  import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
32
35
  import { Toolbar as Toolbar$1 } from '@base-ui/react/toolbar';
@@ -1126,6 +1129,11 @@ type SubmenuTriggerProps = Omit<ComponentProps<typeof Menu$1.SubmenuTrigger>, "c
1126
1129
  className?: string;
1127
1130
  /** Trailing value shown before the chevron — the current choice, usually. */
1128
1131
  value?: ComponentProps<"span">["children"];
1132
+ /**
1133
+ * Leading icon, as MenuItem's: a submenu row among items that have icons
1134
+ * takes one too, or its label starts a column left of theirs.
1135
+ */
1136
+ icon?: ReactNode;
1129
1137
  };
1130
1138
  /**
1131
1139
  * The row that opens a submenu. Styled as a MenuItem plus a trailing chevron,
@@ -1133,7 +1141,7 @@ type SubmenuTriggerProps = Omit<ComponentProps<typeof Menu$1.SubmenuTrigger>, "c
1133
1141
  * as `Effort High ›` rather than making the reader open each row to find out
1134
1142
  * what is set.
1135
1143
  */
1136
- declare function MenuSubmenuTrigger({ className, children, value, ...props }: SubmenuTriggerProps): react.JSX.Element;
1144
+ declare function MenuSubmenuTrigger({ className, children, value, icon, ...props }: SubmenuTriggerProps): react.JSX.Element;
1137
1145
  /**
1138
1146
  * A single-choice group inside a menu. Controlled via `value`/`onValueChange`,
1139
1147
  * uncontrolled via `defaultValue`.
@@ -1251,7 +1259,7 @@ declare const BADGE_APPEARANCES: readonly ["soft", "outline", "solid", "overlay"
1251
1259
  type BadgeAppearance = (typeof BADGE_APPEARANCES)[number];
1252
1260
  declare const badgeVariants: (props?: ({
1253
1261
  appearance?: "overlay" | "outline" | "solid" | "soft" | "plain" | null | undefined;
1254
- tone?: "1" | "2" | "3" | "destructive" | "success" | "blue" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "neutral" | "warning" | "info" | null | undefined;
1262
+ tone?: "1" | "2" | "3" | "destructive" | "success" | "blue" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "info" | "warning" | "neutral" | null | undefined;
1255
1263
  size?: "sm" | "md" | null | undefined;
1256
1264
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1257
1265
 
@@ -1315,8 +1323,13 @@ declare const badgeMeta: ComponentMeta;
1315
1323
  * <img src="…" alt="Studio, 2026" className="max-h-full max-w-full object-contain" />
1316
1324
  * </DialogContent>
1317
1325
  * </Dialog>
1326
+ *
1327
+ * Opened from your own button through controlled `open`, with no DialogTrigger,
1328
+ * it still returns focus to that button on close: the root records whatever
1329
+ * held focus when `open` turned true and makes it DialogContent's default
1330
+ * `finalFocus` (lib/focus-return has the why). An explicit `finalFocus` wins.
1318
1331
  */
1319
- declare const Dialog: typeof Dialog$1.Root;
1332
+ declare function Dialog<Payload = unknown>({ open, onOpenChange, ...props }: Dialog$1.Root.Props<Payload>): react.JSX.Element;
1320
1333
  declare const DialogTrigger: Dialog$1.Trigger;
1321
1334
  declare const DialogClose: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1322
1335
  declare const DialogPortal: {
@@ -1368,9 +1381,20 @@ type PopupProps$1 = Omit<ComponentProps<typeof Dialog$1.Popup>, "className"> & {
1368
1381
  * children directly and the media sizes itself to the viewport.
1369
1382
  */
1370
1383
  scroll?: boolean;
1384
+ /**
1385
+ * Keep the content mounted while the dialog is closed, hidden, instead of
1386
+ * unmounting it. Opt in for a draft the user may come back to: a half-written
1387
+ * form closed by Esc or a stray click keeps its fields (typed values, React
1388
+ * state, scroll position) when it reopens. Leave it off otherwise: a dialog
1389
+ * that should start fresh each time, or one with live content (polling,
1390
+ * video), should not keep running behind a closed door. Reset the draft
1391
+ * yourself once it is submitted or discarded.
1392
+ * @default false
1393
+ */
1394
+ keepMounted?: boolean;
1371
1395
  };
1372
1396
  /** Backdrop + popup surface. Renders through a portal. */
1373
- declare function DialogContent({ size, showCloseButton, scroll, ...props }: PopupProps$1): react.JSX.Element;
1397
+ declare function DialogContent({ size, showCloseButton, scroll, finalFocus, ref, ...props }: PopupProps$1): react.JSX.Element;
1374
1398
  type TitleProps$3 = Omit<ComponentProps<typeof Dialog$1.Title>, "className"> & {
1375
1399
  className?: string;
1376
1400
  };
@@ -1404,7 +1428,7 @@ declare function DialogFooter({ className, ...props }: ComponentProps<"div">): r
1404
1428
  * </AlertDialogContent>
1405
1429
  * </AlertDialog>
1406
1430
  */
1407
- declare const AlertDialog: typeof AlertDialog$1.Root;
1431
+ declare function AlertDialog<Payload = unknown>({ open, onOpenChange, ...props }: AlertDialog$1.Root.Props<Payload>): react.JSX.Element;
1408
1432
  declare const AlertDialogTrigger: AlertDialog$1.Trigger;
1409
1433
  declare const AlertDialogClose: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1410
1434
  declare const AlertDialogContent: typeof DialogContent;
@@ -2053,22 +2077,9 @@ declare namespace TooltipGroup {
2053
2077
 
2054
2078
  declare const tooltipMeta: ComponentMeta;
2055
2079
 
2056
- /**
2057
- * Avatar root — a circular, fixed-size frame that clips its image. The only axis
2058
- * is `size`, which sets the square footprint; the image and fallback inherit it.
2059
- * `bg-muted` is the resting surface shown behind a loading or missing image.
2060
- * Each size also sets the tier its initials (and a group's "+N") take, so the
2061
- * initials grow with the circle instead of one 12px label at every size. They
2062
- * hold roughly 30% of the diameter all the way up: the label tiers cover the
2063
- * row sizes; past them the initials are a mark standing in for a face — type
2064
- * as image — so the portrait sizes borrow heading-2 (28px in 96) and display-lg
2065
- * (48px in 160), the tiers built to be read as a shape at that size.
2066
- *
2067
- * `xl` and `2xl` are portrait sizes — a profile header, an artist hero, a
2068
- * roster tile — not row sizes, so AvatarGroup stops at `lg`.
2069
- */
2070
2080
  declare const avatarVariants: (props?: ({
2071
- size?: "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
2081
+ size?: "sm" | "md" | "lg" | "xl" | "2xl" | "xs" | "2xs" | null | undefined;
2082
+ shape?: "square" | "circle" | null | undefined;
2072
2083
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2073
2084
  /**
2074
2085
  * AvatarGroup — an overlapping stack. Each child is pulled left by about an
@@ -2083,7 +2094,7 @@ declare const avatarVariants: (props?: ({
2083
2094
  * cases.
2084
2095
  */
2085
2096
  declare const avatarGroupVariants: (props?: ({
2086
- size?: "sm" | "md" | "lg" | null | undefined;
2097
+ size?: "sm" | "md" | "lg" | "xs" | "2xs" | null | undefined;
2087
2098
  surface?: "card" | "background" | "popover" | "muted" | null | undefined;
2088
2099
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2089
2100
 
@@ -2098,13 +2109,22 @@ declare const avatarGroupVariants: (props?: ({
2098
2109
  *
2099
2110
  * <Avatar src={user.pfp} alt={user.name} fallback="AM" size="lg" />
2100
2111
  */
2112
+ /** The fallback's colour: the muted surface, or a palette family's wash and ink. */
2113
+ type AvatarTone = "neutral" | PaletteColor;
2101
2114
  type RootProps$5 = Omit<ComponentProps<typeof Avatar$1.Root>, "className"> & VariantProps<typeof avatarVariants> & {
2115
+ /**
2116
+ * Paint the resting surface from a palette family instead of the muted
2117
+ * grey: its wash behind, its deep ink on the initials — the pair a soft
2118
+ * Badge uses, held to contrast in every theme. For a category colour (a
2119
+ * project, a workspace, a team) that should not read as a status.
2120
+ */
2121
+ tone?: AvatarTone;
2102
2122
  className?: string;
2103
2123
  };
2104
2124
  /** The row sizes. `xl`/`2xl` are portraits, which are never stacked. */
2105
2125
  type AvatarGroupSize = NonNullable<VariantProps<typeof avatarGroupVariants>["size"]>;
2106
- /** The circular frame. Clips the image; holds the `size` axis. */
2107
- declare function AvatarRoot({ size, className, ...props }: RootProps$5): react.JSX.Element;
2126
+ /** The frame. Clips the image; holds the `size`, `shape` and `tone` axes. */
2127
+ declare function AvatarRoot({ size, shape, tone, className, ...props }: RootProps$5): react.JSX.Element;
2108
2128
  declare namespace AvatarRoot {
2109
2129
  var displayName: string;
2110
2130
  }
@@ -2158,7 +2178,7 @@ interface AvatarProps extends RootProps$5 {
2158
2178
  * The ergonomic, all-in-one avatar. Composes Root + Image + Fallback from simple
2159
2179
  * props. Pass `src`/`alt` for the picture and `fallback` for the resting state.
2160
2180
  */
2161
- declare function Avatar({ src, alt, fallback, fallbackDelay, size, status, variant, seed, className, ...props }: AvatarProps): react.JSX.Element;
2181
+ declare function Avatar({ src, alt, fallback, fallbackDelay, size, shape, tone, status, variant, seed, className, ...props }: AvatarProps): react.JSX.Element;
2162
2182
  declare namespace Avatar {
2163
2183
  var displayName: string;
2164
2184
  }
@@ -2180,7 +2200,8 @@ declare namespace AvatarGroupCount {
2180
2200
  }
2181
2201
  interface AvatarGroupProps extends Omit<ComponentProps<"div">, "className"> {
2182
2202
  /**
2183
- * Size of every avatar in the group: 32px / 40px / 48px. Overrides each
2203
+ * Size of every avatar in the group: 20px / 24px for dense rows, 32px /
2204
+ * 40px / 48px otherwise. Overrides each
2184
2205
  * child's own size. The portrait sizes (`xl`, `2xl`) are not offered: a
2185
2206
  * stack is a row-sized summary of people, never a set of portraits.
2186
2207
  */
@@ -2777,7 +2798,7 @@ declare const numberTickerMeta: ComponentMeta;
2777
2798
  * failed).
2778
2799
  */
2779
2800
  declare const segmentedBarSegmentVariants: (props?: ({
2780
- tone?: "1" | "2" | "3" | "primary" | "destructive" | "success" | "neutral" | "warning" | "info" | null | undefined;
2801
+ tone?: "1" | "2" | "3" | "primary" | "destructive" | "success" | "info" | "warning" | "neutral" | null | undefined;
2781
2802
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2782
2803
  /** Bar thickness — the same three rails as Meter and Progress. */
2783
2804
  declare const segmentedBarVariants: (props?: ({
@@ -3244,6 +3265,172 @@ declare namespace Sparkline {
3244
3265
 
3245
3266
  declare const sparklineMeta: ComponentMeta;
3246
3267
 
3268
+ /**
3269
+ * Levels and colour for a heatmap: how a value becomes one of a few steps, and
3270
+ * what each step looks like on the active theme.
3271
+ */
3272
+ /** What a scale function is told about the data it is scaling. */
3273
+ interface ActivityStats {
3274
+ /** The smallest positive value. */
3275
+ min: number;
3276
+ /** The largest value. */
3277
+ max: number;
3278
+ /** How many levels there are, including the empty level 0. */
3279
+ levels: number;
3280
+ }
3281
+ /**
3282
+ * How a value becomes a level. `"quantile"` splits the positive values evenly
3283
+ * between the levels above 0, as GitHub does, so one outlier does not wash the
3284
+ * rest out. `"linear"` divides 0…max evenly. An array gives the lower bound of
3285
+ * each level from 1 up; a function decides for itself.
3286
+ */
3287
+ type ActivityScale = "quantile" | "linear" | number[] | ((value: number, stats: ActivityStats) => number);
3288
+ interface ActivityLevels {
3289
+ /** The lower bound of each level from 1 up (`thresholds[0]` is level 1). Empty for a scale function. */
3290
+ thresholds: number[];
3291
+ /** The level of a value: 0 for nothing, up to `levels - 1`. */
3292
+ level: (value: number) => number;
3293
+ }
3294
+ /**
3295
+ * The levels for a set of values. Zero and negative values are always level 0;
3296
+ * any positive value is at least level 1, so a day with activity never reads as
3297
+ * a day without it.
3298
+ */
3299
+ declare function activityLevels(values: number[], { levels, scale }?: {
3300
+ levels?: number;
3301
+ scale?: ActivityScale;
3302
+ }): ActivityLevels;
3303
+
3304
+ /** A day as the heatmap resolved it — what `tooltip`, `renderCell` and the callbacks receive. */
3305
+ interface ActivityHeatmapDay {
3306
+ date: string;
3307
+ value: number;
3308
+ level: number;
3309
+ category?: string;
3310
+ }
3311
+ /** What `renderCell` is told about the cell it draws into. */
3312
+ interface ActivityHeatmapCell {
3313
+ level: number;
3314
+ /** The cell's fill, as a CSS colour. */
3315
+ color: string;
3316
+ /** The cell's edge length in px. */
3317
+ size: number;
3318
+ }
3319
+ interface ActivityHeatmapProps extends Omit<ComponentPropsWithRef<"figure">, "children"> {
3320
+ /** What the grid shows ("Contributions in 2026") — its caption and accessible name. */
3321
+ label: string;
3322
+ /** The days, as a list or a map of date to value. Sparse is fine; a missing day is 0. */
3323
+ data: ActivityData;
3324
+ /** First day drawn, "YYYY-MM-DD". @default 53 weeks before `end`, from the start of that week */
3325
+ start?: string;
3326
+ /** Last day drawn, "YYYY-MM-DD". @default today */
3327
+ end?: string;
3328
+ /** Draw Jan 1 – Dec 31 of this year. Wins over `start` / `end`. */
3329
+ year?: number;
3330
+ /** 0 puts Sunday on top, 1 Monday. @default the locale's */
3331
+ weekStart?: 0 | 1;
3332
+ /** How many levels, including the empty level 0. @default 5 */
3333
+ levels?: number;
3334
+ /** How a value becomes a level. A day's own `level` always wins. @default "quantile" */
3335
+ levelScale?: ActivityScale;
3336
+ /** The hue of the intensity ramp. Decorative tones lead; `"success"` gives the GitHub look. @default "1" */
3337
+ tone?: ChartTone;
3338
+ /** Colour cells by `day.category` instead of one ramp — a label and tone (or colour) per key. */
3339
+ categories?: ChartCategories;
3340
+ /** Names the value in the tooltip and each cell's name: "contributions", or `{ one, other }` to pluralise. */
3341
+ unit?: string | {
3342
+ one: string;
3343
+ other: string;
3344
+ };
3345
+ /** Formats a value. @default in full up to 9,999, compact past it */
3346
+ formatValue?: (value: number) => string;
3347
+ /** Show a tooltip on hover, focus and tap; a function replaces its content. @default true */
3348
+ tooltip?: boolean | ((day: ActivityHeatmapDay) => ReactNode);
3349
+ /** The Less–More ramp, or swatches for categories. @default true */
3350
+ legend?: boolean;
3351
+ /** The ramp's end words. @default ["Less", "More"] */
3352
+ legendLabels?: [string, string];
3353
+ /** Short month names over each month's first week. @default true */
3354
+ monthLabels?: boolean;
3355
+ /** Which weekday names to show beside the rows. @default "alternate" (Mon, Wed, Fri) */
3356
+ weekdayLabels?: "alternate" | "all" | "none";
3357
+ /** The smallest a cell may get before the grid scrolls instead of shrinking: 10, 12 or 14 px. @default "md" */
3358
+ size?: "sm" | "md" | "lg";
3359
+ /** Grow cells to fill the width, up to 20 px. @default true */
3360
+ stretch?: boolean;
3361
+ /** The hovered or focused day, controlled. */
3362
+ activeDate?: string | null;
3363
+ defaultActiveDate?: string | null;
3364
+ onActiveDateChange?: (date: string | null) => void;
3365
+ /** The selected day, controlled. Selection is on only when `onSelectDate` is set. */
3366
+ selectedDate?: string | null;
3367
+ /** Called when a day is clicked or chosen with Enter / Space — as GitHub filters its feed below. */
3368
+ onSelectDate?: (date: string) => void;
3369
+ /** Draw something into a cell (an icon for a milestone, a reward, an outage). Rendered over the fill. */
3370
+ renderCell?: (day: ActivityHeatmapDay, cell: ActivityHeatmapCell) => ReactNode;
3371
+ /** Draw the empty grid, shimmering, while data loads. */
3372
+ loading?: boolean;
3373
+ /**
3374
+ * How much motion this component uses: `full` (default) inherits the app's
3375
+ * policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
3376
+ * The weeks fading in as the grid scrolls into view is the flourish.
3377
+ */
3378
+ motion?: MotionLevel;
3379
+ /** BCP 47 locale for month and weekday names, numbers and plurals. */
3380
+ locale?: string;
3381
+ }
3382
+ /**
3383
+ * A calendar heatmap: one value per day as a grid of weeks by weekdays — the
3384
+ * GitHub contribution graph, for any daily measure (commits, habits, sales,
3385
+ * uptime). Levels come from the data by quartile unless a day brings its own;
3386
+ * categories colour days by source instead of intensity.
3387
+ *
3388
+ * The grid is a real `role="grid"` table, as GitHub's is: one tab stop, arrow
3389
+ * keys between days, each cell named with its date and value. It fills the
3390
+ * width down to `size`; narrower than that, the weeks scroll sideways (opening
3391
+ * on the latest) while the weekday labels and legend stay put.
3392
+ */
3393
+ declare function ActivityHeatmap({ label, data, start, end, year, weekStart, levels, levelScale, tone, categories, unit, formatValue, tooltip, legend, legendLabels, monthLabels, weekdayLabels, size, stretch, activeDate, defaultActiveDate, onActiveDateChange, selectedDate, onSelectDate, renderCell, loading, motion, locale, className, style, ref, ...props }: ActivityHeatmapProps): react.JSX.Element;
3394
+ declare namespace ActivityHeatmap {
3395
+ var displayName: string;
3396
+ }
3397
+
3398
+ declare const activityHeatmapMeta: ComponentMeta;
3399
+
3400
+ interface ActivityWeek {
3401
+ /** Day numbers for each row, top to bottom; null where the day falls outside the range. */
3402
+ days: (number | null)[];
3403
+ }
3404
+ interface ActivityMonth {
3405
+ /** The first day of the month (or of the range, for a partial first month). */
3406
+ day: number;
3407
+ /** The week column the month's header starts at. */
3408
+ week: number;
3409
+ /** How many week columns it spans. */
3410
+ span: number;
3411
+ }
3412
+ interface ActivityGrid {
3413
+ start: number;
3414
+ end: number;
3415
+ weekStart: 0 | 1;
3416
+ /** The day number in the top-left slot, which may sit before `start`. */
3417
+ origin: number;
3418
+ weeks: ActivityWeek[];
3419
+ /** Month header segments, left to right, spanning every week column between them. */
3420
+ months: ActivityMonth[];
3421
+ }
3422
+ /**
3423
+ * The weeks-by-weekdays grid for a range: one column per week, one row per
3424
+ * weekday starting at `weekStart`, with partial first and last weeks padded by
3425
+ * nulls. Month segments start at the week holding each month's 1st; the weeks
3426
+ * before the first 1st belong to the range's opening month.
3427
+ */
3428
+ declare function activityGrid({ start, end, weekStart }: {
3429
+ start: number;
3430
+ end: number;
3431
+ weekStart: 0 | 1;
3432
+ }): ActivityGrid;
3433
+
3247
3434
  type StepStatus = "complete" | "current" | "upcoming" | "error";
3248
3435
  type StepperOrientation = "horizontal" | "vertical";
3249
3436
  type StepperIndicator = "number" | "dot";
@@ -3878,7 +4065,7 @@ type SheetSnapPoint = number | string;
3878
4065
  * to a panel that slides sideways.
3879
4066
  */
3880
4067
  type SheetProps<Payload = unknown> = Omit<Drawer.Root.Props<Payload>, "swipeDirection">;
3881
- declare function Sheet<Payload = unknown>({ snapPoints, snapPoint, defaultSnapPoint, onSnapPointChange, snapToSequentialPoints, ...props }: SheetProps<Payload>): react.JSX.Element;
4068
+ declare function Sheet<Payload = unknown>({ snapPoints, snapPoint, defaultSnapPoint, onSnapPointChange, snapToSequentialPoints, open, onOpenChange, ...props }: SheetProps<Payload>): react.JSX.Element;
3882
4069
  declare const SheetTrigger: Drawer.Trigger;
3883
4070
  declare const SheetClose: Drawer.Close;
3884
4071
  declare const SheetPortal: {
@@ -3888,7 +4075,7 @@ declare const SheetPortal: {
3888
4075
  type ContentProps$4 = Omit<ComponentProps<typeof Drawer.Popup>, "className"> & VariantProps<typeof sheetVariants> & {
3889
4076
  className?: string;
3890
4077
  };
3891
- declare function SheetContent({ className, children, side, initialFocus, ref, style, ...props }: ContentProps$4): react.JSX.Element;
4078
+ declare function SheetContent({ className, children, side, initialFocus, finalFocus, ref, style, ...props }: ContentProps$4): react.JSX.Element;
3892
4079
  type TitleProps$1 = Omit<ComponentProps<typeof Drawer.Title>, "className"> & {
3893
4080
  className?: string;
3894
4081
  };
@@ -3926,6 +4113,13 @@ declare const sheetMeta: ComponentMeta;
3926
4113
  * Styled native table. Wraps the <table> in a horizontally scrollable frame so
3927
4114
  * wide tables stay responsive without breaking layout. Caption renders at the
3928
4115
  * bottom. No rounding on cells; rows are separated by hairline borders.
4116
+ *
4117
+ * Density-aware. The head height and the cells' block padding read
4118
+ * `--table-head-h` / `--table-cell-py`, which the compact scope sets (28px
4119
+ * head, 32px rows), and the cells' type follows the register: body-sm on a
4120
+ * page, the 12px ui reading tier in a workspace — a row is the content a
4121
+ * tracker is read for, so it takes prose weight, not the 11px supporting tier
4122
+ * the compact remap would otherwise give body-sm.
3929
4123
  */
3930
4124
  declare function Table({ className, ...props }: ComponentPropsWithRef<"table">): react.JSX.Element;
3931
4125
  declare namespace Table {
@@ -4010,6 +4204,19 @@ interface DataTableColumn<Row> {
4010
4204
  className?: string;
4011
4205
  }
4012
4206
  type DataTableRowKey = string | number;
4207
+ /** How one group of rows is labelled and ordered. */
4208
+ interface DataTableGroup {
4209
+ /** The value `groupBy` returns for the rows in this group. */
4210
+ key: string;
4211
+ /** The group's name in its header row. @default the key */
4212
+ label?: ReactNode;
4213
+ /** A leading glyph for the header row — a status mark, an icon. */
4214
+ icon?: ReactNode;
4215
+ /** Trailing controls in the header row, e.g. an icon Button that adds a row to this group. */
4216
+ action?: ReactNode;
4217
+ /** Whether the group starts open when `expandedGroups` is not passed. @default true */
4218
+ defaultExpanded?: boolean;
4219
+ }
4013
4220
  interface DataTableProps<Row> {
4014
4221
  /** Column definitions, left to right. */
4015
4222
  columns: DataTableColumn<Row>[];
@@ -4043,13 +4250,32 @@ interface DataTableProps<Row> {
4043
4250
  empty?: ReactNode;
4044
4251
  /** Bottom caption. */
4045
4252
  caption?: ReactNode;
4253
+ /**
4254
+ * Group the rows under header rows, by the key this returns (a status, an
4255
+ * owner, a day). One header for the whole table, so every group shares the
4256
+ * columns; sorting applies within each group.
4257
+ */
4258
+ groupBy?: (row: Row) => string;
4259
+ /**
4260
+ * Order and presentation of the groups, by key. Groups `groupBy` returns
4261
+ * that are not listed follow, in the order their first row appears in `data`.
4262
+ * A listed group with no rows is not shown.
4263
+ */
4264
+ groups?: DataTableGroup[];
4265
+ /** Whether a group's header row opens and closes it. @default true */
4266
+ collapsible?: boolean;
4267
+ /** The open groups, by key (controlled). Without it each group starts at its `defaultExpanded`. */
4268
+ expandedGroups?: ReadonlySet<string>;
4269
+ /** Called with the new set of open group keys when a group is opened or closed. */
4270
+ onExpandedGroupsChange?: (keys: Set<string>) => void;
4046
4271
  className?: string;
4047
4272
  }
4048
4273
  /**
4049
4274
  * DataTable — a data-driven table over the Table primitives: a `columns` def + a
4050
4275
  * `data` array, with built-in client-side sorting (click a `sortable` header to
4051
4276
  * cycle asc → desc → none), optional row click, checkbox selection for bulk
4052
- * actions (`selectedKeys` + `onSelectedKeysChange`), and an empty state.
4277
+ * actions (`selectedKeys` + `onSelectedKeysChange`), rows grouped under
4278
+ * collapsible header rows (`groupBy` + `groups`), and an empty state.
4053
4279
  * For server-side data or paging, sort/page the `data` you pass in and pair it
4054
4280
  * with `Pagination`.
4055
4281
  *
@@ -4063,7 +4289,7 @@ interface DataTableProps<Row> {
4063
4289
  * ]}
4064
4290
  * />
4065
4291
  */
4066
- declare function DataTable<Row>({ columns, data, rowKey, onRowClick, isRowSelected, selectedKeys, onSelectedKeysChange, rowSelectionLabel, selectAllLabel, defaultSort, empty, caption, className, }: DataTableProps<Row>): react.JSX.Element;
4292
+ declare function DataTable<Row>({ columns, data, rowKey, onRowClick, isRowSelected, selectedKeys, onSelectedKeysChange, rowSelectionLabel, selectAllLabel, defaultSort, empty, caption, groupBy, groups, collapsible, expandedGroups, onExpandedGroupsChange, className, }: DataTableProps<Row>): react.JSX.Element;
4067
4293
  declare namespace DataTable {
4068
4294
  var displayName: string;
4069
4295
  }
@@ -4071,7 +4297,7 @@ declare namespace DataTable {
4071
4297
  declare const dataTableMeta: ComponentMeta;
4072
4298
 
4073
4299
  /**
4074
- * A chip someone clicks. Two appearances, two sizes, one `selected` state each:
4300
+ * A chip someone clicks. Two appearances, three sizes, one `selected` state each:
4075
4301
  *
4076
4302
  * - `solid` (default): the filter-row chip. Rests on the secondary surface;
4077
4303
  * `selected` lifts it onto the primary surface so the active filter reads at
@@ -4082,15 +4308,24 @@ declare const dataTableMeta: ComponentMeta;
4082
4308
  * `selected` (the reader's own choice) takes a primary tint and a soft
4083
4309
  * primary edge — distinct from rest without a heavy dark outline.
4084
4310
  *
4085
- * Both sizes are fixed heights, md the larger: md sits on the density ladder's
4086
- * xs control height (28px), sm is 24px — the touch-target floor. md used to be
4311
+ * All sizes are fixed heights. md sits on the density ladder's xs control
4312
+ * height (28px), sm is 24px — the touch-target floor, deliberately NOT a
4313
+ * ladder step, so a compact scope cannot shrink it under 24. md used to be
4087
4314
  * padding-sized (~18px) while sm was 28px, so the "small" chip was the taller
4088
4315
  * one. A fixed-height chip centred with `items-center` needs no optical nudge,
4089
- * so both drop it. Semantic tokens only — theme-safe in light and dark.
4316
+ * so all drop it. Semantic tokens only — theme-safe in light and dark.
4317
+ *
4318
+ * `lg` sits on `--control-sm` (32px, compact 28), the rung the spacing doctrine
4319
+ * gives toolbar controls: Button `sm`, Toggle and SearchInput `sm` stand on it
4320
+ * too, so a filter row beside a search field and its buttons is one height. A
4321
+ * page toolbar is the case it exists for ("All · Products · Open source" …
4322
+ * [Find a project]). md's 28px is the chip under or among content, and no text
4323
+ * field shares it — Input / SearchInput `xs` is the inset tool-panel field, a
4324
+ * different surface — so md beside a field is always a mismatch.
4090
4325
  */
4091
4326
  declare const pillVariants: (props?: ({
4092
4327
  appearance?: "outline" | "solid" | null | undefined;
4093
- size?: "sm" | "md" | null | undefined;
4328
+ size?: "sm" | "md" | "lg" | null | undefined;
4094
4329
  selected?: boolean | null | undefined;
4095
4330
  tone?: "blue" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "neutral" | null | undefined;
4096
4331
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -4108,8 +4343,10 @@ interface PillProps extends ComponentPropsWithRef<"button">, Omit<VariantProps<t
4108
4343
  * half clickable and half not.
4109
4344
  *
4110
4345
  * `appearance="outline"` is the quiet chip for choices that annotate other
4111
- * content (a reaction, a tag on a card); `size="sm"` puts it on the xs control
4112
- * height. Use these rather than restyling a Pill with classes — an override is
4346
+ * content (a reaction, a tag on a card); `size="sm"` is the small chip under
4347
+ * content, `size="lg"` the toolbar chip that shares `--control-sm` with a
4348
+ * SearchInput `size="sm"` and Button `size="sm"` beside it. Use these rather
4349
+ * than restyling a Pill with classes — an override is
4113
4350
  * a look that exists nowhere else in the system. `tone="blue"` (any palette
4114
4351
  * family) colours the chip as a category, like a tag picker's choices.
4115
4352
  */
@@ -4187,7 +4424,7 @@ declare const notificationBadgeMeta: ComponentMeta;
4187
4424
  * rounded-full and shrink-0 so it holds its shape inline next to text.
4188
4425
  */
4189
4426
  declare const statusDotVariants: (props?: ({
4190
- tone?: "1" | "2" | "3" | "destructive" | "success" | "blue" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "neutral" | "warning" | "info" | null | undefined;
4427
+ tone?: "1" | "2" | "3" | "destructive" | "success" | "blue" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "info" | "warning" | "neutral" | null | undefined;
4191
4428
  size?: "sm" | "md" | "lg" | null | undefined;
4192
4429
  } & class_variance_authority_types.ClassProp) | undefined) => string;
4193
4430
 
@@ -4308,6 +4545,21 @@ interface DatePickerProps extends TriggerAttributes {
4308
4545
  minDate?: Date;
4309
4546
  /** Latest selectable day (inclusive); later days are disabled. */
4310
4547
  maxDate?: Date;
4548
+ /**
4549
+ * The trigger's rung. `md` is the form field, beside Input and Select. `xs`
4550
+ * is the property-grid rung (24px in a workspace): an inset `panel-field`
4551
+ * well with no border, the same shape as SelectTrigger `size="xs"` and
4552
+ * ScrubField on the neighbouring rows of an inspector.
4553
+ * @default "md"
4554
+ */
4555
+ size?: "md" | "xs";
4556
+ /**
4557
+ * How the trigger writes the chosen date, as `Intl.DateTimeFormat` options
4558
+ * in the reader's locale — `{ month: "short", day: "numeric" }` for "Oct 23"
4559
+ * where the rest of a list writes dates that way. Omitted: "Oct 23, 2026"
4560
+ * (and "Oct 23, 2026 at 14:30" under `granularity="minute"`).
4561
+ */
4562
+ formatOptions?: Intl.DateTimeFormatOptions;
4311
4563
  /** Extra classes for the trigger button. */
4312
4564
  className?: string;
4313
4565
  }
@@ -4621,19 +4873,32 @@ declare const accordionMeta: ComponentMeta;
4621
4873
  declare const Collapsible: react.ForwardRefExoticComponent<Omit<_base_ui_react.CollapsibleRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
4622
4874
  declare const CollapsibleTrigger: react.ForwardRefExoticComponent<Omit<_base_ui_react.CollapsibleTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
4623
4875
  /**
4624
- * An auto-rotating chevron for a Collapsible trigger — the disclosure caret that
4625
- * flips 180° when the panel opens (parity with AccordionTrigger's chevron). Drop
4626
- * it inside the trigger's content and mark the trigger with the `group/collapsible`
4627
- * class so the indicator can read its open state (Base UI puts `data-panel-open`
4628
- * on the trigger, not the icon):
4876
+ * Where the closed caret points, and so how it turns. `down` flips 180° on open
4877
+ * (parity with AccordionTrigger's chevron). `end` points to the inline end while
4878
+ * closed (right in LTR, left in RTL) and turns down a quarter on open — the
4879
+ * caret a grouped list or a tree row uses.
4880
+ */
4881
+ declare const DIRECTION: {
4882
+ readonly down: "[[data-panel-open]_&]:rotate-180";
4883
+ readonly end: "-rotate-90 rtl:rotate-90 [[data-panel-open]_&]:rotate-0";
4884
+ };
4885
+ interface CollapsibleIndicatorProps {
4886
+ /** Where the caret points while closed. @default "down" */
4887
+ direction?: keyof typeof DIRECTION;
4888
+ className?: string;
4889
+ }
4890
+ /**
4891
+ * An auto-rotating chevron for a Collapsible trigger. Drop it anywhere inside
4892
+ * the trigger's content; nothing else to set up. Base UI puts `data-panel-open`
4893
+ * on the trigger, not the icon, so the glyph reads it from the trigger above
4894
+ * it. (It used to need a `group/collapsible` class on the trigger, and an app
4895
+ * that missed that rotated its own chevron with no transition instead.)
4629
4896
  *
4630
- * <CollapsibleTrigger className="group/collapsible" render={
4897
+ * <CollapsibleTrigger render={
4631
4898
  * <Button variant="ghost">Details <CollapsibleIndicator /></Button>
4632
4899
  * } />
4633
4900
  */
4634
- declare function CollapsibleIndicator({ className }: {
4635
- className?: string;
4636
- }): react.JSX.Element;
4901
+ declare function CollapsibleIndicator({ direction, className }: CollapsibleIndicatorProps): react.JSX.Element;
4637
4902
  type PanelProps$1 = Omit<ComponentProps<typeof Collapsible$1.Panel>, "className"> & {
4638
4903
  className?: string;
4639
4904
  };
@@ -5214,6 +5479,13 @@ interface CodeBlockProps extends ComponentPropsWithRef<"div"> {
5214
5479
  * What Snippet was.
5215
5480
  */
5216
5481
  prompt?: string;
5482
+ /**
5483
+ * Wrap long lines instead of scrolling them. For prose in a code face (a
5484
+ * prompt to paste into an agent, a log line), where the end of a line
5485
+ * scrolled out of view hides what it says. Code keeps scrolling: wrapping
5486
+ * breaks the indentation it is read by.
5487
+ */
5488
+ wrap?: boolean;
5217
5489
  }
5218
5490
  /**
5219
5491
  * A multi-line code block. An optional header bar carries the filename and a
@@ -5224,7 +5496,7 @@ interface CodeBlockProps extends ComponentPropsWithRef<"div"> {
5224
5496
  * Highlighting is opt-in through `highlight` or `CodeHighlightProvider`.
5225
5497
  * Soft-square (rounded-md), never a pill.
5226
5498
  */
5227
- declare function CodeBlock({ code, filename, showCopy, highlight, prompt, className, ...props }: CodeBlockProps): react.JSX.Element;
5499
+ declare function CodeBlock({ code, filename, showCopy, highlight, prompt, wrap, className, ...props }: CodeBlockProps): react.JSX.Element;
5228
5500
  declare namespace CodeBlock {
5229
5501
  var displayName: string;
5230
5502
  }
@@ -5307,7 +5579,7 @@ declare const kbdMeta: ComponentMeta;
5307
5579
  * (neutral/info/success/warning/destructive).
5308
5580
  */
5309
5581
  declare const noteVariants: (props?: ({
5310
- tone?: "destructive" | "success" | "neutral" | "warning" | "info" | null | undefined;
5582
+ tone?: "destructive" | "success" | "info" | "warning" | "neutral" | null | undefined;
5311
5583
  } & class_variance_authority_types.ClassProp) | undefined) => string;
5312
5584
 
5313
5585
  /**
@@ -5417,7 +5689,7 @@ declare const inlineStatusMeta: ComponentMeta;
5417
5689
  * and `sticky` positioning live in `banner.tsx`.
5418
5690
  */
5419
5691
  declare const bannerVariants: (props?: ({
5420
- tone?: "1" | "destructive" | "success" | "neutral" | "warning" | "info" | null | undefined;
5692
+ tone?: "1" | "destructive" | "success" | "info" | "warning" | "neutral" | null | undefined;
5421
5693
  appearance?: "solid" | "soft" | null | undefined;
5422
5694
  } & class_variance_authority_types.ClassProp) | undefined) => string;
5423
5695
 
@@ -5495,6 +5767,12 @@ type WorkspaceProps = Omit<ComponentProps<"div">, "children"> & {
5495
5767
  toolbar?: ReactNode;
5496
5768
  /** Bottom chrome — usually a StatusBar. */
5497
5769
  statusBar?: ReactNode;
5770
+ /**
5771
+ * Phone navigation — usually a BottomNav. Its row is reserved below `lg`
5772
+ * (BottomNav's own breakpoint) and gone above it, so the body ends where the
5773
+ * nav begins without the app subtracting the nav's height from the viewport.
5774
+ */
5775
+ bottomNav?: ReactNode;
5498
5776
  /**
5499
5777
  * Density scope for everything inside. Defaults to `compact`, because a
5500
5778
  * workspace IS the compact register — see DESIGN.md → Registers.
@@ -5521,7 +5799,14 @@ type WorkspaceProps = Omit<ComponentProps<"div">, "children"> & {
5521
5799
  * </PanelGroup>
5522
5800
  * </Workspace>
5523
5801
  *
5524
- * Two structural details do the real work:
5802
+ * Three structural details do the real work:
5803
+ *
5804
+ * - The shell is a flex column and the body is its only `flex-1` row. Every
5805
+ * slot is optional, and a fixed `auto / 1fr / auto` grid assumed all of them:
5806
+ * with no toolbar, the body fell into the first `auto` track and the status
5807
+ * bar took the `1fr` one, so the body sized to its content and the status bar
5808
+ * was pushed off the bottom. A slot whose component renders nothing now costs
5809
+ * nothing too, which a track list counted from the props could not promise.
5525
5810
  *
5526
5811
  * - `min-h-0` on the body row. Without it a grid/flex child refuses to shrink
5527
5812
  * below its content, `overflow-y-auto` never activates on a panel, and panels
@@ -5530,7 +5815,7 @@ type WorkspaceProps = Omit<ComponentProps<"div">, "children"> & {
5530
5815
  * - `data-density` scopes the control ladder, so every control inside lands on
5531
5816
  * the workspace sizes without any selector overriding a height afterwards.
5532
5817
  */
5533
- declare function Workspace({ toolbar, statusBar, density, skipLinkLabel, className, children, ...props }: WorkspaceProps): react.JSX.Element;
5818
+ declare function Workspace({ toolbar, statusBar, bottomNav, density, skipLinkLabel, className, children, ...props }: WorkspaceProps): react.JSX.Element;
5534
5819
  declare namespace Workspace {
5535
5820
  var displayName: string;
5536
5821
  }
@@ -5558,6 +5843,46 @@ declare namespace WorkspaceBar {
5558
5843
 
5559
5844
  declare const workspaceMeta: ComponentMeta;
5560
5845
 
5846
+ /** A named viewport breakpoint: Tailwind's defaults, which Sable's `lg:` chrome follows. */
5847
+ type ViewportBreakpoint = Exclude<Breakpoint, "base">;
5848
+ /**
5849
+ * The min-width each breakpoint starts at, in rem — Tailwind v4's defaults
5850
+ * (sm 40 / md 48 / lg 64 / xl 80 / 2xl 96), so `useBelowBreakpoint("lg")` flips
5851
+ * at exactly the width where an `lg:` class starts to apply.
5852
+ */
5853
+ declare const VIEWPORT_BREAKPOINTS: Record<ViewportBreakpoint, string>;
5854
+ /** The query that is true below `breakpoint`: the complement of its `lg:`-style min-width. */
5855
+ declare function belowBreakpointQuery(breakpoint: ViewportBreakpoint): string;
5856
+ interface UseMediaQueryOptions {
5857
+ /**
5858
+ * What the server (and the first client render, before hydration settles)
5859
+ * reports. @default false
5860
+ */
5861
+ serverValue?: boolean;
5862
+ }
5863
+ /**
5864
+ * `true` while a media query matches, kept live as the viewport changes.
5865
+ *
5866
+ * Read through useSyncExternalStore, so there is no setState in a resize
5867
+ * listener, no tearing under concurrent rendering, and no hydration mismatch:
5868
+ * the server reports `serverValue`, and the client reconciles on hydration.
5869
+ * Don't hand-roll a `window.innerWidth` read in state plus a `resize` listener
5870
+ * in an effect; that renders the wrong layout first and re-renders on every
5871
+ * pixel of a drag.
5872
+ *
5873
+ * const coarse = useMediaQuery("(pointer: coarse)")
5874
+ */
5875
+ declare function useMediaQuery(query: string, { serverValue }?: UseMediaQueryOptions): boolean;
5876
+ /**
5877
+ * `true` below a named breakpoint, the width where Sable's own chrome changes
5878
+ * shape (Sidebar and BottomNav swap at `lg`). Use it to branch structure that a
5879
+ * class can't express — a docked panel becoming a sheet — and prefer `lg:` and
5880
+ * friends for anything that is only styling.
5881
+ *
5882
+ * const narrow = useBelowBreakpoint("lg")
5883
+ */
5884
+ declare function useBelowBreakpoint(breakpoint?: ViewportBreakpoint, options?: UseMediaQueryOptions): boolean;
5885
+
5561
5886
  interface UsePanelWidthOptions {
5562
5887
  /** localStorage key. Omit to keep the width in memory only (per hook instance). */
5563
5888
  storageKey?: string;
@@ -5608,14 +5933,47 @@ type PanelProps = Omit<ComponentProps<"aside">, "children"> & {
5608
5933
  * body region instead.
5609
5934
  */
5610
5935
  scroll?: boolean;
5936
+ /**
5937
+ * What the panel becomes below `below`, where a docked column no longer fits
5938
+ * beside the canvas. @default "dock"
5939
+ *
5940
+ * - `"dock"` keeps it docked at every width (today's behaviour).
5941
+ * - `"sheet"` moves it into a Sheet on the panel's `side`, open while `open`
5942
+ * is true: an inspector becomes a sheet over the list, a navigation rail a
5943
+ * drawer. Wire `onOpenChange` so Esc, the scrim and a swipe can close it.
5944
+ * - `"hidden"` drops it, for chrome a phone does without.
5945
+ */
5946
+ narrow?: "dock" | "sheet" | "hidden";
5947
+ /**
5948
+ * Whether the panel is showing. Docked, it defaults to `true`, and `false`
5949
+ * removes the column so the canvas takes its width (an inspector with nothing
5950
+ * selected). As a sheet it is the sheet's open state and defaults to `false`:
5951
+ * a modal that opened by itself on every phone load would block the app.
5952
+ */
5953
+ open?: boolean;
5954
+ /** Called when the sheet asks to close (Esc, scrim, swipe) or open. */
5955
+ onOpenChange?: (open: boolean) => void;
5956
+ /**
5957
+ * The edge the sheet slides in from when `narrow="sheet"`. A panel docked
5958
+ * before the canvas is a `"left"` one. @default "right"
5959
+ */
5960
+ side?: "left" | "right";
5961
+ /** The breakpoint `narrow` applies below. Matches Sidebar's and BottomNav's swap. @default "lg" */
5962
+ below?: ViewportBreakpoint;
5611
5963
  /** Panel content. Optional: an empty flexible centre is a valid placeholder. */
5612
5964
  children?: ReactNode;
5613
5965
  };
5614
5966
  /**
5615
5967
  * Panel — one docked chrome column. Fixed-width when `width` is set, flexible
5616
5968
  * otherwise. Scrolls its own content; the group never scrolls.
5969
+ *
5970
+ * Below `below`, `narrow` decides what a docked column becomes. The content is
5971
+ * rendered once, in whichever of the two places applies, so an app never mounts
5972
+ * its inspector twice (a Panel for desktop and a Sheet for phones, each holding
5973
+ * its own copy of the same form). Crossing the breakpoint remounts it, so keep
5974
+ * state that must survive a rotation in the app, not in the panel's children.
5617
5975
  */
5618
- declare function Panel({ label, width, scroll, className, children, ...props }: PanelProps): react.JSX.Element;
5976
+ declare function Panel({ label, width, scroll, narrow, open, onOpenChange, side, below, className, children, ...props }: PanelProps): react.JSX.Element | null;
5619
5977
  declare namespace Panel {
5620
5978
  var displayName: string;
5621
5979
  }
@@ -6255,7 +6613,15 @@ type SidebarContextValue = {
6255
6613
  * paint, so an expanded rail's labels are simply there on load.
6256
6614
  */
6257
6615
  reopened?: boolean;
6616
+ /**
6617
+ * The row rung every part of the rail draws from: `rail` on a page,
6618
+ * `rail-compact` inside a compact scope such as a Workspace. One value, so
6619
+ * the brand, the items, the group labels and the account row stay on the
6620
+ * same columns at either density.
6621
+ */
6622
+ rung: RailRung;
6258
6623
  };
6624
+ type RailRung = "rail" | "rail-compact";
6259
6625
  declare function useSidebar(): SidebarContextValue;
6260
6626
  interface SidebarProps extends ComponentPropsWithRef<"aside"> {
6261
6627
  /**
@@ -6383,6 +6749,64 @@ declare function SidebarItem({ icon, label, active, badge, render, className, "a
6383
6749
  declare namespace SidebarItem {
6384
6750
  var displayName: string;
6385
6751
  }
6752
+ interface SidebarGroupProps extends ComponentPropsWithRef<"div"> {
6753
+ /** The group's name, shown above its items on the rail's columns. Collapsed, a hairline stands in for it. */
6754
+ label?: ReactNode;
6755
+ }
6756
+ /**
6757
+ * A labelled run of SidebarItems inside SidebarNav: "Workspace", "Favorites".
6758
+ * The label starts on the items' icon column, so a group reads as part of the
6759
+ * rail rather than a heading dropped onto it. Without it, a rail that needed
6760
+ * groups reached for SideNav, whose rows sit on different columns from the
6761
+ * brand above and the account row below.
6762
+ *
6763
+ * <SidebarNav>
6764
+ * <SidebarGroup label="Workspace">
6765
+ * <SidebarItem icon={<Icon name="folder" />} label="Projects" />
6766
+ * </SidebarGroup>
6767
+ * </SidebarNav>
6768
+ */
6769
+ declare function SidebarGroup({ label, className, children, ...props }: SidebarGroupProps): react.JSX.Element;
6770
+ declare namespace SidebarGroup {
6771
+ var displayName: string;
6772
+ }
6773
+ interface SidebarAccountProps extends Omit<ComponentPropsWithRef<"button">, "children" | "title"> {
6774
+ /** The person or workspace: an Avatar sized to the slot, `xs` on a page rail and `2xs` in a compact one. */
6775
+ avatar: ReactNode;
6776
+ /** The name, on the items' label column. */
6777
+ label: ReactNode;
6778
+ /** One quiet line under the label: a plan, a role, a workspace, "Demo". Not a badge. */
6779
+ detail?: ReactNode;
6780
+ /**
6781
+ * The trailing glyph that says the row opens something. Defaults to an
6782
+ * up-down chevron (the row usually opens a menu of account actions); `false`
6783
+ * drops it.
6784
+ */
6785
+ indicator?: ReactNode | false;
6786
+ /** Render as another element, most often an account Menu's trigger through `MenuTrigger render`. */
6787
+ render?: useRender.RenderProp;
6788
+ }
6789
+ /**
6790
+ * The account row at the foot of the rail: the avatar in the items' icon slot,
6791
+ * the name on their label column, one detail line, and a chevron that says it
6792
+ * opens a menu. Settings, appearance and sign-out live in that menu, so the
6793
+ * footer is one row instead of a Settings button stacked over a person.
6794
+ *
6795
+ * <SidebarFooter>
6796
+ * <Menu>
6797
+ * <MenuTrigger render={<SidebarAccount avatar={<Avatar size="2xs" fallback="EL" alt="" />} label="Emma Lee" detail="Forma Studio" />} />
6798
+ * <MenuContent side="top" align="start">…</MenuContent>
6799
+ * </Menu>
6800
+ * </SidebarFooter>
6801
+ *
6802
+ * It replaces an Entity patched with `[--entity-py:0]`: an Entity has its own
6803
+ * insets and lands on none of the rail's columns. Collapsed, the avatar alone
6804
+ * stays, centred on the icon column, with the label in a tooltip.
6805
+ */
6806
+ declare function SidebarAccount({ avatar, label, detail, indicator, render, className, "aria-label": ariaLabel, ...props }: SidebarAccountProps): react.JSX.Element;
6807
+ declare namespace SidebarAccount {
6808
+ var displayName: string;
6809
+ }
6386
6810
 
6387
6811
  declare const sidebarMeta: ComponentMeta;
6388
6812
 
@@ -6610,6 +7034,14 @@ interface PageHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
6610
7034
  * shows a PageHeader as an example. @default "h1"
6611
7035
  */
6612
7036
  titleAs?: "h1" | "h2";
7037
+ /**
7038
+ * The title's scale. `md` (text-heading-2 over a text-body-sm description)
7039
+ * for product pages: settings, lists, dashboards. `lg` (text-display-lg over
7040
+ * a text-body-lg lede) for an editorial page: a personal site, a marketing
7041
+ * page, an article index. Display type is never product chrome, so keep `lg`
7042
+ * off app routes. @default "md"
7043
+ */
7044
+ size?: "md" | "lg";
6613
7045
  }
6614
7046
  /**
6615
7047
  * PageHeader — an in-flow page heading block: a title row (optional back control
@@ -6623,9 +7055,10 @@ interface PageHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
6623
7055
  * must never be cut — and the actions drop under it when the row runs out of
6624
7056
  * room. Beside a back control or actions the title sits in a band one control
6625
7057
  * tall, so a one-line title centres on the buttons and a wrapped one starts level
6626
- * with them.
7058
+ * with them. A title whose line is taller than the controls (`size="lg"`) is
7059
+ * lifted by half the difference instead, so its first line still centres on them.
6627
7060
  */
6628
- declare function PageHeader({ title, description, back, actions, titleAs: Title, className, children, ...props }: PageHeaderProps): react.JSX.Element;
7061
+ declare function PageHeader({ title, description, back, actions, titleAs: Title, size, className, children, ...props }: PageHeaderProps): react.JSX.Element;
6629
7062
  declare namespace PageHeader {
6630
7063
  var displayName: string;
6631
7064
  }
@@ -6653,11 +7086,13 @@ interface SectionHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title">
6653
7086
  */
6654
7087
  titleId?: string;
6655
7088
  /**
6656
- * Visual weight, independent of the heading level. `md` (text-heading-3) for
6657
- * a page's sections and shelves; `sm` (text-heading-4) for a denser set —
6658
- * settings groups, subsections, a sidebar's sections. @default "md"
7089
+ * Visual weight, independent of the heading level. `lg` (text-heading-2 over
7090
+ * a text-body-md description) for an editorial page's sections, under a
7091
+ * `PageHeader size="lg"`; `md` (text-heading-3) for a page's sections and
7092
+ * shelves; `sm` (text-heading-4) for a denser set — settings groups,
7093
+ * subsections, a sidebar's sections. @default "md"
6659
7094
  */
6660
- size?: "md" | "sm";
7095
+ size?: "lg" | "md" | "sm";
6661
7096
  }
6662
7097
  /**
6663
7098
  * SectionHeader — the heading block for one section of a page: a title, an
@@ -6675,7 +7110,9 @@ interface SectionHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title">
6675
7110
  *
6676
7111
  * It shares PageHeader's title row: the title wraps rather than truncating,
6677
7112
  * the actions keep to the title's row and drop beneath it only when the row
6678
- * runs out of room. It carries no outer spacing — the Stack or Page it sits in
7113
+ * runs out of room. A title whose line is taller than the controls (`lg`, or
7114
+ * a denser register's shorter ladder) is lifted by half the difference, so its
7115
+ * first line stays centred on them. It carries no outer spacing — the Stack or Page it sits in
6679
7116
  * owns the rhythm between the header and what it introduces.
6680
7117
  */
6681
7118
  declare function SectionHeader({ title, description, actions, titleAs, titleId, size, className, ...props }: SectionHeaderProps): react.JSX.Element;
@@ -6685,7 +7122,20 @@ declare namespace SectionHeader {
6685
7122
 
6686
7123
  declare const sectionHeaderMeta: ComponentMeta;
6687
7124
 
6688
- interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChange" | "value" | "defaultValue"> {
7125
+ /** The rungs of the control ladder a SearchInput stands on. */
7126
+ type SearchInputSize = "md" | "sm" | "xs";
7127
+ interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChange" | "value" | "defaultValue" | "size"> {
7128
+ /**
7129
+ * Which rung of the control ladder the field stands on — the same names as
7130
+ * Input, Select and Combobox. `md` is the form field. `sm` is the toolbar
7131
+ * field: it shares `--control-sm` with Pill `lg` and Button `sm`, so a row
7132
+ * of filter chips beside the search is one height. `xs` is the inset
7133
+ * tool-panel field, Input `xs`'s surface. The magnifier and clear button
7134
+ * scale and stay centred at every rung. The native numeric `size` attribute
7135
+ * is omitted; the field's width comes from `className`.
7136
+ * @default "md"
7137
+ */
7138
+ size?: SearchInputSize;
6689
7139
  /** Controlled value of the search field. */
6690
7140
  value?: string;
6691
7141
  /**
@@ -6719,7 +7169,7 @@ interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChang
6719
7169
  * Controlled via `value` + `onValueChange`, or uncontrolled via `defaultValue`;
6720
7170
  * pass `onClear` to hook the reset. `className` sizes the whole field.
6721
7171
  */
6722
- declare function SearchInput({ value, defaultValue, onValueChange, onClear, placeholder, className, inputClassName, ref, type, ...props }: SearchInputProps): react.JSX.Element;
7172
+ declare function SearchInput({ value, defaultValue, onValueChange, onClear, placeholder, className, inputClassName, size, ref, type, ...props }: SearchInputProps): react.JSX.Element;
6723
7173
  declare namespace SearchInput {
6724
7174
  var displayName: string;
6725
7175
  }
@@ -8692,6 +9142,14 @@ interface MediaImageProps extends Omit<ComponentPropsWithRef<"div">, "children">
8692
9142
  * the muted surface — a logo, a product shot that must not be cropped.
8693
9143
  */
8694
9144
  fit?: "cover" | "contain";
9145
+ /**
9146
+ * Where the image sits in its frame — CSS `object-position`, the sibling of
9147
+ * `fit`. Under `cover` it is the part kept when the crop trims the rest (a
9148
+ * face at `"50% 30%"`, a horizon at `"bottom"`); under `contain` it is the
9149
+ * side the letterbox gives way to. Takes any object-position value.
9150
+ * @default "center"
9151
+ */
9152
+ position?: CSSProperties["objectPosition"];
8695
9153
  /** `srcSet` / `sizes` for responsive images, passed to the `<img>`. */
8696
9154
  srcSet?: string;
8697
9155
  sizes?: string;
@@ -8722,7 +9180,7 @@ interface MediaImageProps extends Omit<ComponentPropsWithRef<"div">, "children">
8722
9180
  * — painting the art first would flash a colourful stand-in for a frame and
8723
9181
  * then swap it for the photo. Once loaded, the image fades in.
8724
9182
  */
8725
- declare function MediaImage({ src, alt, seed, fallback, fit, srcSet, sizes, loading, className, ...props }: MediaImageProps): react.JSX.Element;
9183
+ declare function MediaImage({ src, alt, seed, fallback, fit, position, srcSet, sizes, loading, className, ...props }: MediaImageProps): react.JSX.Element;
8726
9184
  declare namespace MediaImage {
8727
9185
  var displayName: string;
8728
9186
  }
@@ -8760,6 +9218,13 @@ interface MediaTileProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
8760
9218
  alt?: string;
8761
9219
  /** Seeds the fallback art. Defaults to `title` when it is a string. */
8762
9220
  seed?: string | number;
9221
+ /**
9222
+ * Which part of the cover the crop keeps — CSS `object-position`, passed to
9223
+ * the cover's MediaImage: `"50% 30%"` for a face, `"top"` for a poster's
9224
+ * title. Store it with the image when each one frames differently.
9225
+ * @default "center"
9226
+ */
9227
+ position?: CSSProperties["objectPosition"];
8763
9228
  /**
8764
9229
  * The cover's shape: `square` (albums, podcasts, playlists), `video` (16:9),
8765
9230
  * `poster` (2:3 — films, books), or any width / height ratio.
@@ -8823,7 +9288,7 @@ interface MediaTileProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
8823
9288
  * and the cover is drawn above it with `order`, so focus moves the way a
8824
9289
  * reader names the item — what it is, who made it, then what to do with it.
8825
9290
  */
8826
- declare function MediaTile({ title, subtitle, meta, src, srcSet, sizes, alt, seed, aspect, size, href, render, subtitleHref, subtitleRender, action, badge, titleAs: TitleTag, loading, className, ...props }: MediaTileProps): react.JSX.Element;
9291
+ declare function MediaTile({ title, subtitle, meta, src, srcSet, sizes, alt, seed, position, aspect, size, href, render, subtitleHref, subtitleRender, action, badge, titleAs: TitleTag, loading, className, ...props }: MediaTileProps): react.JSX.Element;
8827
9292
  declare namespace MediaTile {
8828
9293
  var displayName: string;
8829
9294
  }
@@ -9974,6 +10439,6 @@ interface UseActiveSectionOptions {
9974
10439
  */
9975
10440
  declare function useActiveSection(ids: readonly string[], { offset, root }?: UseActiveSectionOptions): string | null;
9976
10441
 
9977
- declare const SABLE_UI_VERSION: "0.17.0";
10442
+ declare const SABLE_UI_VERSION: "0.19.0";
9978
10443
 
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 };
10444
+ export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, ActivityData, type ActivityGrid, ActivityHeatmap, type ActivityHeatmapCell, type ActivityHeatmapDay, type ActivityHeatmapProps, type ActivityLevels, type ActivityMonth, type ActivityScale, type ActivityStats, type ActivityWeek, 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, Breakpoint, 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 DataTableGroup, 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, SidebarAccount, type SidebarAccountProps, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarGroup, type SidebarGroupProps, 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 UseMediaQueryOptions, type UsePanelWidthOptions, VIEWPORT_BREAKPOINTS, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, type ViewportBreakpoint, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, activityGrid, activityHeatmapMeta, activityLevels, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, belowBreakpointQuery, 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, useBelowBreakpoint, useCaretTrigger, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMatchHighlight, useMediaQuery, useMotion, useMotionLevel, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useShake, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };