@sableui/react 0.17.0 → 0.18.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 (86) hide show
  1. package/AGENTS.md +10 -3
  2. package/CHANGELOG.md +106 -0
  3. package/README.md +11 -4
  4. package/bin/sable.mjs +160 -18
  5. package/dist/activity-DT8VK9fx.d.ts +25 -0
  6. package/dist/adapters/github.d.ts +41 -0
  7. package/dist/adapters/github.js +24 -0
  8. package/dist/components/activity-heatmap/activity-heatmap.js +420 -0
  9. package/dist/components/activity-heatmap/activity-heatmap.meta.js +142 -0
  10. package/dist/components/activity-heatmap/index.js +9 -0
  11. package/dist/components/code-block/code-block.js +5 -3
  12. package/dist/components/code-block/code-block.meta.js +6 -0
  13. package/dist/components/dialog/dialog.js +25 -5
  14. package/dist/components/dialog/dialog.meta.js +26 -5
  15. package/dist/components/media-image/media-image.js +3 -1
  16. package/dist/components/media-image/media-image.meta.js +15 -1
  17. package/dist/components/media-tile/media-tile.js +13 -1
  18. package/dist/components/media-tile/media-tile.meta.js +10 -0
  19. package/dist/components/page-header/page-header.js +9 -4
  20. package/dist/components/page-header/page-header.meta.js +26 -1
  21. package/dist/components/pill/pill.meta.js +15 -6
  22. package/dist/components/pill/pill.variants.js +1 -0
  23. package/dist/components/search-input/search-input.js +30 -5
  24. package/dist/components/search-input/search-input.meta.js +29 -4
  25. package/dist/components/section-header/section-header.js +27 -17
  26. package/dist/components/section-header/section-header.meta.js +27 -5
  27. package/dist/components/sheet/sheet.js +15 -3
  28. package/dist/components/sheet/sheet.meta.js +2 -2
  29. package/dist/file-hashes.json +46 -36
  30. package/dist/icon-sets/reicon.js +23 -1
  31. package/dist/index.d.ts +270 -27
  32. package/dist/index.js +8 -1
  33. package/dist/layout/AspectBox.js +2 -5
  34. package/dist/layout/Bleed.js +10 -6
  35. package/dist/layout/Center.js +11 -3
  36. package/dist/layout/Columns.js +6 -3
  37. package/dist/layout/Grid.js +14 -6
  38. package/dist/layout/GridOverlay.js +7 -7
  39. package/dist/layout/Region.js +18 -3
  40. package/dist/layout/Row.js +27 -20
  41. package/dist/layout/Spacer.js +13 -2
  42. package/dist/layout/SplitPane.js +1 -1
  43. package/dist/layout/Stack.js +25 -18
  44. package/dist/layout/index.d.ts +57 -6
  45. package/dist/lib/chart/activity.js +32 -0
  46. package/dist/lib/chart/calendar.js +67 -0
  47. package/dist/lib/chart/chart-tooltip.js +2 -2
  48. package/dist/lib/chart/heat.js +55 -0
  49. package/dist/lib/focus-return.js +53 -0
  50. package/dist/lib/taxonomy.js +1 -0
  51. package/dist/styles.css +122 -114
  52. package/llms/components/activity-heatmap.md +133 -0
  53. package/llms/components/code-block.md +1 -0
  54. package/llms/components/dialog.md +34 -3
  55. package/llms/components/media-image.md +12 -0
  56. package/llms/components/media-tile.md +21 -0
  57. package/llms/components/page-header.md +16 -1
  58. package/llms/components/pill.md +24 -5
  59. package/llms/components/search-input.md +37 -4
  60. package/llms/components/section-header.md +28 -4
  61. package/llms/components/sheet.md +2 -2
  62. package/llms/layout/aspect-box.md +1 -1
  63. package/llms/layout/bleed.md +1 -1
  64. package/llms/layout/center.md +1 -1
  65. package/llms/layout/columns.md +1 -1
  66. package/llms/layout/grid.md +1 -1
  67. package/llms/layout/region.md +1 -1
  68. package/llms/layout/row.md +9 -1
  69. package/llms/layout/spacer.md +1 -1
  70. package/llms/layout/split-pane.md +1 -1
  71. package/llms/layout/stack.md +1 -1
  72. package/llms/tasks/auditing-an-app.md +31 -0
  73. package/llms/tasks/getting-started.md +10 -3
  74. package/llms/tasks/using-presets.md +1 -2
  75. package/llms-full.txt +372 -35
  76. package/llms.txt +3 -2
  77. package/package.json +6 -1
  78. package/registry.json +532 -36
  79. package/scripts/adoption.mjs +239 -0
  80. package/scripts/agent-setup.mjs +110 -18
  81. package/scripts/grade.mjs +17 -0
  82. package/scripts/wiring.mjs +2 -1
  83. package/skills/entry/SKILL.md +1 -1
  84. package/skills/sable/SKILL.md +33 -4
  85. package/skills/sable/agents/openai.yaml +1 -1
  86. package/targets/ios.json +9 -0
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { AspectBox, AspectBoxProps, Bleed, BleedProps, Breakpoint, Center, Cente
9
9
  export { Icon, IconContextValue, IconProps, IconProvider, IconProviderProps, composeIconSets, useIconSet } from './icon/index.js';
10
10
  export { a as IconRenderProps, I as IconSet, b as IconVariant } from './registry-CyL28OzJ.js';
11
11
  import * as react from 'react';
12
- import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, RefObject, FormEvent } from 'react';
12
+ import { ReactNode, AnimationEvent, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, MouseEvent, ComponentProps, AriaAttributes, RefObject, FormEvent, CSSProperties } from 'react';
13
13
  import { VariantProps } from 'class-variance-authority';
14
14
  import { useRender } from '@base-ui/react/use-render';
15
15
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -27,6 +27,8 @@ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
27
27
  import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
28
28
  import { Progress as Progress$1 } from '@base-ui/react/progress';
29
29
  import { Meter as Meter$1 } from '@base-ui/react/meter';
30
+ import { a as ActivityData } from './activity-DT8VK9fx.js';
31
+ export { A as ActivityDay, m as mergeActivity } from './activity-DT8VK9fx.js';
30
32
  import { Toggle as Toggle$1 } from '@base-ui/react/toggle';
31
33
  import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
32
34
  import { Toolbar as Toolbar$1 } from '@base-ui/react/toolbar';
@@ -1315,8 +1317,13 @@ declare const badgeMeta: ComponentMeta;
1315
1317
  * <img src="…" alt="Studio, 2026" className="max-h-full max-w-full object-contain" />
1316
1318
  * </DialogContent>
1317
1319
  * </Dialog>
1320
+ *
1321
+ * Opened from your own button through controlled `open`, with no DialogTrigger,
1322
+ * it still returns focus to that button on close: the root records whatever
1323
+ * held focus when `open` turned true and makes it DialogContent's default
1324
+ * `finalFocus` (lib/focus-return has the why). An explicit `finalFocus` wins.
1318
1325
  */
1319
- declare const Dialog: typeof Dialog$1.Root;
1326
+ declare function Dialog<Payload = unknown>({ open, onOpenChange, ...props }: Dialog$1.Root.Props<Payload>): react.JSX.Element;
1320
1327
  declare const DialogTrigger: Dialog$1.Trigger;
1321
1328
  declare const DialogClose: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1322
1329
  declare const DialogPortal: {
@@ -1368,9 +1375,20 @@ type PopupProps$1 = Omit<ComponentProps<typeof Dialog$1.Popup>, "className"> & {
1368
1375
  * children directly and the media sizes itself to the viewport.
1369
1376
  */
1370
1377
  scroll?: boolean;
1378
+ /**
1379
+ * Keep the content mounted while the dialog is closed, hidden, instead of
1380
+ * unmounting it. Opt in for a draft the user may come back to: a half-written
1381
+ * form closed by Esc or a stray click keeps its fields (typed values, React
1382
+ * state, scroll position) when it reopens. Leave it off otherwise: a dialog
1383
+ * that should start fresh each time, or one with live content (polling,
1384
+ * video), should not keep running behind a closed door. Reset the draft
1385
+ * yourself once it is submitted or discarded.
1386
+ * @default false
1387
+ */
1388
+ keepMounted?: boolean;
1371
1389
  };
1372
1390
  /** Backdrop + popup surface. Renders through a portal. */
1373
- declare function DialogContent({ size, showCloseButton, scroll, ...props }: PopupProps$1): react.JSX.Element;
1391
+ declare function DialogContent({ size, showCloseButton, scroll, finalFocus, ref, ...props }: PopupProps$1): react.JSX.Element;
1374
1392
  type TitleProps$3 = Omit<ComponentProps<typeof Dialog$1.Title>, "className"> & {
1375
1393
  className?: string;
1376
1394
  };
@@ -1404,7 +1422,7 @@ declare function DialogFooter({ className, ...props }: ComponentProps<"div">): r
1404
1422
  * </AlertDialogContent>
1405
1423
  * </AlertDialog>
1406
1424
  */
1407
- declare const AlertDialog: typeof AlertDialog$1.Root;
1425
+ declare function AlertDialog<Payload = unknown>({ open, onOpenChange, ...props }: AlertDialog$1.Root.Props<Payload>): react.JSX.Element;
1408
1426
  declare const AlertDialogTrigger: AlertDialog$1.Trigger;
1409
1427
  declare const AlertDialogClose: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1410
1428
  declare const AlertDialogContent: typeof DialogContent;
@@ -3244,6 +3262,172 @@ declare namespace Sparkline {
3244
3262
 
3245
3263
  declare const sparklineMeta: ComponentMeta;
3246
3264
 
3265
+ /**
3266
+ * Levels and colour for a heatmap: how a value becomes one of a few steps, and
3267
+ * what each step looks like on the active theme.
3268
+ */
3269
+ /** What a scale function is told about the data it is scaling. */
3270
+ interface ActivityStats {
3271
+ /** The smallest positive value. */
3272
+ min: number;
3273
+ /** The largest value. */
3274
+ max: number;
3275
+ /** How many levels there are, including the empty level 0. */
3276
+ levels: number;
3277
+ }
3278
+ /**
3279
+ * How a value becomes a level. `"quantile"` splits the positive values evenly
3280
+ * between the levels above 0, as GitHub does, so one outlier does not wash the
3281
+ * rest out. `"linear"` divides 0…max evenly. An array gives the lower bound of
3282
+ * each level from 1 up; a function decides for itself.
3283
+ */
3284
+ type ActivityScale = "quantile" | "linear" | number[] | ((value: number, stats: ActivityStats) => number);
3285
+ interface ActivityLevels {
3286
+ /** The lower bound of each level from 1 up (`thresholds[0]` is level 1). Empty for a scale function. */
3287
+ thresholds: number[];
3288
+ /** The level of a value: 0 for nothing, up to `levels - 1`. */
3289
+ level: (value: number) => number;
3290
+ }
3291
+ /**
3292
+ * The levels for a set of values. Zero and negative values are always level 0;
3293
+ * any positive value is at least level 1, so a day with activity never reads as
3294
+ * a day without it.
3295
+ */
3296
+ declare function activityLevels(values: number[], { levels, scale }?: {
3297
+ levels?: number;
3298
+ scale?: ActivityScale;
3299
+ }): ActivityLevels;
3300
+
3301
+ /** A day as the heatmap resolved it — what `tooltip`, `renderCell` and the callbacks receive. */
3302
+ interface ActivityHeatmapDay {
3303
+ date: string;
3304
+ value: number;
3305
+ level: number;
3306
+ category?: string;
3307
+ }
3308
+ /** What `renderCell` is told about the cell it draws into. */
3309
+ interface ActivityHeatmapCell {
3310
+ level: number;
3311
+ /** The cell's fill, as a CSS colour. */
3312
+ color: string;
3313
+ /** The cell's edge length in px. */
3314
+ size: number;
3315
+ }
3316
+ interface ActivityHeatmapProps extends Omit<ComponentPropsWithRef<"figure">, "children"> {
3317
+ /** What the grid shows ("Contributions in 2026") — its caption and accessible name. */
3318
+ label: string;
3319
+ /** The days, as a list or a map of date to value. Sparse is fine; a missing day is 0. */
3320
+ data: ActivityData;
3321
+ /** First day drawn, "YYYY-MM-DD". @default 53 weeks before `end`, from the start of that week */
3322
+ start?: string;
3323
+ /** Last day drawn, "YYYY-MM-DD". @default today */
3324
+ end?: string;
3325
+ /** Draw Jan 1 – Dec 31 of this year. Wins over `start` / `end`. */
3326
+ year?: number;
3327
+ /** 0 puts Sunday on top, 1 Monday. @default the locale's */
3328
+ weekStart?: 0 | 1;
3329
+ /** How many levels, including the empty level 0. @default 5 */
3330
+ levels?: number;
3331
+ /** How a value becomes a level. A day's own `level` always wins. @default "quantile" */
3332
+ levelScale?: ActivityScale;
3333
+ /** The hue of the intensity ramp. Decorative tones lead; `"success"` gives the GitHub look. @default "1" */
3334
+ tone?: ChartTone;
3335
+ /** Colour cells by `day.category` instead of one ramp — a label and tone (or colour) per key. */
3336
+ categories?: ChartCategories;
3337
+ /** Names the value in the tooltip and each cell's name: "contributions", or `{ one, other }` to pluralise. */
3338
+ unit?: string | {
3339
+ one: string;
3340
+ other: string;
3341
+ };
3342
+ /** Formats a value. @default in full up to 9,999, compact past it */
3343
+ formatValue?: (value: number) => string;
3344
+ /** Show a tooltip on hover, focus and tap; a function replaces its content. @default true */
3345
+ tooltip?: boolean | ((day: ActivityHeatmapDay) => ReactNode);
3346
+ /** The Less–More ramp, or swatches for categories. @default true */
3347
+ legend?: boolean;
3348
+ /** The ramp's end words. @default ["Less", "More"] */
3349
+ legendLabels?: [string, string];
3350
+ /** Short month names over each month's first week. @default true */
3351
+ monthLabels?: boolean;
3352
+ /** Which weekday names to show beside the rows. @default "alternate" (Mon, Wed, Fri) */
3353
+ weekdayLabels?: "alternate" | "all" | "none";
3354
+ /** The smallest a cell may get before the grid scrolls instead of shrinking: 10, 12 or 14 px. @default "md" */
3355
+ size?: "sm" | "md" | "lg";
3356
+ /** Grow cells to fill the width, up to 20 px. @default true */
3357
+ stretch?: boolean;
3358
+ /** The hovered or focused day, controlled. */
3359
+ activeDate?: string | null;
3360
+ defaultActiveDate?: string | null;
3361
+ onActiveDateChange?: (date: string | null) => void;
3362
+ /** The selected day, controlled. Selection is on only when `onSelectDate` is set. */
3363
+ selectedDate?: string | null;
3364
+ /** Called when a day is clicked or chosen with Enter / Space — as GitHub filters its feed below. */
3365
+ onSelectDate?: (date: string) => void;
3366
+ /** Draw something into a cell (an icon for a milestone, a reward, an outage). Rendered over the fill. */
3367
+ renderCell?: (day: ActivityHeatmapDay, cell: ActivityHeatmapCell) => ReactNode;
3368
+ /** Draw the empty grid, shimmering, while data loads. */
3369
+ loading?: boolean;
3370
+ /**
3371
+ * How much motion this component uses: `full` (default) inherits the app's
3372
+ * policy, `subtle` keeps feedback and drops the flourish, `off` stills it.
3373
+ * The weeks fading in as the grid scrolls into view is the flourish.
3374
+ */
3375
+ motion?: MotionLevel;
3376
+ /** BCP 47 locale for month and weekday names, numbers and plurals. */
3377
+ locale?: string;
3378
+ }
3379
+ /**
3380
+ * A calendar heatmap: one value per day as a grid of weeks by weekdays — the
3381
+ * GitHub contribution graph, for any daily measure (commits, habits, sales,
3382
+ * uptime). Levels come from the data by quartile unless a day brings its own;
3383
+ * categories colour days by source instead of intensity.
3384
+ *
3385
+ * The grid is a real `role="grid"` table, as GitHub's is: one tab stop, arrow
3386
+ * keys between days, each cell named with its date and value. It fills the
3387
+ * width down to `size`; narrower than that, the weeks scroll sideways (opening
3388
+ * on the latest) while the weekday labels and legend stay put.
3389
+ */
3390
+ 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;
3391
+ declare namespace ActivityHeatmap {
3392
+ var displayName: string;
3393
+ }
3394
+
3395
+ declare const activityHeatmapMeta: ComponentMeta;
3396
+
3397
+ interface ActivityWeek {
3398
+ /** Day numbers for each row, top to bottom; null where the day falls outside the range. */
3399
+ days: (number | null)[];
3400
+ }
3401
+ interface ActivityMonth {
3402
+ /** The first day of the month (or of the range, for a partial first month). */
3403
+ day: number;
3404
+ /** The week column the month's header starts at. */
3405
+ week: number;
3406
+ /** How many week columns it spans. */
3407
+ span: number;
3408
+ }
3409
+ interface ActivityGrid {
3410
+ start: number;
3411
+ end: number;
3412
+ weekStart: 0 | 1;
3413
+ /** The day number in the top-left slot, which may sit before `start`. */
3414
+ origin: number;
3415
+ weeks: ActivityWeek[];
3416
+ /** Month header segments, left to right, spanning every week column between them. */
3417
+ months: ActivityMonth[];
3418
+ }
3419
+ /**
3420
+ * The weeks-by-weekdays grid for a range: one column per week, one row per
3421
+ * weekday starting at `weekStart`, with partial first and last weeks padded by
3422
+ * nulls. Month segments start at the week holding each month's 1st; the weeks
3423
+ * before the first 1st belong to the range's opening month.
3424
+ */
3425
+ declare function activityGrid({ start, end, weekStart }: {
3426
+ start: number;
3427
+ end: number;
3428
+ weekStart: 0 | 1;
3429
+ }): ActivityGrid;
3430
+
3247
3431
  type StepStatus = "complete" | "current" | "upcoming" | "error";
3248
3432
  type StepperOrientation = "horizontal" | "vertical";
3249
3433
  type StepperIndicator = "number" | "dot";
@@ -3878,7 +4062,7 @@ type SheetSnapPoint = number | string;
3878
4062
  * to a panel that slides sideways.
3879
4063
  */
3880
4064
  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;
4065
+ declare function Sheet<Payload = unknown>({ snapPoints, snapPoint, defaultSnapPoint, onSnapPointChange, snapToSequentialPoints, open, onOpenChange, ...props }: SheetProps<Payload>): react.JSX.Element;
3882
4066
  declare const SheetTrigger: Drawer.Trigger;
3883
4067
  declare const SheetClose: Drawer.Close;
3884
4068
  declare const SheetPortal: {
@@ -3888,7 +4072,7 @@ declare const SheetPortal: {
3888
4072
  type ContentProps$4 = Omit<ComponentProps<typeof Drawer.Popup>, "className"> & VariantProps<typeof sheetVariants> & {
3889
4073
  className?: string;
3890
4074
  };
3891
- declare function SheetContent({ className, children, side, initialFocus, ref, style, ...props }: ContentProps$4): react.JSX.Element;
4075
+ declare function SheetContent({ className, children, side, initialFocus, finalFocus, ref, style, ...props }: ContentProps$4): react.JSX.Element;
3892
4076
  type TitleProps$1 = Omit<ComponentProps<typeof Drawer.Title>, "className"> & {
3893
4077
  className?: string;
3894
4078
  };
@@ -4071,7 +4255,7 @@ declare namespace DataTable {
4071
4255
  declare const dataTableMeta: ComponentMeta;
4072
4256
 
4073
4257
  /**
4074
- * A chip someone clicks. Two appearances, two sizes, one `selected` state each:
4258
+ * A chip someone clicks. Two appearances, three sizes, one `selected` state each:
4075
4259
  *
4076
4260
  * - `solid` (default): the filter-row chip. Rests on the secondary surface;
4077
4261
  * `selected` lifts it onto the primary surface so the active filter reads at
@@ -4082,15 +4266,24 @@ declare const dataTableMeta: ComponentMeta;
4082
4266
  * `selected` (the reader's own choice) takes a primary tint and a soft
4083
4267
  * primary edge — distinct from rest without a heavy dark outline.
4084
4268
  *
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
4269
+ * All sizes are fixed heights. md sits on the density ladder's xs control
4270
+ * height (28px), sm is 24px — the touch-target floor, deliberately NOT a
4271
+ * ladder step, so a compact scope cannot shrink it under 24. md used to be
4087
4272
  * padding-sized (~18px) while sm was 28px, so the "small" chip was the taller
4088
4273
  * 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.
4274
+ * so all drop it. Semantic tokens only — theme-safe in light and dark.
4275
+ *
4276
+ * `lg` sits on `--control-sm` (32px, compact 28), the rung the spacing doctrine
4277
+ * gives toolbar controls: Button `sm`, Toggle and SearchInput `sm` stand on it
4278
+ * too, so a filter row beside a search field and its buttons is one height. A
4279
+ * page toolbar is the case it exists for ("All · Products · Open source" …
4280
+ * [Find a project]). md's 28px is the chip under or among content, and no text
4281
+ * field shares it — Input / SearchInput `xs` is the inset tool-panel field, a
4282
+ * different surface — so md beside a field is always a mismatch.
4090
4283
  */
4091
4284
  declare const pillVariants: (props?: ({
4092
4285
  appearance?: "outline" | "solid" | null | undefined;
4093
- size?: "sm" | "md" | null | undefined;
4286
+ size?: "sm" | "md" | "lg" | null | undefined;
4094
4287
  selected?: boolean | null | undefined;
4095
4288
  tone?: "blue" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "neutral" | null | undefined;
4096
4289
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -4108,8 +4301,10 @@ interface PillProps extends ComponentPropsWithRef<"button">, Omit<VariantProps<t
4108
4301
  * half clickable and half not.
4109
4302
  *
4110
4303
  * `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
4304
+ * content (a reaction, a tag on a card); `size="sm"` is the small chip under
4305
+ * content, `size="lg"` the toolbar chip that shares `--control-sm` with a
4306
+ * SearchInput `size="sm"` and Button `size="sm"` beside it. Use these rather
4307
+ * than restyling a Pill with classes — an override is
4113
4308
  * a look that exists nowhere else in the system. `tone="blue"` (any palette
4114
4309
  * family) colours the chip as a category, like a tag picker's choices.
4115
4310
  */
@@ -5214,6 +5409,13 @@ interface CodeBlockProps extends ComponentPropsWithRef<"div"> {
5214
5409
  * What Snippet was.
5215
5410
  */
5216
5411
  prompt?: string;
5412
+ /**
5413
+ * Wrap long lines instead of scrolling them. For prose in a code face (a
5414
+ * prompt to paste into an agent, a log line), where the end of a line
5415
+ * scrolled out of view hides what it says. Code keeps scrolling: wrapping
5416
+ * breaks the indentation it is read by.
5417
+ */
5418
+ wrap?: boolean;
5217
5419
  }
5218
5420
  /**
5219
5421
  * A multi-line code block. An optional header bar carries the filename and a
@@ -5224,7 +5426,7 @@ interface CodeBlockProps extends ComponentPropsWithRef<"div"> {
5224
5426
  * Highlighting is opt-in through `highlight` or `CodeHighlightProvider`.
5225
5427
  * Soft-square (rounded-md), never a pill.
5226
5428
  */
5227
- declare function CodeBlock({ code, filename, showCopy, highlight, prompt, className, ...props }: CodeBlockProps): react.JSX.Element;
5429
+ declare function CodeBlock({ code, filename, showCopy, highlight, prompt, wrap, className, ...props }: CodeBlockProps): react.JSX.Element;
5228
5430
  declare namespace CodeBlock {
5229
5431
  var displayName: string;
5230
5432
  }
@@ -6610,6 +6812,14 @@ interface PageHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
6610
6812
  * shows a PageHeader as an example. @default "h1"
6611
6813
  */
6612
6814
  titleAs?: "h1" | "h2";
6815
+ /**
6816
+ * The title's scale. `md` (text-heading-2 over a text-body-sm description)
6817
+ * for product pages: settings, lists, dashboards. `lg` (text-display-lg over
6818
+ * a text-body-lg lede) for an editorial page: a personal site, a marketing
6819
+ * page, an article index. Display type is never product chrome, so keep `lg`
6820
+ * off app routes. @default "md"
6821
+ */
6822
+ size?: "md" | "lg";
6613
6823
  }
6614
6824
  /**
6615
6825
  * PageHeader — an in-flow page heading block: a title row (optional back control
@@ -6623,9 +6833,10 @@ interface PageHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
6623
6833
  * must never be cut — and the actions drop under it when the row runs out of
6624
6834
  * room. Beside a back control or actions the title sits in a band one control
6625
6835
  * tall, so a one-line title centres on the buttons and a wrapped one starts level
6626
- * with them.
6836
+ * with them. A title whose line is taller than the controls (`size="lg"`) is
6837
+ * lifted by half the difference instead, so its first line still centres on them.
6627
6838
  */
6628
- declare function PageHeader({ title, description, back, actions, titleAs: Title, className, children, ...props }: PageHeaderProps): react.JSX.Element;
6839
+ declare function PageHeader({ title, description, back, actions, titleAs: Title, size, className, children, ...props }: PageHeaderProps): react.JSX.Element;
6629
6840
  declare namespace PageHeader {
6630
6841
  var displayName: string;
6631
6842
  }
@@ -6653,11 +6864,13 @@ interface SectionHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title">
6653
6864
  */
6654
6865
  titleId?: string;
6655
6866
  /**
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"
6867
+ * Visual weight, independent of the heading level. `lg` (text-heading-2 over
6868
+ * a text-body-md description) for an editorial page's sections, under a
6869
+ * `PageHeader size="lg"`; `md` (text-heading-3) for a page's sections and
6870
+ * shelves; `sm` (text-heading-4) for a denser set — settings groups,
6871
+ * subsections, a sidebar's sections. @default "md"
6659
6872
  */
6660
- size?: "md" | "sm";
6873
+ size?: "lg" | "md" | "sm";
6661
6874
  }
6662
6875
  /**
6663
6876
  * SectionHeader — the heading block for one section of a page: a title, an
@@ -6675,7 +6888,9 @@ interface SectionHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title">
6675
6888
  *
6676
6889
  * It shares PageHeader's title row: the title wraps rather than truncating,
6677
6890
  * 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
6891
+ * runs out of room. A title whose line is taller than the controls (`lg`, or
6892
+ * a denser register's shorter ladder) is lifted by half the difference, so its
6893
+ * first line stays centred on them. It carries no outer spacing — the Stack or Page it sits in
6679
6894
  * owns the rhythm between the header and what it introduces.
6680
6895
  */
6681
6896
  declare function SectionHeader({ title, description, actions, titleAs, titleId, size, className, ...props }: SectionHeaderProps): react.JSX.Element;
@@ -6685,7 +6900,20 @@ declare namespace SectionHeader {
6685
6900
 
6686
6901
  declare const sectionHeaderMeta: ComponentMeta;
6687
6902
 
6688
- interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChange" | "value" | "defaultValue"> {
6903
+ /** The rungs of the control ladder a SearchInput stands on. */
6904
+ type SearchInputSize = "md" | "sm" | "xs";
6905
+ interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChange" | "value" | "defaultValue" | "size"> {
6906
+ /**
6907
+ * Which rung of the control ladder the field stands on — the same names as
6908
+ * Input, Select and Combobox. `md` is the form field. `sm` is the toolbar
6909
+ * field: it shares `--control-sm` with Pill `lg` and Button `sm`, so a row
6910
+ * of filter chips beside the search is one height. `xs` is the inset
6911
+ * tool-panel field, Input `xs`'s surface. The magnifier and clear button
6912
+ * scale and stay centred at every rung. The native numeric `size` attribute
6913
+ * is omitted; the field's width comes from `className`.
6914
+ * @default "md"
6915
+ */
6916
+ size?: SearchInputSize;
6689
6917
  /** Controlled value of the search field. */
6690
6918
  value?: string;
6691
6919
  /**
@@ -6719,7 +6947,7 @@ interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChang
6719
6947
  * Controlled via `value` + `onValueChange`, or uncontrolled via `defaultValue`;
6720
6948
  * pass `onClear` to hook the reset. `className` sizes the whole field.
6721
6949
  */
6722
- declare function SearchInput({ value, defaultValue, onValueChange, onClear, placeholder, className, inputClassName, ref, type, ...props }: SearchInputProps): react.JSX.Element;
6950
+ declare function SearchInput({ value, defaultValue, onValueChange, onClear, placeholder, className, inputClassName, size, ref, type, ...props }: SearchInputProps): react.JSX.Element;
6723
6951
  declare namespace SearchInput {
6724
6952
  var displayName: string;
6725
6953
  }
@@ -8692,6 +8920,14 @@ interface MediaImageProps extends Omit<ComponentPropsWithRef<"div">, "children">
8692
8920
  * the muted surface — a logo, a product shot that must not be cropped.
8693
8921
  */
8694
8922
  fit?: "cover" | "contain";
8923
+ /**
8924
+ * Where the image sits in its frame — CSS `object-position`, the sibling of
8925
+ * `fit`. Under `cover` it is the part kept when the crop trims the rest (a
8926
+ * face at `"50% 30%"`, a horizon at `"bottom"`); under `contain` it is the
8927
+ * side the letterbox gives way to. Takes any object-position value.
8928
+ * @default "center"
8929
+ */
8930
+ position?: CSSProperties["objectPosition"];
8695
8931
  /** `srcSet` / `sizes` for responsive images, passed to the `<img>`. */
8696
8932
  srcSet?: string;
8697
8933
  sizes?: string;
@@ -8722,7 +8958,7 @@ interface MediaImageProps extends Omit<ComponentPropsWithRef<"div">, "children">
8722
8958
  * — painting the art first would flash a colourful stand-in for a frame and
8723
8959
  * then swap it for the photo. Once loaded, the image fades in.
8724
8960
  */
8725
- declare function MediaImage({ src, alt, seed, fallback, fit, srcSet, sizes, loading, className, ...props }: MediaImageProps): react.JSX.Element;
8961
+ declare function MediaImage({ src, alt, seed, fallback, fit, position, srcSet, sizes, loading, className, ...props }: MediaImageProps): react.JSX.Element;
8726
8962
  declare namespace MediaImage {
8727
8963
  var displayName: string;
8728
8964
  }
@@ -8760,6 +8996,13 @@ interface MediaTileProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
8760
8996
  alt?: string;
8761
8997
  /** Seeds the fallback art. Defaults to `title` when it is a string. */
8762
8998
  seed?: string | number;
8999
+ /**
9000
+ * Which part of the cover the crop keeps — CSS `object-position`, passed to
9001
+ * the cover's MediaImage: `"50% 30%"` for a face, `"top"` for a poster's
9002
+ * title. Store it with the image when each one frames differently.
9003
+ * @default "center"
9004
+ */
9005
+ position?: CSSProperties["objectPosition"];
8763
9006
  /**
8764
9007
  * The cover's shape: `square` (albums, podcasts, playlists), `video` (16:9),
8765
9008
  * `poster` (2:3 — films, books), or any width / height ratio.
@@ -8823,7 +9066,7 @@ interface MediaTileProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
8823
9066
  * and the cover is drawn above it with `order`, so focus moves the way a
8824
9067
  * reader names the item — what it is, who made it, then what to do with it.
8825
9068
  */
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;
9069
+ 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
9070
  declare namespace MediaTile {
8828
9071
  var displayName: string;
8829
9072
  }
@@ -9974,6 +10217,6 @@ interface UseActiveSectionOptions {
9974
10217
  */
9975
10218
  declare function useActiveSection(ids: readonly string[], { offset, root }?: UseActiveSectionOptions): string | null;
9976
10219
 
9977
- declare const SABLE_UI_VERSION: "0.17.0";
10220
+ declare const SABLE_UI_VERSION: "0.18.0";
9978
10221
 
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 };
10222
+ 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, 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, activityGrid, activityHeatmapMeta, activityLevels, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonGroupMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, caretMenuMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, confirmButtonMeta, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputGroupMeta, inputMeta, isPaletteColor, isTransparent, kbdMeta, labelMeta, likeButtonMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, menubarMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, motionAttribute, navigationMenuMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, numberTickerMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, reactionPickerMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, sectionRailMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolCallMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useActiveSection, useAnchoredDensity, useAutoSize, useCaretTrigger, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMatchHighlight, useMotion, useMotionLevel, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useShake, useSidebar, useSmoothWheel, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
package/dist/index.js CHANGED
@@ -82,6 +82,10 @@ export * from "./components/pie-chart/index.js";
82
82
  export * from "./components/radar-chart/index.js";
83
83
  export * from "./components/radial-chart/index.js";
84
84
  export * from "./components/sparkline/index.js";
85
+ export * from "./components/activity-heatmap/index.js";
86
+ import { mergeActivity } from "./lib/chart/activity.js";
87
+ import { activityGrid } from "./lib/chart/calendar.js";
88
+ import { activityLevels } from "./lib/chart/heat.js";
85
89
  import {
86
90
  CHART_SERIES_COUNT,
87
91
  chartColor,
@@ -183,7 +187,7 @@ import {
183
187
  } from "./lib/use-caret-trigger.js";
184
188
  import { STATUS_TONES, STATUS_TONE_ICON } from "./lib/status-tone.js";
185
189
  import { PALETTE_COLORS, PALETTE_FAMILIES, PALETTE_SCALES, PALETTE_STEPS, PALETTE_TONES, isPaletteColor } from "./lib/palette.js";
186
- var SABLE_UI_VERSION = "0.17.0";
190
+ var SABLE_UI_VERSION = "0.18.0";
187
191
  export {
188
192
  APP_SHELL_TOKENS,
189
193
  ART_TOKENS,
@@ -220,6 +224,8 @@ export {
220
224
  TYPE_SCALE_TOKENS,
221
225
  TYPE_UI_TOKENS,
222
226
  WORKSPACE_SURFACE_TOKENS,
227
+ activityGrid,
228
+ activityLevels,
223
229
  applySableColorMode,
224
230
  applySableTheme,
225
231
  chartColor,
@@ -232,6 +238,7 @@ export {
232
238
  getThemeManifest,
233
239
  isPaletteColor,
234
240
  isThemeId,
241
+ mergeActivity,
235
242
  switchMeta,
236
243
  themeIds,
237
244
  themeManifestById,
@@ -8,14 +8,11 @@ function AspectBox({
8
8
  children,
9
9
  ...rest
10
10
  }) {
11
- const mergedStyle = {
12
- aspectRatio: String(ratio),
13
- ...style
14
- };
11
+ const mergedStyle = { "--sable-aspect": String(ratio), ...style };
15
12
  return /* @__PURE__ */ jsx(
16
13
  "div",
17
14
  {
18
- className: cn("relative w-full overflow-hidden", className),
15
+ className: cn("relative aspect-(--sable-aspect) w-full overflow-hidden", className),
19
16
  style: mergedStyle,
20
17
  ...rest,
21
18
  children
@@ -2,12 +2,16 @@
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  function Bleed({ className, style, children, ref, ...rest }) {
5
- const mergedStyle = {
6
- width: "100cqw",
7
- marginInline: "calc(50% - 50cqw)",
8
- ...style
9
- };
10
- return /* @__PURE__ */ jsx("div", { ref, className: cn(className), style: mergedStyle, ...rest, children });
5
+ return /* @__PURE__ */ jsx(
6
+ "div",
7
+ {
8
+ ref,
9
+ className: cn("mx-[calc(50%_-_50cqw)] w-[100cqw]", className),
10
+ style,
11
+ ...rest,
12
+ children
13
+ }
14
+ );
11
15
  }
12
16
  Bleed.displayName = "Bleed";
13
17
  export {
@@ -10,11 +10,19 @@ var NAMED_MAX = {
10
10
  function Center({ max, className, style, children, ref, ...rest }) {
11
11
  const maxWidth = max ? NAMED_MAX[max] ?? max : void 0;
12
12
  const mergedStyle = {
13
- marginInline: "auto",
14
- ...maxWidth ? { maxWidth } : null,
13
+ ...maxWidth ? { "--sable-center-max": maxWidth } : null,
15
14
  ...style
16
15
  };
17
- return /* @__PURE__ */ jsx("div", { ref, className: cn("w-full", className), style: mergedStyle, ...rest, children });
16
+ return /* @__PURE__ */ jsx(
17
+ "div",
18
+ {
19
+ ref,
20
+ className: cn("mx-auto w-full", maxWidth && "max-w-(--sable-center-max)", className),
21
+ style: mergedStyle,
22
+ ...rest,
23
+ children
24
+ }
25
+ );
18
26
  }
19
27
  export {
20
28
  Center
@@ -21,8 +21,8 @@ function Columns({
21
21
  }) {
22
22
  const resolvedGap = resolveGap(gap);
23
23
  const mergedStyle = {
24
- rowGap: resolvedGap,
25
- columnGap: cappedColumnGap(resolvedGap),
24
+ "--sable-columns-row-gap": resolvedGap,
25
+ "--sable-columns-column-gap": cappedColumnGap(resolvedGap),
26
26
  ...responsiveVars("--cols", count),
27
27
  ...style
28
28
  };
@@ -31,7 +31,10 @@ function Columns({
31
31
  {
32
32
  ref,
33
33
  "data-sable-grid-cols": true,
34
- className: cn(className),
34
+ className: cn(
35
+ "grid gap-x-(--sable-columns-column-gap) gap-y-(--sable-columns-row-gap)",
36
+ className
37
+ ),
35
38
  style: mergedStyle,
36
39
  ...rest,
37
40
  children