@crazy-staff/ui 0.0.0-stage → 0.2.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.
@@ -0,0 +1,3887 @@
1
+ import { ClassValue } from "clsx";
2
+ import { registerHyperellipse } from "hyperellipse";
3
+ import { Button as Button$1 } from "@base-ui/react/button";
4
+ import * as React from "react";
5
+ import { Input as Input$1 } from "@base-ui/react/input";
6
+ import { Switch as Switch$1 } from "@base-ui/react/switch";
7
+ import { HTMLMotionProps } from "motion/react";
8
+ import { Field as Field$1 } from "@base-ui/react/field";
9
+ import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
10
+ import { CheckboxGroup as CheckboxGroup$1 } from "@base-ui/react/checkbox-group";
11
+ import { Radio as Radio$1 } from "@base-ui/react/radio";
12
+ import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";
13
+ import { Select as Select$1 } from "@base-ui/react/select";
14
+ import { Slider as Slider$1 } from "@base-ui/react/slider";
15
+ import { Toggle as Toggle$1 } from "@base-ui/react/toggle";
16
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
17
+ import { NumberField as NumberField$1 } from "@base-ui/react/number-field";
18
+ import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
19
+ import { Popover as Popover$1 } from "@base-ui/react/popover";
20
+ import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
21
+ import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
22
+ import { Drawer as Drawer$1 } from "@base-ui/react/drawer";
23
+ import { Menu } from "@base-ui/react/menu";
24
+ import { ContextMenu as ContextMenu$1 } from "@base-ui/react/context-menu";
25
+ import { PreviewCard } from "@base-ui/react/preview-card";
26
+ import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
27
+ import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
28
+ import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
29
+ import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
30
+ import { Separator as Separator$1 } from "@base-ui/react/separator";
31
+ import { Progress as Progress$1 } from "@base-ui/react/progress";
32
+ import { useRender } from "@base-ui/react/use-render";
33
+ import { ScrollArea as ScrollArea$1 } from "@base-ui/react/scroll-area";
34
+ import { Combobox as Combobox$1 } from "@base-ui/react/combobox";
35
+ import { Autocomplete } from "@base-ui/react/autocomplete";
36
+ import { OTPField } from "@base-ui/react/otp-field";
37
+ import { Menubar as Menubar$1 } from "@base-ui/react/menubar";
38
+ import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
39
+ import useEmblaCarousel, { UseEmblaCarouselType } from "embla-carousel-react";
40
+ import { ChartCurve } from "@tanstack/charts";
41
+ import { ChartProps as ChartProps$1, RendererChart } from "@tanstack/react-charts/tooltip";
42
+ import { ColumnDef, ReactTable, Row, RowData, TableOptions } from "@tanstack/react-table";
43
+ import { GroupProps, PanelProps, SeparatorProps as SeparatorProps$1 } from "react-resizable-panels";
44
+ import { VariantProps } from "tailwind-variants";
45
+ /**
46
+ * tailwind-merge has to know our theme keys, otherwise it can't tell that
47
+ * `rounded-card` overrides `rounded-control` or that `h-control` is a height.
48
+ * The same config feeds both `cn()` and the `tv()` factory so a single merge
49
+ * table is used everywhere.
50
+ */
51
+ export declare const twMergeConfig: {
52
+ readonly extend: {
53
+ readonly theme: {
54
+ readonly color: readonly ['background', 'foreground', 'frame', 'popover', 'hover', 'surface', 'surface-2', 'muted', 'border', 'border-strong', 'input', 'input-border', 'ring', 'accent', 'accent-foreground', 'accent-soft', 'accent-soft-foreground', 'danger', 'danger-foreground', 'success', 'warning'];
55
+ readonly radius: readonly ['chip', 'control-sm', 'control', 'control-lg', 'item', 'card', 'panel', 'switch'];
56
+ readonly shadow: readonly ['control', 'button', 'glow', 'card', 'card-hover', 'overlay'];
57
+ readonly font: readonly ['sans', 'mono', 'heading'];
58
+ readonly spacing: readonly ['control', 'control-sm', 'control-lg'];
59
+ readonly ease: readonly ['ui', 'spring'];
60
+ };
61
+ };
62
+ };
63
+ /** Join class names and resolve Tailwind conflicts (last one wins). */
64
+ export declare function cn(...inputs: ClassValue[]): string;
65
+ /** `tv` preconfigured with our tailwind-merge table. */
66
+ export declare const tv: import("tailwind-variants").TV<import("tailwind-variants").TVCustomConfig>;
67
+ type Options$3 = Parameters<typeof registerHyperellipse>[0];
68
+ /**
69
+ * Turns on squircle corners everywhere the `squircle` class is used. Chromium renders the CSS
70
+ * `corner-shape` property natively; Firefox (Zen) and Safari get the `hyperellipse` fallback.
71
+ * Call once on the client; calling again returns the same controller. No-op during SSR.
72
+ *
73
+ * When the fallback runs, `<html data-squircle-fallback>` is set. The theme then stops
74
+ * transitioning background, border and shadow on squircle elements: the fallback paints them
75
+ * into an SVG layer from the computed style and would capture a half-way (transparent) colour.
76
+ */
77
+ export declare function registerSquircles(options?: Options$3): import("hyperellipse").HyperellipseController;
78
+ export declare const buttonStyles: import("tailwind-variants").TVReturnType<{
79
+ variant: {
80
+ solid: string;
81
+ soft: string;
82
+ outline: string;
83
+ ghost: string;
84
+ danger: string;
85
+ };
86
+ size: {
87
+ sm: string;
88
+ md: string;
89
+ lg: string;
90
+ icon: string;
91
+ 'icon-sm': string;
92
+ };
93
+ /** A soft accent glow under solid buttons. Off by default; use it for the one main action. */
94
+ glow: {
95
+ true: string;
96
+ false: string;
97
+ };
98
+ }, undefined, string[], undefined, undefined, undefined>;
99
+ interface ButtonProps extends React.ComponentPropsWithRef<typeof Button$1>, VariantProps<typeof buttonStyles> {}
100
+ /**
101
+ * The primary action control. Token-driven: radius, height, shadow and accent
102
+ * all come from `--cui-*`, so an app restyles every button by overriding tokens.
103
+ */
104
+ export declare function Button({ className, variant, size, glow, ...props }: ButtonProps): React.JSX.Element;
105
+ export declare const chipStyles: import("tailwind-variants").TVReturnType<{
106
+ variant: {
107
+ soft: string;
108
+ solid: string;
109
+ outline: string;
110
+ neutral: string;
111
+ /** Status chips: a faint tint of the status colour with the colour itself as ink. */
112
+ success: string;
113
+ warning: string;
114
+ danger: string;
115
+ };
116
+ size: {
117
+ sm: string;
118
+ md: string;
119
+ };
120
+ }, undefined, string[], undefined, undefined, undefined>;
121
+ interface ChipProps extends React.ComponentPropsWithRef<'span'>, VariantProps<typeof chipStyles> {}
122
+ /** A small status label ("verified", "new", a tag). Smallest radius of the scale. */
123
+ export declare function Chip({ className, variant, size, ...props }: ChipProps): React.JSX.Element;
124
+ export declare const inputStyles: import("tailwind-variants").TVReturnType<{
125
+ size: {
126
+ sm: string;
127
+ md: string;
128
+ lg: string;
129
+ };
130
+ }, undefined, string[], undefined, undefined, undefined>;
131
+ interface InputProps extends Omit<React.ComponentPropsWithRef<typeof Input$1>, 'size'>, VariantProps<typeof inputStyles> {}
132
+ /** A single-line text field. Works standalone or inside a Base UI `Field`. */
133
+ export declare function Input({ className, size, ...props }: InputProps): React.JSX.Element;
134
+ export declare const switchStyles: import("tailwind-variants").TVReturnType<{
135
+ size: {
136
+ sm: {
137
+ root: string;
138
+ thumb: string;
139
+ };
140
+ md: {
141
+ root: string;
142
+ thumb: string;
143
+ };
144
+ lg: {
145
+ root: string;
146
+ thumb: string;
147
+ };
148
+ };
149
+ }, {
150
+ root: string[];
151
+ thumb: string[];
152
+ label: string[];
153
+ text: string;
154
+ description: string;
155
+ }, undefined, undefined, undefined, undefined>;
156
+ interface SwitchProps extends Omit<React.ComponentPropsWithRef<typeof Switch$1.Root>, 'className'>, VariantProps<typeof switchStyles> {
157
+ /** Text next to the switch; the whole row becomes clickable. */
158
+ label?: React.ReactNode;
159
+ /** A muted line under the label. */
160
+ description?: React.ReactNode;
161
+ /** Classes for the row (or the switch, without a label), merged last. */
162
+ className?: string;
163
+ /** Override individual slot class names. */
164
+ classNames?: {
165
+ root?: string;
166
+ thumb?: string;
167
+ label?: string;
168
+ description?: string;
169
+ };
170
+ }
171
+ /**
172
+ * An on/off switch. The thumb glides with a spring ease (zeroed by reduced motion through the tokens).
173
+ * With `label`, the switch sits at the end of a clickable row, like a settings list.
174
+ */
175
+ export declare function Switch({ className, classNames, size, label, description, ...props }: SwitchProps): React.JSX.Element;
176
+ export declare const cardStyles: import("tailwind-variants").TVReturnType<{
177
+ interactive: {
178
+ true: {
179
+ root: string;
180
+ };
181
+ };
182
+ }, {
183
+ root: string[];
184
+ header: string;
185
+ title: string;
186
+ description: string;
187
+ body: string;
188
+ footer: string;
189
+ }, undefined, undefined, undefined, undefined>;
190
+ type DivProps$3 = React.ComponentPropsWithRef<'div'>;
191
+ interface CardRootProps extends DivProps$3, VariantProps<typeof cardStyles> {}
192
+ interface CardProps extends Omit<CardRootProps, 'title'> {
193
+ /** Heading of the card. With a title or description, children go into `Card.Body`. */
194
+ title?: React.ReactNode;
195
+ description?: React.ReactNode;
196
+ /** Actions at the bottom (buttons, links). */
197
+ footer?: React.ReactNode;
198
+ classNames?: {
199
+ header?: string;
200
+ title?: string;
201
+ description?: string;
202
+ body?: string;
203
+ footer?: string;
204
+ };
205
+ }
206
+ declare function CardRoot({ className, interactive, ...props }: CardRootProps): React.JSX.Element;
207
+ declare function CardHeader({ className, ...props }: DivProps$3): React.JSX.Element;
208
+ declare function CardTitle({ className, ...props }: React.ComponentPropsWithRef<'h3'>): React.JSX.Element;
209
+ declare function CardDescription({ className, ...props }: React.ComponentPropsWithRef<'p'>): React.JSX.Element;
210
+ declare function CardBody({ className, ...props }: DivProps$3): React.JSX.Element;
211
+ declare function CardFooter({ className, ...props }: DivProps$3): React.JSX.Element;
212
+ /**
213
+ * Short form: `<Card title="Infinite mana" description="…" footer={<Button>Enable</Button>}>…</Card>`.
214
+ * Without `title`, `description` or `footer` it is just the surface and children render as they are.
215
+ */
216
+ declare function CardSimple({ title, description, footer, classNames, children, ...props }: CardProps): React.JSX.Element;
217
+ /**
218
+ * A surface that groups content.
219
+ * <Card title="Infinite mana" footer={…}>…</Card>
220
+ * or compound: <Card.Root><Card.Header>…</Card.Header><Card.Body>…</Card.Body></Card.Root>
221
+ */
222
+ export declare const Card: typeof CardSimple & {
223
+ Root: typeof CardRoot;
224
+ Header: typeof CardHeader;
225
+ Title: typeof CardTitle;
226
+ Description: typeof CardDescription;
227
+ Body: typeof CardBody;
228
+ Footer: typeof CardFooter;
229
+ };
230
+ interface RevealProps extends HTMLMotionProps<'div'> {
231
+ /** Seconds before the element starts to appear. */
232
+ delay?: number;
233
+ /** Animate only the first time it scrolls into view. @default true */
234
+ once?: boolean;
235
+ }
236
+ /** Fades and lifts its content in when it scrolls into view. Static with reduced motion. */
237
+ declare function RevealRoot({ delay, once, transition, ...props }: RevealProps): import("react").JSX.Element;
238
+ interface RevealGroupProps extends HTMLMotionProps<'div'> {
239
+ /** Seconds between two children. @default 0.06 */
240
+ stagger?: number;
241
+ once?: boolean;
242
+ }
243
+ /** Reveals its `Reveal.Item` children one after another (cards in a grid, list rows). */
244
+ declare function RevealGroup({ stagger, once, ...props }: RevealGroupProps): import("react").JSX.Element;
245
+ declare function RevealItem(props: HTMLMotionProps<'div'>): import("react").JSX.Element;
246
+ export declare const Reveal: typeof RevealRoot & {
247
+ Group: typeof RevealGroup;
248
+ Item: typeof RevealItem;
249
+ };
250
+ export declare const revealEase: readonly [0.22, 1, 0.36, 1];
251
+ interface LabelProps extends React.ComponentPropsWithRef<'label'> {
252
+ /** Adds a required marker after the text. Put `required` on the control too. */
253
+ required?: boolean;
254
+ /** Dims the label to match a disabled control. */
255
+ disabled?: boolean;
256
+ }
257
+ /** A label for a form control. Inside a `Field`, use `Field.Label` instead. */
258
+ export declare function Label({ className, required, disabled, children, ...props }: LabelProps): React.JSX.Element;
259
+ export declare const labelStyles: import("tailwind-variants").TVReturnType<{}, {
260
+ base: string[];
261
+ required: string;
262
+ }, undefined, undefined, undefined, undefined>;
263
+ declare function FieldRoot({ className, ...props }: React.ComponentPropsWithRef<typeof Field$1.Root>): React.JSX.Element;
264
+ declare function FieldLabel({ className, required, children, ...props }: React.ComponentPropsWithRef<typeof Field$1.Label> & {
265
+ required?: boolean;
266
+ }): React.JSX.Element;
267
+ /**
268
+ * The text input of the field, styled like `Input`. To put another text control in a field, pass it
269
+ * as `render` (e.g. `render={<Textarea />}`): it then keeps its own styles.
270
+ */
271
+ declare function FieldControl({ className, render, ...props }: React.ComponentPropsWithRef<typeof Field$1.Control>): React.JSX.Element;
272
+ declare function FieldDescription({ className, ...props }: React.ComponentPropsWithRef<typeof Field$1.Description>): React.JSX.Element;
273
+ declare function FieldError({ className, ...props }: React.ComponentPropsWithRef<typeof Field$1.Error>): React.JSX.Element;
274
+ interface FieldProps extends Omit<React.ComponentPropsWithRef<typeof Field$1.Root>, 'className'> {
275
+ /** The label above the control. */
276
+ label?: React.ReactNode;
277
+ /** Adds a required marker to the label. Put `required` on the control too. */
278
+ required?: boolean;
279
+ /** Help text under the control, linked with `aria-describedby`. */
280
+ description?: React.ReactNode;
281
+ /** Shown when the control is invalid (or always, with `match={true}` via `errorMatch`). */
282
+ error?: React.ReactNode;
283
+ /** Passed to `Field.Error`'s `match` (e.g. `'valueMissing'`, or `true` to always show). */
284
+ errorMatch?: React.ComponentProps<typeof Field$1.Error>['match'];
285
+ className?: string;
286
+ classNames?: {
287
+ root?: string;
288
+ label?: string;
289
+ description?: string;
290
+ error?: string;
291
+ };
292
+ children?: React.ReactNode;
293
+ }
294
+ /**
295
+ * A labelled form field. Short form: `<Field label="Name" description="…"><Field.Control /></Field>`.
296
+ * Compound: `Field.Root`, `Field.Label`, `Field.Control`, `Field.Description`, `Field.Error`.
297
+ */
298
+ declare function FieldSimple({ label, required, description, error, errorMatch, className, classNames, children, ...props }: FieldProps): React.JSX.Element;
299
+ export declare const Field: typeof FieldSimple & {
300
+ Root: typeof FieldRoot;
301
+ Label: typeof FieldLabel;
302
+ Control: typeof FieldControl;
303
+ Description: typeof FieldDescription;
304
+ Error: typeof FieldError;
305
+ };
306
+ export declare const fieldStyles: import("tailwind-variants").TVReturnType<{}, {
307
+ root: string;
308
+ label: string;
309
+ description: string;
310
+ error: string;
311
+ }, undefined, undefined, undefined, undefined>;
312
+ /**
313
+ * The native resize grip is off (`resize-none`): with squircle corners the polyfill in Firefox/Safari
314
+ * draws stray lines around it. A small grip of our own sits in the bottom-right padding instead.
315
+ */
316
+ export declare const textareaStyles: import("tailwind-variants").TVReturnType<{
317
+ resize: {
318
+ none: {};
319
+ vertical: {
320
+ textarea: string;
321
+ };
322
+ };
323
+ }, {
324
+ root: string;
325
+ textarea: string[];
326
+ grip: string[];
327
+ }, undefined, undefined, undefined, undefined>;
328
+ interface TextareaProps extends Omit<React.ComponentPropsWithRef<'textarea'>, 'className'>, VariantProps<typeof textareaStyles> {
329
+ /** Grow (and shrink) with the content. Cap it with a `max-h-*` class; past that it scrolls. */
330
+ autoResize?: boolean;
331
+ /** Classes for the `<textarea>`, merged last. */
332
+ className?: string;
333
+ /** Classes per slot: `root` (the wrapper), `textarea`, `grip`. */
334
+ classNames?: {
335
+ root?: string;
336
+ textarea?: string;
337
+ grip?: string;
338
+ };
339
+ }
340
+ /**
341
+ * A multi-line text field. With `resize="vertical"` (default) a small grip in the bottom-right corner
342
+ * changes the height by dragging it or with the arrow keys; `autoResize` grows it with the content.
343
+ * No shadow and no native grip (squircle polyfill rules).
344
+ */
345
+ export declare function Textarea({ className, classNames, resize, autoResize, ref, onInput, disabled, value, ...props }: TextareaProps): React.JSX.Element;
346
+ type RootProps$1 = Omit<React.ComponentPropsWithRef<typeof Checkbox$1.Root>, 'className'> & {
347
+ className?: string;
348
+ };
349
+ /** The box itself, without the label row. Renders a `<span role="checkbox">` and a hidden input. */
350
+ declare function CheckboxRoot({ className, ...props }: RootProps$1): React.JSX.Element;
351
+ type IndicatorProps = Omit<React.ComponentPropsWithRef<typeof Checkbox$1.Indicator>, 'className'> & {
352
+ className?: string;
353
+ };
354
+ /** The tick (or the dash when indeterminate). Without children it draws the default icons. */
355
+ declare function CheckboxIndicator({ className, children, ...props }: IndicatorProps): React.JSX.Element;
356
+ interface CheckboxProps extends RootProps$1 {
357
+ /** Text next to the box; the whole row becomes clickable. */
358
+ label?: React.ReactNode;
359
+ /** A muted line under the label. */
360
+ description?: React.ReactNode;
361
+ /** Classes for the row (or the box, without a label), merged last. */
362
+ className?: string;
363
+ /** Classes per slot. */
364
+ classNames?: {
365
+ root?: string;
366
+ indicator?: string;
367
+ label?: string;
368
+ description?: string;
369
+ };
370
+ }
371
+ /** A box to tick. `indeterminate` (or a `parent` box in a group) shows a dash. */
372
+ declare function CheckboxSimple({ label, description, className, classNames, ...props }: CheckboxProps): React.JSX.Element;
373
+ interface CheckboxGroupProps extends Omit<React.ComponentPropsWithRef<typeof CheckboxGroup$1>, 'className'> {
374
+ className?: string;
375
+ }
376
+ /** Several checkboxes sharing one array value. */
377
+ export declare function CheckboxGroup({ className, ...props }: CheckboxGroupProps): React.JSX.Element;
378
+ export declare const Checkbox: typeof CheckboxSimple & {
379
+ Root: typeof CheckboxRoot;
380
+ Indicator: typeof CheckboxIndicator;
381
+ };
382
+ export declare const checkboxStyles: import("tailwind-variants").TVReturnType<{}, {
383
+ root: string[];
384
+ indicator: string[];
385
+ check: string;
386
+ dash: string;
387
+ label: string[];
388
+ text: string;
389
+ description: string;
390
+ group: string;
391
+ }, undefined, undefined, undefined, undefined>;
392
+ interface RadioProps extends Omit<React.ComponentPropsWithRef<typeof Radio$1.Root>, 'className'> {
393
+ label?: React.ReactNode;
394
+ description?: React.ReactNode;
395
+ className?: string;
396
+ classNames?: {
397
+ item?: string;
398
+ radio?: string;
399
+ indicator?: string;
400
+ description?: string;
401
+ };
402
+ }
403
+ /** One option of a `RadioGroup`. */
404
+ export declare function Radio({ label, description, className, classNames, ...props }: RadioProps): React.JSX.Element;
405
+ interface RadioGroupItem {
406
+ value: string;
407
+ label: React.ReactNode;
408
+ description?: React.ReactNode;
409
+ disabled?: boolean;
410
+ }
411
+ interface RadioGroupProps extends Omit<React.ComponentPropsWithRef<typeof RadioGroup$1>, 'className'> {
412
+ /** Short form: the options. Or pass `<Radio>` children. */
413
+ items?: RadioGroupItem[];
414
+ className?: string;
415
+ }
416
+ /** Pick one option. `<RadioGroup items={[…]} />` or `<RadioGroup><Radio value="a" label="A" /></RadioGroup>`. */
417
+ export declare function RadioGroup({ items, className, children, ...props }: RadioGroupProps): React.JSX.Element;
418
+ export declare const radioGroupStyles: import("tailwind-variants").TVReturnType<{}, {
419
+ group: string;
420
+ radio: string[];
421
+ indicator: string[];
422
+ item: string;
423
+ text: string;
424
+ description: string;
425
+ }, undefined, undefined, undefined, undefined>;
426
+ export declare const selectStyles: import("tailwind-variants").TVReturnType<{
427
+ size: {
428
+ sm: {
429
+ trigger: string;
430
+ };
431
+ md: {
432
+ trigger: string;
433
+ };
434
+ lg: {
435
+ trigger: string;
436
+ };
437
+ };
438
+ }, {
439
+ trigger: string[];
440
+ value: string;
441
+ icon: string;
442
+ positioner: string;
443
+ popup: string[];
444
+ item: string[];
445
+ itemIndicator: string;
446
+ groupLabel: string;
447
+ separator: string;
448
+ }, undefined, undefined, undefined, undefined>;
449
+ type Cls = {
450
+ className?: string;
451
+ };
452
+ type Props$4<C extends React.ElementType> = Omit<React.ComponentPropsWithRef<C>, 'className'> & Cls;
453
+ declare function SelectTrigger({ className, children, size, ...props }: Props$4<typeof Select$1.Trigger> & VariantProps<typeof selectStyles>): React.JSX.Element;
454
+ declare function SelectValue({ className, ...props }: Props$4<typeof Select$1.Value>): React.JSX.Element;
455
+ /** The popup: portal + positioner + popup + list in one. */
456
+ declare function SelectContent({ className, children, sideOffset, alignItemWithTrigger, ...props }: Props$4<typeof Select$1.Popup> & {
457
+ sideOffset?: number;
458
+ alignItemWithTrigger?: boolean;
459
+ }): React.JSX.Element;
460
+ declare function SelectItem({ className, children, ...props }: Props$4<typeof Select$1.Item>): React.JSX.Element;
461
+ declare function SelectGroupLabel({ className, ...props }: Props$4<typeof Select$1.GroupLabel>): React.JSX.Element;
462
+ declare function SelectSeparator({ className, ...props }: Props$4<typeof Select$1.Separator>): React.JSX.Element;
463
+ interface SelectOption {
464
+ value: string;
465
+ label: React.ReactNode;
466
+ disabled?: boolean;
467
+ }
468
+ interface SelectProps extends VariantProps<typeof selectStyles> {
469
+ /** The options. */
470
+ items: SelectOption[];
471
+ /** Shown in the trigger while nothing is picked. */
472
+ placeholder?: React.ReactNode;
473
+ /** The picked value (controlled). */
474
+ value?: string | null;
475
+ /** The value picked at first (uncontrolled). */
476
+ defaultValue?: string | null;
477
+ /** Called with the new value. */
478
+ onValueChange?: (value: string | null) => void;
479
+ /** Called when the popup opens or closes. */
480
+ onOpenChange?: (open: boolean) => void;
481
+ /** Turns the whole select off. */
482
+ disabled?: boolean;
483
+ /** Shows the value but blocks changes. */
484
+ readOnly?: boolean;
485
+ /** Field name, for native form submission. */
486
+ name?: string;
487
+ /** A value must be picked before the form submits. */
488
+ required?: boolean;
489
+ /** Id of the trigger, for an external `<Label htmlFor>`. */
490
+ id?: string;
491
+ 'aria-label'?: string;
492
+ /** Classes for the trigger, merged last. */
493
+ className?: string;
494
+ /** Classes per slot. */
495
+ classNames?: {
496
+ trigger?: string;
497
+ popup?: string;
498
+ item?: string;
499
+ };
500
+ }
501
+ /**
502
+ * Pick one value. Short form: `<Select items={[{ value, label }]} placeholder="…" />`.
503
+ * Compound: `Select.Root`, `Select.Trigger`, `Select.Value`, `Select.Content`, `Select.Item`,
504
+ * `Select.Group`, `Select.GroupLabel`, `Select.Separator`.
505
+ */
506
+ declare function SelectSimple({ items, placeholder, className, classNames, 'aria-label': ariaLabel, id, size, onValueChange, onOpenChange, ...props }: SelectProps): React.JSX.Element;
507
+ export declare const Select: typeof SelectSimple & {
508
+ Root: typeof Select$1.Root;
509
+ Trigger: typeof SelectTrigger;
510
+ Value: typeof SelectValue;
511
+ Content: typeof SelectContent;
512
+ Item: typeof SelectItem;
513
+ Group: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
514
+ GroupLabel: typeof SelectGroupLabel;
515
+ Separator: typeof SelectSeparator;
516
+ };
517
+ interface SliderProps extends Omit<React.ComponentPropsWithRef<typeof Slider$1.Root>, 'className'> {
518
+ /** Text above the track. */
519
+ label?: React.ReactNode;
520
+ /** Show the current value next to the label. */
521
+ showValue?: boolean;
522
+ /** Classes for the root, merged last. */
523
+ className?: string;
524
+ /** Classes per slot. */
525
+ classNames?: {
526
+ root?: string;
527
+ label?: string;
528
+ value?: string;
529
+ track?: string;
530
+ indicator?: string;
531
+ thumb?: string;
532
+ };
533
+ }
534
+ /**
535
+ * Pick a value on a track. Pass an array as `defaultValue` for a range (two thumbs).
536
+ * Compound parts (styled): `Slider.Root`, `Slider.Label`, `Slider.Value`, `Slider.Control`, `Slider.Track`,
537
+ * `Slider.Indicator`, `Slider.Thumb`.
538
+ */
539
+ declare function SliderSimple({ label, showValue, className, classNames, defaultValue, value, ...props }: SliderProps): React.JSX.Element;
540
+ type Part<C extends React.ElementType> = Omit<React.ComponentPropsWithRef<C>, 'className'> & {
541
+ className?: string;
542
+ };
543
+ declare function SliderRoot({ className, ...props }: Part<typeof Slider$1.Root>): React.JSX.Element;
544
+ declare function SliderLabel({ className, ...props }: Part<typeof Slider$1.Label>): React.JSX.Element;
545
+ declare function SliderValue({ className, ...props }: Part<typeof Slider$1.Value>): React.JSX.Element;
546
+ declare function SliderControl({ className, ...props }: Part<typeof Slider$1.Control>): React.JSX.Element;
547
+ declare function SliderTrack({ className, ...props }: Part<typeof Slider$1.Track>): React.JSX.Element;
548
+ declare function SliderIndicator({ className, ...props }: Part<typeof Slider$1.Indicator>): React.JSX.Element;
549
+ declare function SliderThumb({ className, ...props }: Part<typeof Slider$1.Thumb>): React.JSX.Element;
550
+ export declare const Slider: typeof SliderSimple & {
551
+ Root: typeof SliderRoot;
552
+ Label: typeof SliderLabel;
553
+ Value: typeof SliderValue;
554
+ Control: typeof SliderControl;
555
+ Track: typeof SliderTrack;
556
+ Indicator: typeof SliderIndicator;
557
+ Thumb: typeof SliderThumb;
558
+ };
559
+ export declare const sliderStyles: import("tailwind-variants").TVReturnType<{}, {
560
+ root: string;
561
+ header: string;
562
+ label: string;
563
+ value: string;
564
+ control: string;
565
+ track: string;
566
+ indicator: string;
567
+ thumb: string[];
568
+ }, undefined, undefined, undefined, undefined>;
569
+ export declare const toggleStyles: import("tailwind-variants").TVReturnType<{
570
+ variant: {
571
+ ghost: string;
572
+ outline: string;
573
+ };
574
+ size: {
575
+ sm: string;
576
+ md: string;
577
+ lg: string;
578
+ 'icon-sm': string;
579
+ icon: string;
580
+ 'icon-lg': string;
581
+ };
582
+ }, undefined, string[], undefined, undefined, undefined>;
583
+ interface ToggleProps extends Omit<React.ComponentPropsWithRef<typeof Toggle$1>, 'className'>, VariantProps<typeof toggleStyles> {
584
+ className?: string;
585
+ }
586
+ /** A button that stays pressed (bold, show grid…). Pressed state uses the soft accent. */
587
+ export declare function Toggle({ className, variant, size, ...props }: ToggleProps): React.JSX.Element;
588
+ /**
589
+ * Looks like a row of `Toggle`s: transparent items, muted text, and the pressed one on the soft
590
+ * accent fill. In single mode the fill glides from item to item (a `motion` layout animation on
591
+ * transform only); with `multiple` each pressed item gets its own fill.
592
+ */
593
+ export declare const toggleGroupStyles: import("tailwind-variants").TVReturnType<{
594
+ variant: {
595
+ /** A thin frame around the items, for a segmented control. */
596
+ outline: {
597
+ root: string;
598
+ };
599
+ /** No frame: a bare row of toggles, for toolbars. */
600
+ ghost: {
601
+ root: string;
602
+ };
603
+ };
604
+ size: {
605
+ sm: {
606
+ root: string;
607
+ item: string;
608
+ indicator: string;
609
+ hover: string;
610
+ };
611
+ md: {
612
+ root: string;
613
+ item: string;
614
+ indicator: string;
615
+ hover: string;
616
+ };
617
+ lg: {
618
+ root: string;
619
+ item: string;
620
+ indicator: string;
621
+ hover: string;
622
+ };
623
+ };
624
+ iconOnly: {
625
+ true: {
626
+ item: string;
627
+ };
628
+ };
629
+ }, {
630
+ root: string;
631
+ item: string[];
632
+ indicator: string;
633
+ /** The neutral hover block that glides between items (`glideBlockClass` + the item radius). */
634
+ hover: string;
635
+ }, undefined, undefined, undefined, undefined>;
636
+ type Styles = VariantProps<typeof toggleGroupStyles>;
637
+ interface ToggleGroupItemProps extends Omit<Toggle$1.Props<string>, 'className' | 'render'> {
638
+ /** The value this item adds to the group's value when pressed. */
639
+ value: string;
640
+ className?: string;
641
+ }
642
+ /** One toggle in a `ToggleGroup`. Renders a `<button>` with `aria-pressed`. */
643
+ declare function ToggleGroupItem({ className, children, ...props }: ToggleGroupItemProps): React.JSX.Element;
644
+ interface ToggleGroupItem {
645
+ value: string;
646
+ label: React.ReactNode;
647
+ disabled?: boolean;
648
+ 'aria-label'?: string;
649
+ }
650
+ interface ToggleGroupProps extends Omit<ToggleGroup$1.Props<string>, 'className'>, Styles {
651
+ /** Short form: the options. Or pass `<ToggleGroup.Item value="…">` children. */
652
+ items?: ToggleGroupItem[];
653
+ className?: string;
654
+ classNames?: {
655
+ root?: string;
656
+ item?: string;
657
+ indicator?: string;
658
+ hover?: string;
659
+ };
660
+ }
661
+ /**
662
+ * A row of toggles. Single (default): a segmented control whose soft accent fill glides to the
663
+ * pressed item. `multiple`: a toolbar where any number of items can be pressed.
664
+ * Short form: `<ToggleGroup items={[{ value, label }]} />`. Compound: `ToggleGroup.Item`.
665
+ */
666
+ declare function ToggleGroupRoot({ items, size, variant, iconOnly, multiple, className, classNames, children, ref, ...props }: ToggleGroupProps): React.JSX.Element;
667
+ export declare const ToggleGroup: typeof ToggleGroupRoot & {
668
+ Item: typeof ToggleGroupItem;
669
+ };
670
+ export declare const kbdStyles: import("tailwind-variants").TVReturnType<{
671
+ size: {
672
+ sm: string;
673
+ md: string;
674
+ };
675
+ }, undefined, string[], undefined, undefined, undefined>;
676
+ interface KbdProps extends React.ComponentPropsWithRef<'kbd'>, VariantProps<typeof kbdStyles> {}
677
+ /** A keyboard key: `<Kbd>Ctrl</Kbd><Kbd>K</Kbd>`. */
678
+ export declare function Kbd({ className, size, ...props }: KbdProps): React.JSX.Element;
679
+ /** Keys pressed together, with a small gap. */
680
+ export declare function KbdGroup({ className, ...props }: React.ComponentPropsWithRef<'span'>): React.JSX.Element;
681
+ export declare const inputGroupStyles: import("tailwind-variants").TVReturnType<{
682
+ size: {
683
+ sm: {
684
+ root: string;
685
+ };
686
+ md: {
687
+ root: string;
688
+ };
689
+ lg: {
690
+ root: string;
691
+ };
692
+ };
693
+ }, {
694
+ root: string[];
695
+ input: string;
696
+ addon: string;
697
+ }, undefined, undefined, undefined, undefined>;
698
+ type Size$3 = VariantProps<typeof inputGroupStyles>['size'];
699
+ declare function InputGroupRoot({ className, size, ...props }: React.ComponentPropsWithRef<'div'> & {
700
+ size?: Size$3;
701
+ }): React.JSX.Element;
702
+ declare function InputGroupInput({ className, ...props }: Omit<React.ComponentPropsWithRef<typeof Input$1>, 'className'> & {
703
+ className?: string;
704
+ }): React.JSX.Element;
705
+ declare function InputGroupAddon({ className, ...props }: React.ComponentPropsWithRef<'span'>): React.JSX.Element;
706
+ interface InputGroupProps extends Omit<React.ComponentPropsWithRef<typeof Input$1>, 'className' | 'size'>, VariantProps<typeof inputGroupStyles> {
707
+ /** Icon or text before the input (e.g. a search icon, "https://"). */
708
+ start?: React.ReactNode;
709
+ /** Icon, text or a small button after the input (e.g. a `Kbd`, a clear button). */
710
+ end?: React.ReactNode;
711
+ className?: string;
712
+ classNames?: {
713
+ root?: string;
714
+ input?: string;
715
+ start?: string;
716
+ end?: string;
717
+ };
718
+ }
719
+ /**
720
+ * An input with add-ons. Short form: `<InputGroup start={<Search />} end={<Kbd>K</Kbd>} />`.
721
+ * Compound: `InputGroup.Root`, `InputGroup.Addon`, `InputGroup.Input`.
722
+ */
723
+ declare function InputGroupSimple({ start, end, size, className, classNames, ...props }: InputGroupProps): React.JSX.Element;
724
+ export declare const InputGroup: typeof InputGroupSimple & {
725
+ Root: typeof InputGroupRoot;
726
+ Input: typeof InputGroupInput;
727
+ Addon: typeof InputGroupAddon;
728
+ };
729
+ /**
730
+ * Joins buttons: inner corners go square, neighbouring borders overlap by one pixel.
731
+ * Works with any Button variant; outline reads best.
732
+ */
733
+ export declare const buttonGroupStyles: import("tailwind-variants").TVReturnType<{
734
+ orientation: {
735
+ horizontal: string[];
736
+ vertical: string[];
737
+ };
738
+ }, undefined, "inline-flex isolate [&>*:focus-visible]:z-10", undefined, undefined, undefined>;
739
+ interface ButtonGroupProps extends React.ComponentPropsWithRef<'div'>, VariantProps<typeof buttonGroupStyles> {}
740
+ /** Buttons joined into one control: `<ButtonGroup><Button variant="outline">…</Button>…</ButtonGroup>`. */
741
+ export declare function ButtonGroup({ className, orientation, ...props }: ButtonGroupProps): React.JSX.Element;
742
+ /**
743
+ * Looks like `Input`: the group carries the border, the radius and the focus colour, the steppers sit
744
+ * inside it as small ghost buttons with a concentric radius (group radius minus the 4px inset).
745
+ * The input is a text input with `inputmode`, so there are never native spinner buttons.
746
+ */
747
+ export declare const numberFieldStyles: import("tailwind-variants").TVReturnType<{
748
+ size: {
749
+ sm: {
750
+ group: string;
751
+ button: string;
752
+ };
753
+ md: {
754
+ group: string;
755
+ button: string;
756
+ };
757
+ lg: {
758
+ group: string;
759
+ button: string;
760
+ };
761
+ };
762
+ }, {
763
+ root: string;
764
+ label: string;
765
+ scrubArea: string;
766
+ scrubCursor: string;
767
+ group: string[];
768
+ input: string[];
769
+ button: string[];
770
+ scrubHandle: string;
771
+ }, undefined, undefined, undefined, undefined>;
772
+ type Slots$2 = keyof ReturnType<typeof numberFieldStyles>;
773
+ type PartProps<T extends React.ElementType> = Omit<React.ComponentPropsWithRef<T>, 'className'> & {
774
+ className?: string;
775
+ };
776
+ interface NumberFieldRootProps extends PartProps<typeof NumberField$1.Root>, VariantProps<typeof numberFieldStyles> {}
777
+ declare function NumberFieldRoot({ size, className, ...props }: NumberFieldRootProps): React.JSX.Element;
778
+ /** The bordered box around the steppers and the input. */
779
+ declare function NumberFieldGroup({ className, ...props }: PartProps<typeof NumberField$1.Group>): React.JSX.Element;
780
+ /** The text input (`inputmode="decimal"`), formatted with the field's locale. */
781
+ declare function NumberFieldInput({ className, ...props }: PartProps<typeof NumberField$1.Input>): React.JSX.Element;
782
+ /** The minus button. Children replace the icon. */
783
+ declare function NumberFieldDecrement({ className, children, ...props }: PartProps<typeof NumberField$1.Decrement>): React.JSX.Element;
784
+ /** The plus button. Children replace the icon. */
785
+ declare function NumberFieldIncrement({ className, children, ...props }: PartProps<typeof NumberField$1.Increment>): React.JSX.Element;
786
+ /** Drag horizontally over its children to change the value. Put a label or an icon inside. */
787
+ declare function NumberFieldScrubArea({ className, ...props }: PartProps<typeof NumberField$1.ScrubArea>): React.JSX.Element;
788
+ /** The cursor shown while scrubbing (the real pointer is locked and hidden). */
789
+ declare function NumberFieldScrubAreaCursor({ className, children, ...props }: PartProps<typeof NumberField$1.ScrubAreaCursor>): React.JSX.Element;
790
+ interface NumberFieldProps extends NumberFieldRootProps {
791
+ /** A label above the field. With `scrub`, dragging it changes the value. */
792
+ label?: React.ReactNode;
793
+ /**
794
+ * Change the value by dragging horizontally: over the `label` if there is one, otherwise over a
795
+ * small handle at the start of the field. @default false
796
+ */
797
+ scrub?: boolean;
798
+ /** Shown while the field is empty. */
799
+ placeholder?: string;
800
+ 'aria-label'?: string;
801
+ 'aria-labelledby'?: string;
802
+ 'aria-describedby'?: string;
803
+ /** Hide the minus and plus buttons (arrow keys and the wheel still step). @default false */
804
+ hideButtons?: boolean;
805
+ classNames?: Partial<Record<Slots$2, string>>;
806
+ }
807
+ /**
808
+ * A field for numbers with our own minus and plus buttons (no native spinners).
809
+ * <NumberField aria-label="Ore" defaultValue={50} min={0} max={999} />
810
+ * Arrow keys step by `step`, Shift by `largeStep`, Alt by `smallStep`.
811
+ * Compound: NumberField.Root / Group / Decrement / Input / Increment / ScrubArea / ScrubAreaCursor.
812
+ */
813
+ declare function NumberFieldSimple({ label, scrub, placeholder, hideButtons, size, className, classNames, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...props }: NumberFieldProps): React.JSX.Element;
814
+ export declare const NumberField: typeof NumberFieldSimple & {
815
+ Root: typeof NumberFieldRoot;
816
+ Group: typeof NumberFieldGroup;
817
+ Input: typeof NumberFieldInput;
818
+ Decrement: typeof NumberFieldDecrement;
819
+ Increment: typeof NumberFieldIncrement;
820
+ ScrubArea: typeof NumberFieldScrubArea;
821
+ ScrubAreaCursor: typeof NumberFieldScrubAreaCursor;
822
+ };
823
+ type Side$3 = 'top' | 'right' | 'bottom' | 'left' | 'inline-start' | 'inline-end';
824
+ type Align$1 = 'start' | 'center' | 'end';
825
+ interface TooltipContentProps extends React.ComponentPropsWithRef<typeof Tooltip$1.Popup> {
826
+ /** Which side of the trigger the tooltip appears on. @default 'top' */
827
+ side?: Side$3;
828
+ /** How the tooltip lines up with the trigger along that side. @default 'center' */
829
+ align?: Align$1;
830
+ /** Gap between trigger and tooltip, in px. @default 8 */
831
+ sideOffset?: number;
832
+ classNames?: {
833
+ positioner?: string;
834
+ popup?: string;
835
+ };
836
+ }
837
+ declare function TooltipContent({ side, align, sideOffset, className, classNames, ...props }: TooltipContentProps): React.JSX.Element;
838
+ interface TooltipProps extends Omit<React.ComponentProps<typeof Tooltip$1.Root>, 'children'> {
839
+ /** The hint text. */
840
+ content: React.ReactNode;
841
+ /** The element that shows the tooltip on hover and focus. */
842
+ children: React.ReactElement;
843
+ side?: Side$3;
844
+ align?: Align$1;
845
+ /** Milliseconds before it opens. @default 400 */
846
+ delay?: number;
847
+ /** Milliseconds before it closes once the pointer leaves. @default 0 */
848
+ closeDelay?: number;
849
+ className?: string;
850
+ classNames?: {
851
+ positioner?: string;
852
+ popup?: string;
853
+ };
854
+ }
855
+ /**
856
+ * A short hint on hover or focus.
857
+ * <Tooltip content="Copy"><Button size="icon">…</Button></Tooltip>
858
+ * Wrap a group in `Tooltip.Provider` so neighbouring tooltips open instantly one after another.
859
+ */
860
+ declare function TooltipSimple({ content, children, side, align, delay, closeDelay, className, classNames, ...root }: TooltipProps): React.JSX.Element;
861
+ export declare const Tooltip: typeof TooltipSimple & {
862
+ Provider: React.FC<import("@base-ui/react").TooltipProviderProps>;
863
+ Root: <Payload>(props: Tooltip$1.Root.Props<Payload>) => React.JSX.Element;
864
+ Trigger: Tooltip$1.Trigger;
865
+ Content: typeof TooltipContent;
866
+ };
867
+ /**
868
+ * Same surface as popovers and menus, just smaller: a small-control radius (never the chip one, which
869
+ * read as a sharp box), roomy padding and regular-weight text. No arrow: a pointed tip breaks the
870
+ * squircle outline, and the side offset already makes the anchor obvious.
871
+ */
872
+ export declare const tooltipStyles: import("tailwind-variants").TVReturnType<{}, {
873
+ positioner: string;
874
+ popup: string[];
875
+ }, undefined, undefined, undefined, undefined>;
876
+ type Side$2 = 'top' | 'right' | 'bottom' | 'left' | 'inline-start' | 'inline-end';
877
+ type Align = 'start' | 'center' | 'end';
878
+ interface PopoverContentProps extends React.ComponentPropsWithRef<typeof Popover$1.Popup> {
879
+ side?: Side$2;
880
+ align?: Align;
881
+ sideOffset?: number;
882
+ /** Show a small close button in the corner. @default false */
883
+ showClose?: boolean;
884
+ classNames?: {
885
+ positioner?: string;
886
+ popup?: string;
887
+ };
888
+ }
889
+ declare function PopoverContent({ side, align, sideOffset, showClose, className, classNames, children, ...props }: PopoverContentProps): React.JSX.Element;
890
+ declare function PopoverTitle({ className, ...props }: React.ComponentPropsWithRef<typeof Popover$1.Title>): React.JSX.Element;
891
+ declare function PopoverDescription({ className, ...props }: React.ComponentPropsWithRef<typeof Popover$1.Description>): React.JSX.Element;
892
+ interface PopoverProps extends Omit<React.ComponentProps<typeof Popover$1.Root>, 'children'> {
893
+ /** The element that opens the popover (a Button, a link …). */
894
+ trigger: React.ReactElement;
895
+ title?: React.ReactNode;
896
+ description?: React.ReactNode;
897
+ side?: Side$2;
898
+ align?: Align;
899
+ /** Show a small close button in the corner. @default false */
900
+ showClose?: boolean;
901
+ className?: string;
902
+ classNames?: {
903
+ positioner?: string;
904
+ popup?: string;
905
+ };
906
+ children?: React.ReactNode;
907
+ }
908
+ /**
909
+ * Floating content anchored to a trigger.
910
+ * <Popover trigger={<Button>Open</Button>} title="Filters">…</Popover>
911
+ * or compound: Popover.Root / Trigger / Content / Title / Description / Close.
912
+ */
913
+ declare function PopoverSimple({ trigger, title, description, side, align, showClose, className, classNames, children, ...root }: PopoverProps): React.JSX.Element;
914
+ export declare const Popover: typeof PopoverSimple & {
915
+ Root: typeof Popover$1.Root;
916
+ Trigger: Popover$1.Trigger;
917
+ Content: typeof PopoverContent;
918
+ Title: typeof PopoverTitle;
919
+ Description: typeof PopoverDescription;
920
+ Close: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").PopoverCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
921
+ };
922
+ /** Surface shared by every floating panel (popover, menu, tooltip, hover card, dialog). */
923
+ export declare const popupSurface = "squircle border border-border bg-popover text-foreground shadow-overlay outline-none";
924
+ /** Enter/exit like Fumadocs' popups: fade + a small scale from the trigger. */
925
+ export declare const popupMotion: string;
926
+ /** A dimmed, slightly blurred backdrop for modal overlays. */
927
+ export declare const backdropStyles = "fixed inset-0 z-50 bg-black/30 backdrop-blur-xs transition-opacity duration-[var(--cui-duration-normal)] ease-ui data-[starting-style]:opacity-0 data-[ending-style]:opacity-0";
928
+ export declare const popoverStyles: import("tailwind-variants").TVReturnType<{}, {
929
+ positioner: string;
930
+ popup: string[];
931
+ title: string;
932
+ description: string;
933
+ close: string;
934
+ }, undefined, undefined, undefined, undefined>;
935
+ export declare const dialogStyles: import("tailwind-variants").TVReturnType<{
936
+ size: {
937
+ sm: {
938
+ popup: string;
939
+ };
940
+ md: {
941
+ popup: string;
942
+ };
943
+ lg: {
944
+ popup: string;
945
+ };
946
+ };
947
+ }, {
948
+ backdrop: string;
949
+ popup: string[];
950
+ header: string;
951
+ title: string;
952
+ description: string;
953
+ body: string;
954
+ footer: string;
955
+ close: string;
956
+ }, undefined, undefined, undefined, undefined>;
957
+ type DivProps$2 = React.ComponentPropsWithRef<'div'>;
958
+ interface DialogContentProps extends React.ComponentPropsWithRef<typeof Dialog$1.Popup>, VariantProps<typeof dialogStyles> {
959
+ /** Show the close button in the corner. @default true */
960
+ showClose?: boolean;
961
+ classNames?: {
962
+ backdrop?: string;
963
+ popup?: string;
964
+ };
965
+ }
966
+ declare function DialogContent({ size, showClose, className, classNames, children, ...props }: DialogContentProps): React.JSX.Element;
967
+ declare const DialogHeader: ({ className, ...props }: DivProps$2) => React.JSX.Element;
968
+ declare const DialogBody: ({ className, ...props }: DivProps$2) => React.JSX.Element;
969
+ declare const DialogFooter: ({ className, ...props }: DivProps$2) => React.JSX.Element;
970
+ declare function DialogTitle({ className, ...props }: React.ComponentPropsWithRef<typeof Dialog$1.Title>): React.JSX.Element;
971
+ declare function DialogDescription({ className, ...props }: React.ComponentPropsWithRef<typeof Dialog$1.Description>): React.JSX.Element;
972
+ interface DialogProps extends Omit<React.ComponentProps<typeof Dialog$1.Root>, 'children'> {
973
+ trigger?: React.ReactElement;
974
+ title: React.ReactNode;
975
+ description?: React.ReactNode;
976
+ /** Buttons at the bottom; wrap the closing ones in `Dialog.Close render={…}`. */
977
+ footer?: React.ReactNode;
978
+ size?: 'sm' | 'md' | 'lg';
979
+ className?: string;
980
+ children?: React.ReactNode;
981
+ }
982
+ /**
983
+ * A modal window.
984
+ * <Dialog trigger={<Button>Edit</Button>} title="Edit kit" footer={…}>…</Dialog>
985
+ * or compound: Dialog.Root / Trigger / Content / Header / Title / Description / Body / Footer / Close.
986
+ */
987
+ declare function DialogSimple({ trigger, title, description, footer, size, className, children, ...root }: DialogProps): React.JSX.Element;
988
+ export declare const Dialog: typeof DialogSimple & {
989
+ Root: <Payload>(props: Dialog$1.Root.Props<Payload>) => React.JSX.Element;
990
+ Trigger: Dialog$1.Trigger;
991
+ Content: typeof DialogContent;
992
+ Header: typeof DialogHeader;
993
+ Title: typeof DialogTitle;
994
+ Description: typeof DialogDescription;
995
+ Body: typeof DialogBody;
996
+ Footer: typeof DialogFooter;
997
+ Close: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").DialogCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
998
+ };
999
+ /** Same panel as Dialog, narrower and without a corner close button. */
1000
+ export declare const alertDialogStyles: import("tailwind-variants").TVReturnType<{}, {
1001
+ header: string;
1002
+ }, undefined, {
1003
+ size: {
1004
+ sm: {
1005
+ popup: string;
1006
+ };
1007
+ md: {
1008
+ popup: string;
1009
+ };
1010
+ lg: {
1011
+ popup: string;
1012
+ };
1013
+ };
1014
+ }, {
1015
+ backdrop: string;
1016
+ popup: string[];
1017
+ header: string;
1018
+ title: string;
1019
+ description: string;
1020
+ body: string;
1021
+ footer: string;
1022
+ close: string;
1023
+ }, import("tailwind-variants").TVReturnType<{
1024
+ size: {
1025
+ sm: {
1026
+ popup: string;
1027
+ };
1028
+ md: {
1029
+ popup: string;
1030
+ };
1031
+ lg: {
1032
+ popup: string;
1033
+ };
1034
+ };
1035
+ }, {
1036
+ backdrop: string;
1037
+ popup: string[];
1038
+ header: string;
1039
+ title: string;
1040
+ description: string;
1041
+ body: string;
1042
+ footer: string;
1043
+ close: string;
1044
+ }, undefined, undefined, undefined, undefined>>;
1045
+ type DivProps$1 = React.ComponentPropsWithRef<'div'>;
1046
+ interface AlertDialogContentProps extends React.ComponentPropsWithRef<typeof AlertDialog$1.Popup>, VariantProps<typeof alertDialogStyles> {
1047
+ classNames?: {
1048
+ backdrop?: string;
1049
+ popup?: string;
1050
+ };
1051
+ }
1052
+ declare function AlertDialogContent({ size, className, classNames, ...props }: AlertDialogContentProps): React.JSX.Element;
1053
+ declare const AlertDialogHeader: ({ className, ...props }: DivProps$1) => React.JSX.Element;
1054
+ declare const AlertDialogFooter: ({ className, ...props }: DivProps$1) => React.JSX.Element;
1055
+ declare function AlertDialogTitle({ className, ...props }: React.ComponentPropsWithRef<typeof AlertDialog$1.Title>): React.JSX.Element;
1056
+ declare function AlertDialogDescription({ className, ...props }: React.ComponentPropsWithRef<typeof AlertDialog$1.Description>): React.JSX.Element;
1057
+ interface AlertDialogProps extends Omit<React.ComponentProps<typeof AlertDialog$1.Root>, 'children'> {
1058
+ trigger?: React.ReactElement;
1059
+ title: React.ReactNode;
1060
+ description?: React.ReactNode;
1061
+ /** @default 'Cancel' */
1062
+ cancelLabel?: React.ReactNode;
1063
+ /** @default 'Continue' */
1064
+ actionLabel?: React.ReactNode;
1065
+ onAction?: () => void;
1066
+ /** `danger` paints the action red (delete, reset …). @default 'default' */
1067
+ tone?: 'default' | 'danger';
1068
+ className?: string;
1069
+ }
1070
+ /**
1071
+ * A modal that asks to confirm an action. Clicking outside doesn't dismiss it.
1072
+ * <AlertDialog trigger={<Button variant="danger">Delete</Button>} title="Delete kit?" tone="danger" onAction={…} />
1073
+ */
1074
+ declare function AlertDialogSimple({ trigger, title, description, cancelLabel, actionLabel, onAction, tone, className, ...root }: AlertDialogProps): React.JSX.Element;
1075
+ export declare const AlertDialog: typeof AlertDialogSimple & {
1076
+ Root: typeof AlertDialog$1.Root;
1077
+ Trigger: AlertDialog$1.Trigger;
1078
+ Content: typeof AlertDialogContent;
1079
+ Header: typeof AlertDialogHeader;
1080
+ Title: typeof AlertDialogTitle;
1081
+ Description: typeof AlertDialogDescription;
1082
+ Footer: typeof AlertDialogFooter;
1083
+ Close: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").DialogCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
1084
+ };
1085
+ /** A floating side panel, inset from the window edge like the docs page panel. */
1086
+ export declare const sheetStyles: import("tailwind-variants").TVReturnType<{
1087
+ side: {
1088
+ right: {
1089
+ popup: string;
1090
+ };
1091
+ left: {
1092
+ popup: string;
1093
+ };
1094
+ top: {
1095
+ popup: string;
1096
+ };
1097
+ bottom: {
1098
+ popup: string;
1099
+ };
1100
+ };
1101
+ }, {
1102
+ backdrop: string;
1103
+ popup: string[];
1104
+ header: string;
1105
+ title: string;
1106
+ description: string;
1107
+ body: string;
1108
+ footer: string;
1109
+ close: string;
1110
+ }, undefined, undefined, undefined, undefined>;
1111
+ type DivProps = React.ComponentPropsWithRef<'div'>;
1112
+ interface SheetContentProps extends React.ComponentPropsWithRef<typeof Dialog$1.Popup>, VariantProps<typeof sheetStyles> {
1113
+ /** @default true */
1114
+ showClose?: boolean;
1115
+ classNames?: {
1116
+ backdrop?: string;
1117
+ popup?: string;
1118
+ };
1119
+ }
1120
+ declare function SheetContent({ side, showClose, className, classNames, children, ...props }: SheetContentProps): React.JSX.Element;
1121
+ declare const SheetHeader: ({ className, ...props }: DivProps) => React.JSX.Element;
1122
+ declare const SheetBody: ({ className, ...props }: DivProps) => React.JSX.Element;
1123
+ declare const SheetFooter: ({ className, ...props }: DivProps) => React.JSX.Element;
1124
+ declare function SheetTitle({ className, ...props }: React.ComponentPropsWithRef<typeof Dialog$1.Title>): React.JSX.Element;
1125
+ declare function SheetDescription({ className, ...props }: React.ComponentPropsWithRef<typeof Dialog$1.Description>): React.JSX.Element;
1126
+ interface SheetProps extends Omit<React.ComponentProps<typeof Dialog$1.Root>, 'children'> {
1127
+ trigger?: React.ReactElement;
1128
+ title: React.ReactNode;
1129
+ description?: React.ReactNode;
1130
+ footer?: React.ReactNode;
1131
+ side?: 'right' | 'left' | 'top' | 'bottom';
1132
+ className?: string;
1133
+ children?: React.ReactNode;
1134
+ }
1135
+ /**
1136
+ * A side panel over the page (filters, settings, details).
1137
+ * <Sheet trigger={<Button>Filters</Button>} title="Filters" side="right">…</Sheet>
1138
+ */
1139
+ declare function SheetSimple({ trigger, title, description, footer, side, className, children, ...root }: SheetProps): React.JSX.Element;
1140
+ export declare const Sheet: typeof SheetSimple & {
1141
+ Root: <Payload>(props: Dialog$1.Root.Props<Payload>) => React.JSX.Element;
1142
+ Trigger: Dialog$1.Trigger;
1143
+ Content: typeof SheetContent;
1144
+ Header: typeof SheetHeader;
1145
+ Title: typeof SheetTitle;
1146
+ Description: typeof SheetDescription;
1147
+ Body: typeof SheetBody;
1148
+ Footer: typeof SheetFooter;
1149
+ Close: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").DialogCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
1150
+ };
1151
+ interface DrawerContentProps extends React.ComponentPropsWithRef<typeof Drawer$1.Popup> {
1152
+ /** Show the grab handle at the top. @default true */
1153
+ showHandle?: boolean;
1154
+ classNames?: {
1155
+ backdrop?: string;
1156
+ viewport?: string;
1157
+ popup?: string;
1158
+ content?: string;
1159
+ };
1160
+ }
1161
+ declare function DrawerContent({ showHandle, className, classNames, children, ...props }: DrawerContentProps): React.JSX.Element;
1162
+ declare function DrawerTitle({ className, ...props }: React.ComponentPropsWithRef<typeof Drawer$1.Title>): React.JSX.Element;
1163
+ declare function DrawerDescription({ className, ...props }: React.ComponentPropsWithRef<typeof Drawer$1.Description>): React.JSX.Element;
1164
+ declare const DrawerBody: ({ className, ...props }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
1165
+ declare const DrawerFooter: ({ className, ...props }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
1166
+ interface DrawerProps extends Omit<React.ComponentProps<typeof Drawer$1.Root>, 'children'> {
1167
+ trigger?: React.ReactElement;
1168
+ title: React.ReactNode;
1169
+ description?: React.ReactNode;
1170
+ footer?: React.ReactNode;
1171
+ className?: string;
1172
+ children?: React.ReactNode;
1173
+ }
1174
+ /**
1175
+ * A panel that slides up from the bottom and closes with a swipe down.
1176
+ * <Drawer trigger={<Button>Details</Button>} title="Kit details">…</Drawer>
1177
+ * or compound: Drawer.Root / Trigger / Content / Title / Description / Body / Footer / Close.
1178
+ */
1179
+ declare function DrawerSimple({ trigger, title, description, footer, className, children, ...root }: DrawerProps): React.JSX.Element;
1180
+ export declare const Drawer: typeof DrawerSimple & {
1181
+ Root: typeof Drawer$1.Root;
1182
+ Trigger: Drawer$1.Trigger;
1183
+ Content: typeof DrawerContent;
1184
+ Title: typeof DrawerTitle;
1185
+ Description: typeof DrawerDescription;
1186
+ Body: typeof DrawerBody;
1187
+ Footer: typeof DrawerFooter;
1188
+ Close: Drawer$1.Close;
1189
+ };
1190
+ /**
1191
+ * A bottom panel you can swipe down to close (mobile-friendly sheet). The slide is a little slower
1192
+ * than other overlays (1.8 × the normal duration) because it travels the whole height of the screen;
1193
+ * it is still derived from the token, so reduced motion turns it off.
1194
+ */
1195
+ export declare const drawerStyles: import("tailwind-variants").TVReturnType<{}, {
1196
+ backdrop: string[];
1197
+ viewport: string;
1198
+ popup: string[];
1199
+ handle: string;
1200
+ content: string;
1201
+ title: string;
1202
+ description: string;
1203
+ body: string;
1204
+ footer: string;
1205
+ }, undefined, undefined, undefined, undefined>;
1206
+ type Side$1 = 'top' | 'right' | 'bottom' | 'left' | 'inline-start' | 'inline-end';
1207
+ interface DropdownMenuContentProps extends React.ComponentPropsWithRef<typeof Menu.Popup> {
1208
+ side?: Side$1;
1209
+ align?: 'start' | 'center' | 'end';
1210
+ sideOffset?: number;
1211
+ classNames?: {
1212
+ positioner?: string;
1213
+ popup?: string;
1214
+ };
1215
+ }
1216
+ declare function DropdownMenuContent({ side, align, sideOffset, className, classNames, ...props }: DropdownMenuContentProps): React.JSX.Element;
1217
+ interface DropdownMenuItemProps extends React.ComponentPropsWithRef<typeof Menu.Item> {
1218
+ /** Paint the item in the danger colour (delete, sign out …). */
1219
+ danger?: boolean;
1220
+ }
1221
+ declare function DropdownMenuItem({ danger, className, ...props }: DropdownMenuItemProps): React.JSX.Element;
1222
+ declare function DropdownMenuCheckboxItem({ className, children, ...props }: React.ComponentPropsWithRef<typeof Menu.CheckboxItem>): React.JSX.Element;
1223
+ declare function DropdownMenuRadioItem({ className, children, ...props }: React.ComponentPropsWithRef<typeof Menu.RadioItem>): React.JSX.Element;
1224
+ declare function DropdownMenuSeparator({ className, ...props }: React.ComponentPropsWithRef<typeof Menu.Separator>): React.JSX.Element;
1225
+ declare function DropdownMenuGroupLabel({ className, ...props }: React.ComponentPropsWithRef<typeof Menu.GroupLabel>): React.JSX.Element;
1226
+ /** A keyboard hint at the end of an item, e.g. `Ctrl K`. */
1227
+ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentPropsWithRef<'kbd'>): React.JSX.Element;
1228
+ declare function DropdownMenuSubTrigger({ className, children, ...props }: React.ComponentPropsWithRef<typeof Menu.SubmenuTrigger>): React.JSX.Element;
1229
+ declare function DropdownMenuSubContent(props: DropdownMenuContentProps): React.JSX.Element;
1230
+ type DropdownMenuEntry = {
1231
+ type?: 'item';
1232
+ label: React.ReactNode;
1233
+ icon?: React.ReactNode;
1234
+ shortcut?: string;
1235
+ danger?: boolean;
1236
+ disabled?: boolean;
1237
+ onClick?: () => void;
1238
+ } | {
1239
+ type: 'separator';
1240
+ } | {
1241
+ type: 'label';
1242
+ label: React.ReactNode;
1243
+ };
1244
+ interface DropdownMenuProps extends Omit<React.ComponentProps<typeof Menu.Root>, 'children'> {
1245
+ /** The button that opens the menu. */
1246
+ trigger: React.ReactElement;
1247
+ items: DropdownMenuEntry[];
1248
+ side?: Side$1;
1249
+ align?: 'start' | 'center' | 'end';
1250
+ className?: string;
1251
+ }
1252
+ /**
1253
+ * A menu opened by a button.
1254
+ * <DropdownMenu trigger={<Button>Options</Button>} items={[{ label: 'Rename', shortcut: 'F2' }]} />
1255
+ * or compound: DropdownMenu.Root / Trigger / Content / Item / CheckboxItem / RadioGroup / RadioItem /
1256
+ * Group / GroupLabel / Separator / Shortcut / Sub / SubTrigger / SubContent.
1257
+ */
1258
+ declare function DropdownMenuSimple({ trigger, items, side, align, className, ...root }: DropdownMenuProps): React.JSX.Element;
1259
+ export declare const DropdownMenu: typeof DropdownMenuSimple & {
1260
+ Root: typeof Menu.Root;
1261
+ Trigger: Menu.Trigger;
1262
+ Content: typeof DropdownMenuContent;
1263
+ Item: typeof DropdownMenuItem;
1264
+ CheckboxItem: typeof DropdownMenuCheckboxItem;
1265
+ RadioGroup: React.NamedExoticComponent<Omit<import("@base-ui/react").MenuRadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1266
+ RadioItem: typeof DropdownMenuRadioItem;
1267
+ Group: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").MenuGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1268
+ GroupLabel: typeof DropdownMenuGroupLabel;
1269
+ Separator: typeof DropdownMenuSeparator;
1270
+ Shortcut: typeof DropdownMenuShortcut;
1271
+ Sub: typeof Menu.SubmenuRoot;
1272
+ SubTrigger: typeof DropdownMenuSubTrigger;
1273
+ SubContent: typeof DropdownMenuSubContent;
1274
+ };
1275
+ /** Shared by Dropdown Menu and Context Menu. */
1276
+ export declare const menuStyles: import("tailwind-variants").TVReturnType<{}, {
1277
+ positioner: string;
1278
+ popup: string[];
1279
+ item: string[];
1280
+ danger: string;
1281
+ indicator: string;
1282
+ separator: string;
1283
+ groupLabel: string;
1284
+ shortcut: string;
1285
+ subChevron: string;
1286
+ }, undefined, undefined, undefined, undefined>;
1287
+ interface ContextMenuContentProps extends React.ComponentPropsWithRef<typeof ContextMenu$1.Popup> {
1288
+ classNames?: {
1289
+ positioner?: string;
1290
+ popup?: string;
1291
+ };
1292
+ }
1293
+ declare function ContextMenuContent({ className, classNames, ...props }: ContextMenuContentProps): React.JSX.Element;
1294
+ declare function ContextMenuTrigger({ className, ...props }: React.ComponentPropsWithRef<typeof ContextMenu$1.Trigger>): React.JSX.Element;
1295
+ interface ContextMenuProps extends Omit<React.ComponentProps<typeof ContextMenu$1.Root>, 'children'> {
1296
+ items: DropdownMenuEntry[];
1297
+ /** The area that opens the menu on right click (or long press). */
1298
+ children: React.ReactNode;
1299
+ className?: string;
1300
+ }
1301
+ /**
1302
+ * A menu on right click.
1303
+ * <ContextMenu items={[{ label: 'Copy', shortcut: 'Ctrl C' }]}><div>…</div></ContextMenu>
1304
+ * Compound parts share Dropdown Menu's items: ContextMenu.Item, .Separator, .Shortcut …
1305
+ */
1306
+ declare function ContextMenuSimple({ items, children, className, ...root }: ContextMenuProps): React.JSX.Element;
1307
+ export declare const ContextMenu: typeof ContextMenuSimple & {
1308
+ Root: typeof ContextMenu$1.Root;
1309
+ Trigger: typeof ContextMenuTrigger;
1310
+ Content: typeof ContextMenuContent;
1311
+ Item: ({ danger, className, ...props }: DropdownMenuItemProps) => React.JSX.Element;
1312
+ CheckboxItem: ({ className, children, ...props }: React.ComponentPropsWithRef<typeof ContextMenu$1.CheckboxItem>) => React.JSX.Element;
1313
+ RadioGroup: React.NamedExoticComponent<Omit<import("@base-ui/react").MenuRadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1314
+ RadioItem: ({ className, children, ...props }: React.ComponentPropsWithRef<typeof ContextMenu$1.RadioItem>) => React.JSX.Element;
1315
+ Group: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").MenuGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1316
+ GroupLabel: ({ className, ...props }: React.ComponentPropsWithRef<typeof ContextMenu$1.GroupLabel>) => React.JSX.Element;
1317
+ Separator: ({ className, ...props }: React.ComponentPropsWithRef<typeof ContextMenu$1.Separator>) => React.JSX.Element;
1318
+ Shortcut: ({ className, ...props }: React.ComponentPropsWithRef<'kbd'>) => React.JSX.Element;
1319
+ };
1320
+ /** Context Menu reuses the menu look; only the trigger area is its own. */
1321
+ export declare const contextMenuStyles: import("tailwind-variants").TVReturnType<{}, {
1322
+ area: string;
1323
+ }, undefined, {}, {
1324
+ positioner: string;
1325
+ popup: string[];
1326
+ item: string[];
1327
+ danger: string;
1328
+ indicator: string;
1329
+ separator: string;
1330
+ groupLabel: string;
1331
+ shortcut: string;
1332
+ subChevron: string;
1333
+ }, import("tailwind-variants").TVReturnType<{}, {
1334
+ positioner: string;
1335
+ popup: string[];
1336
+ item: string[];
1337
+ danger: string;
1338
+ indicator: string;
1339
+ separator: string;
1340
+ groupLabel: string;
1341
+ shortcut: string;
1342
+ subChevron: string;
1343
+ }, undefined, undefined, undefined, undefined>>;
1344
+ interface HoverCardContentProps extends React.ComponentPropsWithRef<typeof PreviewCard.Popup> {
1345
+ side?: 'top' | 'right' | 'bottom' | 'left';
1346
+ align?: 'start' | 'center' | 'end';
1347
+ sideOffset?: number;
1348
+ classNames?: {
1349
+ positioner?: string;
1350
+ popup?: string;
1351
+ };
1352
+ }
1353
+ declare function HoverCardContent({ side, align, sideOffset, className, classNames, ...props }: HoverCardContentProps): React.JSX.Element;
1354
+ interface HoverCardProps extends Omit<React.ComponentProps<typeof PreviewCard.Root>, 'children'> {
1355
+ /** Usually a link (`<a href>`); the card opens while it's hovered or focused. */
1356
+ trigger: React.ReactElement;
1357
+ side?: 'top' | 'right' | 'bottom' | 'left';
1358
+ align?: 'start' | 'center' | 'end';
1359
+ /** Milliseconds before it opens. @default 500 */
1360
+ delay?: number;
1361
+ /** Milliseconds before it closes once the pointer leaves. @default 300 */
1362
+ closeDelay?: number;
1363
+ className?: string;
1364
+ classNames?: {
1365
+ positioner?: string;
1366
+ popup?: string;
1367
+ };
1368
+ children: React.ReactNode;
1369
+ }
1370
+ /**
1371
+ * A preview card on hover — a user, a linked docs page, a feature.
1372
+ * <HoverCard trigger={<a href="/u/dawid">@dawid</a>}>…</HoverCard>
1373
+ */
1374
+ declare function HoverCardSimple({ trigger, side, align, delay, closeDelay, className, classNames, children, ...root }: HoverCardProps): React.JSX.Element;
1375
+ export declare const HoverCard: typeof HoverCardSimple & {
1376
+ Root: <Payload>(props: PreviewCard.Root.Props<Payload>) => React.JSX.Element;
1377
+ Trigger: PreviewCard.Trigger;
1378
+ Content: typeof HoverCardContent;
1379
+ };
1380
+ export declare const hoverCardStyles: import("tailwind-variants").TVReturnType<{}, {
1381
+ positioner: string;
1382
+ popup: string[];
1383
+ }, undefined, undefined, undefined, undefined>;
1384
+ /** The app-wide toast queue; `toast()` adds to it, `<Toaster />` shows it. */
1385
+ export declare const toastManager: import("@base-ui/react").ToastManager<any>;
1386
+ type AddOptions = Parameters<typeof toastManager.add>[0];
1387
+ type ToastType = 'success' | 'error' | 'warning' | 'info' | 'loading';
1388
+ type ToastOptions = Omit<AddOptions, 'title' | 'type'> & {
1389
+ type?: ToastType;
1390
+ };
1391
+ declare function show(title: React.ReactNode, options?: ToastOptions): string;
1392
+ /**
1393
+ * Show a toast from anywhere:
1394
+ * toast('Saved'); toast.success('Kit created', { description: '12 items' });
1395
+ * const id = toast.loading('Copying build…'); toast.update(id, { title: 'Copied', type: 'success' });
1396
+ * toast.promise(save(), { loading: 'Saving…', success: 'Saved', error: 'Failed' });
1397
+ */
1398
+ export declare const toast: typeof show & {
1399
+ success: (title: React.ReactNode, options?: ToastOptions) => string;
1400
+ error: (title: React.ReactNode, options?: ToastOptions) => string;
1401
+ warning: (title: React.ReactNode, options?: ToastOptions) => string;
1402
+ info: (title: React.ReactNode, options?: ToastOptions) => string;
1403
+ /** Stays until updated or closed (no timeout). */
1404
+ loading: (title: React.ReactNode, options?: ToastOptions) => string;
1405
+ promise: <Value, T extends any = any>(promiseValue: Promise<Value>, options: import("@base-ui/react").ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
1406
+ update: <T extends any = any>(id: string, updates: import("@base-ui/react").ToastManagerUpdateOptions<T> | ((prevToast: import("@base-ui/react").ToastObject<T>) => import("@base-ui/react").ToastManagerUpdateOptions<T>)) => void;
1407
+ close: (id?: string) => void;
1408
+ };
1409
+ interface ToasterProps {
1410
+ /** Milliseconds a toast stays. @default 5000 */
1411
+ timeout?: number;
1412
+ /** Toasts shown at once. @default 3 */
1413
+ limit?: number;
1414
+ className?: string;
1415
+ classNames?: {
1416
+ viewport?: string;
1417
+ root?: string;
1418
+ };
1419
+ }
1420
+ /** Mount once (e.g. in the root layout). Shows the toasts added with `toast()`. */
1421
+ export declare function Toaster({ timeout, limit, className, classNames }: ToasterProps): React.JSX.Element;
1422
+ /**
1423
+ * Stacked toasts, adapted from Base UI's toast example: the front toast is full size, the ones
1424
+ * behind peek out and shrink; hovering expands the stack. Toasts don't use `squircle`: the stack
1425
+ * needs the `::after` hover bridge, which the squircle polyfill would take over in Firefox.
1426
+ */
1427
+ export declare const toastStyles: import("tailwind-variants").TVReturnType<{}, {
1428
+ viewport: string;
1429
+ root: string[];
1430
+ content: string[];
1431
+ icon: string;
1432
+ text: string;
1433
+ title: string;
1434
+ description: string;
1435
+ action: string;
1436
+ close: string;
1437
+ }, undefined, undefined, undefined, undefined>;
1438
+ interface TabsRootProps extends React.ComponentPropsWithRef<typeof Tabs$1.Root> {
1439
+ /** `pill`: a soft fill glides behind the active tab. `line`: an underline glides under it. @default 'pill' */
1440
+ variant?: 'pill' | 'line';
1441
+ /** @default 'md' */
1442
+ size?: 'sm' | 'md';
1443
+ /** Mark the active tab with the soft accent; `false` uses a neutral fill. @default true */
1444
+ accent?: boolean;
1445
+ }
1446
+ declare function TabsRoot({ className, variant, size, accent, ...props }: TabsRootProps): React.JSX.Element;
1447
+ interface TabsListProps extends React.ComponentPropsWithRef<typeof Tabs$1.List> {
1448
+ classNames?: {
1449
+ list?: string;
1450
+ indicator?: string;
1451
+ hover?: string;
1452
+ };
1453
+ }
1454
+ /**
1455
+ * The tab row. Two blocks glide in it: the active fill (or underline) follows the selected tab, and
1456
+ * one neutral hover block follows the mouse or keyboard focus. The hover block hides on the active tab
1457
+ * and never starts its slide from it (same behaviour as the sidebar).
1458
+ */
1459
+ declare function TabsList({ className, classNames, children, ref, ...props }: TabsListProps): React.JSX.Element;
1460
+ declare function TabsTab({ className, ...props }: React.ComponentPropsWithRef<typeof Tabs$1.Tab>): React.JSX.Element;
1461
+ /** The content of one tab. The new panel fades and rises in when the tab changes. */
1462
+ declare function TabsPanel({ className, ...props }: React.ComponentPropsWithRef<typeof Tabs$1.Panel>): React.JSX.Element;
1463
+ interface TabItem {
1464
+ value: string;
1465
+ label: React.ReactNode;
1466
+ content: React.ReactNode;
1467
+ disabled?: boolean;
1468
+ }
1469
+ interface TabsProps extends Omit<TabsRootProps, 'children'> {
1470
+ items: TabItem[];
1471
+ classNames?: {
1472
+ list?: string;
1473
+ tab?: string;
1474
+ indicator?: string;
1475
+ hover?: string;
1476
+ panel?: string;
1477
+ };
1478
+ }
1479
+ /** One-line form: `<Tabs items={[{ value, label, content }]} />`. */
1480
+ declare function TabsSimple({ items, classNames, defaultValue, ...props }: TabsProps): React.JSX.Element;
1481
+ export declare const Tabs: typeof TabsSimple & {
1482
+ Root: typeof TabsRoot;
1483
+ List: typeof TabsList;
1484
+ Tab: typeof TabsTab;
1485
+ Panel: typeof TabsPanel;
1486
+ };
1487
+ /**
1488
+ * Tabs look like our Toggle: quiet ghost buttons, and the active one sits on a soft squircle fill
1489
+ * that glides between tabs. Hover is one neutral block that glides on its own (glide.ts) and never
1490
+ * sits on the active tab. The `line` variant keeps the same hover block and underlines the active tab.
1491
+ */
1492
+ export declare const tabsStyles: import("tailwind-variants").TVReturnType<{
1493
+ variant: {
1494
+ /** A soft fill glides behind the active tab (like a pressed Toggle). */
1495
+ pill: {
1496
+ list: string;
1497
+ indicator: string;
1498
+ };
1499
+ /** An underline glides under the active tab (page sections, install steps). */
1500
+ line: {
1501
+ list: string;
1502
+ indicator: string[];
1503
+ };
1504
+ };
1505
+ size: {
1506
+ sm: {
1507
+ tab: string;
1508
+ };
1509
+ md: {
1510
+ tab: string;
1511
+ };
1512
+ };
1513
+ /** Active tab in the soft accent (default) or in a neutral fill. */
1514
+ accent: {
1515
+ true: {
1516
+ tab: string;
1517
+ };
1518
+ false: {
1519
+ tab: string;
1520
+ };
1521
+ };
1522
+ }, {
1523
+ root: string;
1524
+ list: string;
1525
+ tab: string[];
1526
+ hover: string;
1527
+ indicator: string[];
1528
+ panel: string[];
1529
+ }, undefined, undefined, undefined, undefined>;
1530
+ type Variant = 'card' | 'separated' | 'plain';
1531
+ interface AccordionRootProps extends React.ComponentPropsWithRef<typeof Accordion$1.Root> {
1532
+ /** `card`: one framed card. `separated`: a card per item. `plain`: no frame. @default 'card' */
1533
+ variant?: Variant;
1534
+ }
1535
+ declare function AccordionRoot({ className, variant, ...props }: AccordionRootProps): React.JSX.Element;
1536
+ declare function AccordionItem({ className, ...props }: React.ComponentPropsWithRef<typeof Accordion$1.Item>): React.JSX.Element;
1537
+ interface AccordionTriggerProps extends React.ComponentPropsWithRef<typeof Accordion$1.Trigger> {
1538
+ classNames?: {
1539
+ header?: string;
1540
+ chevron?: string;
1541
+ };
1542
+ }
1543
+ /** The clickable row; includes the heading wrapper and the chevron. */
1544
+ declare function AccordionTrigger({ className, classNames, children, ...props }: AccordionTriggerProps): React.JSX.Element;
1545
+ interface AccordionPanelProps extends React.ComponentPropsWithRef<typeof Accordion$1.Panel> {
1546
+ classNames?: {
1547
+ content?: string;
1548
+ };
1549
+ }
1550
+ declare function AccordionPanel({ className, classNames, children, ...props }: AccordionPanelProps): React.JSX.Element;
1551
+ interface AccordionItemData {
1552
+ value: string;
1553
+ title: React.ReactNode;
1554
+ content: React.ReactNode;
1555
+ disabled?: boolean;
1556
+ }
1557
+ interface AccordionProps extends Omit<AccordionRootProps, 'children'> {
1558
+ items: AccordionItemData[];
1559
+ }
1560
+ /** One-line form: `<Accordion items={[{ value, title, content }]} />`. */
1561
+ declare function AccordionSimple({ items, ...props }: AccordionProps): React.JSX.Element;
1562
+ export declare const Accordion: typeof AccordionSimple & {
1563
+ Root: typeof AccordionRoot;
1564
+ Item: typeof AccordionItem;
1565
+ Trigger: typeof AccordionTrigger;
1566
+ Panel: typeof AccordionPanel;
1567
+ };
1568
+ /**
1569
+ * Items keep a little space around the trigger, so the hover fill is an inset squircle with
1570
+ * padding of its own instead of a band that runs into the text.
1571
+ */
1572
+ export declare const accordionStyles: import("tailwind-variants").TVReturnType<{
1573
+ variant: {
1574
+ /** Items in one bordered card, divided by lines. */
1575
+ card: {
1576
+ root: string;
1577
+ item: string;
1578
+ };
1579
+ /** Separate cards with a gap between them. */
1580
+ separated: {
1581
+ root: string;
1582
+ item: string;
1583
+ };
1584
+ /** No frame: rows divided by lines, for FAQs inside a page. */
1585
+ plain: {
1586
+ item: string;
1587
+ };
1588
+ };
1589
+ }, {
1590
+ root: string;
1591
+ item: string;
1592
+ header: string;
1593
+ trigger: string[];
1594
+ chevron: string;
1595
+ panel: string[];
1596
+ content: string;
1597
+ }, undefined, undefined, undefined, undefined>;
1598
+ declare function CollapsibleRoot({ className, ...props }: React.ComponentPropsWithRef<typeof Collapsible$1.Root>): React.JSX.Element;
1599
+ interface CollapsibleTriggerProps extends React.ComponentPropsWithRef<typeof Collapsible$1.Trigger> {
1600
+ /** Show the rotating chevron before the label. @default true */
1601
+ chevron?: boolean;
1602
+ }
1603
+ declare function CollapsibleTrigger({ className, chevron, children, ...props }: CollapsibleTriggerProps): React.JSX.Element;
1604
+ declare function CollapsiblePanel({ className, ...props }: React.ComponentPropsWithRef<typeof Collapsible$1.Panel>): React.JSX.Element;
1605
+ interface CollapsibleProps extends Omit<React.ComponentPropsWithRef<typeof Collapsible$1.Root>, 'title'> {
1606
+ title: React.ReactNode;
1607
+ classNames?: {
1608
+ trigger?: string;
1609
+ panel?: string;
1610
+ };
1611
+ }
1612
+ /** One-line form: `<Collapsible title="Advanced">…</Collapsible>`. */
1613
+ declare function CollapsibleSimple({ title, classNames, children, ...props }: CollapsibleProps): React.JSX.Element;
1614
+ export declare const Collapsible: typeof CollapsibleSimple & {
1615
+ Root: typeof CollapsibleRoot;
1616
+ Trigger: typeof CollapsibleTrigger;
1617
+ Panel: typeof CollapsiblePanel;
1618
+ };
1619
+ export declare const collapsibleStyles: import("tailwind-variants").TVReturnType<{}, {
1620
+ root: string;
1621
+ trigger: string[];
1622
+ chevron: string;
1623
+ panel: string[];
1624
+ }, undefined, undefined, undefined, undefined>;
1625
+ /** Avatars stay circular (like the switch): a face reads best in a circle. */
1626
+ export declare const avatarStyles: import("tailwind-variants").TVReturnType<{
1627
+ size: {
1628
+ sm: {
1629
+ root: string;
1630
+ fallback: string;
1631
+ };
1632
+ md: {
1633
+ root: string;
1634
+ fallback: string;
1635
+ };
1636
+ lg: {
1637
+ root: string;
1638
+ fallback: string;
1639
+ };
1640
+ };
1641
+ }, {
1642
+ root: string;
1643
+ image: string;
1644
+ fallback: string;
1645
+ }, undefined, undefined, undefined, undefined>;
1646
+ type Size$2 = VariantProps<typeof avatarStyles>['size'];
1647
+ interface AvatarRootProps extends React.ComponentPropsWithRef<typeof Avatar$1.Root> {
1648
+ size?: Size$2;
1649
+ }
1650
+ declare function AvatarRoot({ className, size, ...props }: AvatarRootProps): React.JSX.Element;
1651
+ declare function AvatarImage({ className, ...props }: React.ComponentPropsWithRef<typeof Avatar$1.Image>): React.JSX.Element;
1652
+ declare function AvatarFallback({ className, ...props }: React.ComponentPropsWithRef<typeof Avatar$1.Fallback>): React.JSX.Element;
1653
+ /** "Dawid Seipold" → "DS". */
1654
+ export declare function initials(name: string): string;
1655
+ interface AvatarProps extends Omit<AvatarRootProps, 'children'> {
1656
+ src?: string;
1657
+ /** Used for the alt text and the initials fallback. */
1658
+ name: string;
1659
+ classNames?: {
1660
+ image?: string;
1661
+ fallback?: string;
1662
+ };
1663
+ }
1664
+ /** One-line form: `<Avatar src={url} name="Dawid Seipold" />`. Falls back to initials. */
1665
+ declare function AvatarSimple({ src, name, classNames, ...props }: AvatarProps): React.JSX.Element;
1666
+ export declare const Avatar: typeof AvatarSimple & {
1667
+ Root: typeof AvatarRoot;
1668
+ Image: typeof AvatarImage;
1669
+ Fallback: typeof AvatarFallback;
1670
+ };
1671
+ export declare const alertStyles: import("tailwind-variants").TVReturnType<{
1672
+ variant: {
1673
+ info: {
1674
+ root: string;
1675
+ icon: string;
1676
+ };
1677
+ success: {
1678
+ root: string;
1679
+ icon: string;
1680
+ };
1681
+ warning: {
1682
+ root: string;
1683
+ icon: string;
1684
+ };
1685
+ danger: {
1686
+ root: string;
1687
+ icon: string;
1688
+ };
1689
+ neutral: {
1690
+ root: string;
1691
+ icon: string;
1692
+ };
1693
+ };
1694
+ }, {
1695
+ root: string;
1696
+ icon: string;
1697
+ body: string;
1698
+ title: string;
1699
+ description: string;
1700
+ }, undefined, undefined, undefined, undefined>;
1701
+ interface AlertProps extends Omit<React.ComponentPropsWithRef<'div'>, 'title'>, VariantProps<typeof alertStyles> {
1702
+ title?: React.ReactNode;
1703
+ /** Replace the variant's icon; `false` hides it. */
1704
+ icon?: React.ReactNode | false;
1705
+ classNames?: {
1706
+ icon?: string;
1707
+ body?: string;
1708
+ title?: string;
1709
+ description?: string;
1710
+ };
1711
+ }
1712
+ /**
1713
+ * A callout. `danger` and `warning` use role="alert", the others role="status".
1714
+ * Compound parts: `Alert.Title`, `Alert.Description` (put them in `children` instead of `title`).
1715
+ */
1716
+ declare function AlertRoot({ className, classNames, variant, title, icon, children, ...props }: AlertProps): React.JSX.Element;
1717
+ declare function AlertTitle({ className, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
1718
+ declare function AlertDescription({ className, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
1719
+ export declare const Alert: typeof AlertRoot & {
1720
+ Title: typeof AlertTitle;
1721
+ Description: typeof AlertDescription;
1722
+ };
1723
+ interface SeparatorProps extends React.ComponentPropsWithRef<typeof Separator$1> {
1724
+ /** Text in the middle of a horizontal line ("or", a date…). */
1725
+ label?: React.ReactNode;
1726
+ classNames?: {
1727
+ line?: string;
1728
+ };
1729
+ }
1730
+ /** A thin line between content, optionally with a label in the middle. */
1731
+ export declare function Separator({ className, classNames, orientation, label, ...props }: SeparatorProps): React.JSX.Element;
1732
+ export declare const separatorStyles: import("tailwind-variants").TVReturnType<{
1733
+ orientation: {
1734
+ horizontal: {
1735
+ root: string;
1736
+ };
1737
+ vertical: {
1738
+ root: string;
1739
+ };
1740
+ };
1741
+ }, {
1742
+ root: string;
1743
+ labelled: string;
1744
+ line: string;
1745
+ }, undefined, undefined, undefined, undefined>;
1746
+ export declare const skeletonStyles: import("tailwind-variants").TVReturnType<{
1747
+ shape: {
1748
+ line: string;
1749
+ block: string;
1750
+ card: string;
1751
+ circle: string;
1752
+ };
1753
+ }, undefined, "squircle block bg-surface-2 bg-no-repeat", undefined, undefined, undefined>;
1754
+ interface SkeletonProps extends Omit<React.ComponentPropsWithRef<'span'>, 'onAnimationStart' | 'onDrag' | 'onDragStart' | 'onDragEnd' | 'onAnimationEnd'>, VariantProps<typeof skeletonStyles> {
1755
+ /** Lines of text to fake; the last one is shorter. */
1756
+ lines?: number;
1757
+ }
1758
+ /** A placeholder while content loads. A soft shimmer runs across it unless motion is reduced. */
1759
+ export declare function Skeleton({ lines, className, ...props }: SkeletonProps): React.JSX.Element;
1760
+ export declare const spinnerStyles: import("tailwind-variants").TVReturnType<{
1761
+ size: {
1762
+ sm: {
1763
+ root: string;
1764
+ };
1765
+ md: {
1766
+ root: string;
1767
+ };
1768
+ lg: {
1769
+ root: string;
1770
+ };
1771
+ };
1772
+ tone: {
1773
+ accent: {
1774
+ root: string;
1775
+ };
1776
+ muted: {
1777
+ root: string;
1778
+ };
1779
+ current: {
1780
+ root: string;
1781
+ };
1782
+ };
1783
+ }, {
1784
+ root: string;
1785
+ track: string;
1786
+ arc: string;
1787
+ }, undefined, undefined, undefined, undefined>;
1788
+ interface SpinnerProps extends React.ComponentPropsWithRef<'svg'>, VariantProps<typeof spinnerStyles> {
1789
+ /** Read by screen readers. @default 'Loading' */
1790
+ label?: string;
1791
+ }
1792
+ /** An indeterminate loading indicator. Slows down (but keeps turning) with reduced motion. */
1793
+ export declare function Spinner({ className, size, tone, label, ...props }: SpinnerProps): React.JSX.Element;
1794
+ export declare const progressStyles: import("tailwind-variants").TVReturnType<{
1795
+ size: {
1796
+ sm: {
1797
+ track: string;
1798
+ };
1799
+ md: {
1800
+ track: string;
1801
+ };
1802
+ lg: {
1803
+ track: string;
1804
+ };
1805
+ };
1806
+ }, {
1807
+ root: string;
1808
+ header: string;
1809
+ label: string;
1810
+ value: string;
1811
+ track: string;
1812
+ indicator: string[];
1813
+ }, undefined, undefined, undefined, undefined>;
1814
+ type Size$1 = VariantProps<typeof progressStyles>['size'];
1815
+ declare function ProgressRoot({ className, ...props }: React.ComponentPropsWithRef<typeof Progress$1.Root>): React.JSX.Element;
1816
+ declare function ProgressLabel({ className, ...props }: React.ComponentPropsWithRef<typeof Progress$1.Label>): React.JSX.Element;
1817
+ declare function ProgressValue({ className, ...props }: React.ComponentPropsWithRef<typeof Progress$1.Value>): React.JSX.Element;
1818
+ interface ProgressTrackProps extends React.ComponentPropsWithRef<typeof Progress$1.Track> {
1819
+ size?: Size$1;
1820
+ classNames?: {
1821
+ indicator?: string;
1822
+ };
1823
+ }
1824
+ /** The bar; includes its indicator. */
1825
+ declare function ProgressTrack({ className, classNames, size, ...props }: ProgressTrackProps): React.JSX.Element;
1826
+ interface ProgressProps extends Omit<React.ComponentPropsWithRef<typeof Progress$1.Root>, 'children'> {
1827
+ label?: React.ReactNode;
1828
+ /** Show the percentage next to the label. @default true when there is a label */
1829
+ showValue?: boolean;
1830
+ size?: Size$1;
1831
+ classNames?: {
1832
+ header?: string;
1833
+ label?: string;
1834
+ value?: string;
1835
+ track?: string;
1836
+ indicator?: string;
1837
+ };
1838
+ }
1839
+ /** One-line form: `<Progress value={42} label="Downloading" />`. `value={null}` is indeterminate. */
1840
+ declare function ProgressSimple({ label, showValue, size, classNames, ...props }: ProgressProps): React.JSX.Element;
1841
+ export declare const Progress: typeof ProgressSimple & {
1842
+ Root: typeof ProgressRoot;
1843
+ Label: typeof ProgressLabel;
1844
+ Value: typeof ProgressValue;
1845
+ Track: typeof ProgressTrack;
1846
+ };
1847
+ declare function BreadcrumbRoot({ className, ...props }: React.ComponentPropsWithRef<'nav'>): React.JSX.Element;
1848
+ declare function BreadcrumbList({ className, ...props }: React.ComponentPropsWithRef<'ol'>): React.JSX.Element;
1849
+ declare function BreadcrumbItem({ className, ...props }: React.ComponentPropsWithRef<'li'>): React.JSX.Element;
1850
+ type BreadcrumbLinkProps = useRender.ComponentProps<'a'>;
1851
+ /** A link in the trail. Pass `render={<Link to="…" />}` to use a router link. */
1852
+ declare function BreadcrumbLink({ className, render, ...props }: BreadcrumbLinkProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
1853
+ declare function BreadcrumbPage({ className, ...props }: React.ComponentPropsWithRef<'span'>): React.JSX.Element;
1854
+ declare function BreadcrumbSeparator({ className, children, ...props }: React.ComponentPropsWithRef<'li'>): React.JSX.Element;
1855
+ interface BreadcrumbItemData {
1856
+ label: React.ReactNode;
1857
+ href?: string;
1858
+ }
1859
+ interface BreadcrumbProps extends React.ComponentPropsWithRef<'nav'> {
1860
+ /** The last item is the current page. */
1861
+ items: BreadcrumbItemData[];
1862
+ /** Turns an item into a router link: `(item) => <Link to={item.href} />`. */
1863
+ renderLink?: (item: BreadcrumbItemData) => React.ReactElement;
1864
+ }
1865
+ /** One-line form: `<Breadcrumb items={[{ label: 'Docs', href: '/docs' }, { label: 'Button' }]} />`. */
1866
+ declare function BreadcrumbSimple({ items, renderLink, ...props }: BreadcrumbProps): React.JSX.Element;
1867
+ export declare const Breadcrumb: typeof BreadcrumbSimple & {
1868
+ Root: typeof BreadcrumbRoot;
1869
+ List: typeof BreadcrumbList;
1870
+ Item: typeof BreadcrumbItem;
1871
+ Link: typeof BreadcrumbLink;
1872
+ Page: typeof BreadcrumbPage;
1873
+ Separator: typeof BreadcrumbSeparator;
1874
+ };
1875
+ export declare const breadcrumbStyles: import("tailwind-variants").TVReturnType<{}, {
1876
+ root: string;
1877
+ list: string;
1878
+ item: string;
1879
+ link: string[];
1880
+ page: string;
1881
+ separator: string;
1882
+ }, undefined, undefined, undefined, undefined>;
1883
+ type Slot = number | 'ellipsis';
1884
+ /**
1885
+ * The pages to show: first, last, the current one with `siblings` on each side, and 'ellipsis'
1886
+ * for the gaps. The number of slots stays the same on every page (so the bar never jumps):
1887
+ * `paginationRange(1, 20)` → [1, 2, 3, 4, 5, 'ellipsis', 20],
1888
+ * `paginationRange(10, 20)` → [1, 'ellipsis', 9, 10, 11, 'ellipsis', 20].
1889
+ */
1890
+ export declare function paginationRange(page: number, total: number, siblings?: number): Slot[];
1891
+ interface PaginationProps extends Omit<React.ComponentPropsWithRef<'nav'>, 'onChange'> {
1892
+ /** The current page, from 1. */
1893
+ page: number;
1894
+ /** The number of pages. */
1895
+ total: number;
1896
+ onPageChange: (page: number) => void;
1897
+ /** Pages on each side of the current one. @default 1 */
1898
+ siblings?: number;
1899
+ /** Show the words "Previous" and "Next" next to the arrows (from the `sm` breakpoint). @default true */
1900
+ labels?: boolean;
1901
+ classNames?: {
1902
+ list?: string;
1903
+ page?: string;
1904
+ current?: string;
1905
+ hover?: string;
1906
+ ellipsis?: string;
1907
+ nav?: string;
1908
+ };
1909
+ }
1910
+ /**
1911
+ * Moves between pages of results. The current page sits on a soft accent thumb that slides between
1912
+ * slots with a spring; when the window of pages moves, the numbers roll through their slots like an
1913
+ * odometer, in a small wave from the current page outwards. Hover is one neutral block that glides
1914
+ * between buttons (never over the current one). With reduced motion everything changes at once.
1915
+ */
1916
+ export declare function Pagination({ page, total, onPageChange, siblings, labels, className, classNames, ...props }: PaginationProps): React.JSX.Element;
1917
+ /**
1918
+ * The bar holds three layers: the neutral hover block (glide.ts), the accent thumb under the current
1919
+ * page, and the buttons on top. Buttons have no fill of their own, so nothing flashes on hover.
1920
+ */
1921
+ export declare const paginationStyles: import("tailwind-variants").TVReturnType<{}, {
1922
+ root: string;
1923
+ area: string;
1924
+ list: string;
1925
+ page: string[];
1926
+ hover: string;
1927
+ current: string;
1928
+ thumbFill: string[];
1929
+ clip: string;
1930
+ number: string;
1931
+ ellipsis: string;
1932
+ nav: string;
1933
+ }, undefined, undefined, undefined, undefined>;
1934
+ type Div = React.ComponentPropsWithRef<'div'>;
1935
+ declare const EmptyRoot: ({ className, ...p }: Div) => React.JSX.Element;
1936
+ declare const EmptyIcon: ({ className, ...p }: Div) => React.JSX.Element;
1937
+ declare const EmptyTitle: ({ className, ...p }: React.ComponentPropsWithRef<'h3'>) => React.JSX.Element;
1938
+ declare const EmptyDescription: ({ className, ...p }: React.ComponentPropsWithRef<'p'>) => React.JSX.Element;
1939
+ declare const EmptyActions: ({ className, ...p }: Div) => React.JSX.Element;
1940
+ interface EmptyProps extends Omit<Div, 'title'> {
1941
+ icon?: React.ReactNode;
1942
+ title: React.ReactNode;
1943
+ description?: React.ReactNode;
1944
+ /** Buttons under the text. */
1945
+ action?: React.ReactNode;
1946
+ classNames?: {
1947
+ icon?: string;
1948
+ title?: string;
1949
+ description?: string;
1950
+ actions?: string;
1951
+ };
1952
+ }
1953
+ /** An empty state: icon tile, title, a line of text and an action. */
1954
+ declare function EmptySimple({ icon, title, description, action, classNames, children, ...props }: EmptyProps): React.JSX.Element;
1955
+ export declare const Empty: typeof EmptySimple & {
1956
+ Root: typeof EmptyRoot;
1957
+ Icon: typeof EmptyIcon;
1958
+ Title: typeof EmptyTitle;
1959
+ Description: typeof EmptyDescription;
1960
+ Actions: typeof EmptyActions;
1961
+ };
1962
+ export declare const emptyStyles: import("tailwind-variants").TVReturnType<{}, {
1963
+ root: string;
1964
+ icon: string;
1965
+ title: string;
1966
+ description: string;
1967
+ actions: string;
1968
+ }, undefined, undefined, undefined, undefined>;
1969
+ export declare const scrollAreaStyles: import("tailwind-variants").TVReturnType<{
1970
+ /** Fade the content at the top and bottom edges (like the docs sidebar). */
1971
+ fade: {
1972
+ true: {
1973
+ viewport: string;
1974
+ };
1975
+ false: {};
1976
+ };
1977
+ }, {
1978
+ root: string;
1979
+ viewport: string;
1980
+ scrollbar: string[];
1981
+ thumb: string;
1982
+ corner: string;
1983
+ }, undefined, undefined, undefined, undefined>;
1984
+ declare function Root({ className, ...p }: React.ComponentPropsWithRef<typeof ScrollArea$1.Root>): React.JSX.Element;
1985
+ declare function Viewport({ className, ...p }: React.ComponentPropsWithRef<typeof ScrollArea$1.Viewport>): React.JSX.Element;
1986
+ /** A thin scrollbar that shows on hover and while scrolling; includes its thumb. */
1987
+ declare function Scrollbar({ className, ...p }: React.ComponentPropsWithRef<typeof ScrollArea$1.Scrollbar>): React.JSX.Element;
1988
+ interface ScrollAreaProps extends React.ComponentPropsWithRef<typeof ScrollArea$1.Root>, VariantProps<typeof scrollAreaStyles> {
1989
+ /** Which scrollbars to render. @default 'vertical' */
1990
+ orientation?: 'vertical' | 'horizontal' | 'both';
1991
+ classNames?: {
1992
+ viewport?: string;
1993
+ scrollbar?: string;
1994
+ };
1995
+ }
1996
+ /** One-line form: `<ScrollArea className="h-64">…</ScrollArea>`. */
1997
+ declare function ScrollAreaSimple({ orientation, fade, classNames, children, ...props }: ScrollAreaProps): React.JSX.Element;
1998
+ export declare const ScrollArea: typeof ScrollAreaSimple & {
1999
+ Root: typeof Root;
2000
+ Viewport: typeof Viewport;
2001
+ Content: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").ScrollAreaContentProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
2002
+ Scrollbar: typeof Scrollbar;
2003
+ Corner: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").ScrollAreaCornerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
2004
+ };
2005
+ export declare const tableStyles: import("tailwind-variants").TVReturnType<{
2006
+ /** Highlight rows on hover (lists you can click into). */
2007
+ hover: {
2008
+ true: {
2009
+ row: string;
2010
+ };
2011
+ false: {};
2012
+ };
2013
+ /** Tighter rows. */
2014
+ dense: {
2015
+ true: {
2016
+ head: string;
2017
+ cell: string;
2018
+ };
2019
+ false: {};
2020
+ };
2021
+ /**
2022
+ * `fixed`: column widths come from the first row / `<col>` widths, not from the content, so they
2023
+ * never jump when the rows change. `auto`: the browser sizes columns to their content.
2024
+ */
2025
+ layout: {
2026
+ auto: {
2027
+ table: string;
2028
+ };
2029
+ fixed: {
2030
+ table: string;
2031
+ cell: string;
2032
+ };
2033
+ };
2034
+ }, {
2035
+ wrapper: string;
2036
+ table: string;
2037
+ caption: string;
2038
+ header: string;
2039
+ body: string;
2040
+ footer: string;
2041
+ row: string;
2042
+ head: string;
2043
+ cell: string;
2044
+ }, undefined, undefined, undefined, undefined>;
2045
+ type Options$2 = VariantProps<typeof tableStyles>;
2046
+ interface TableRootProps extends React.ComponentPropsWithRef<'table'>, Options$2 {
2047
+ classNames?: {
2048
+ wrapper?: string;
2049
+ };
2050
+ }
2051
+ /** The table in a rounded, horizontally scrolling frame (like the docs tables of crazy-hub). */
2052
+ declare function TableRoot({ className, classNames, hover, dense, layout, ...props }: TableRootProps): React.JSX.Element;
2053
+ declare const TableHeader: ({ className, ...p }: React.ComponentPropsWithRef<'thead'>) => React.JSX.Element;
2054
+ declare const TableBody: ({ className, ...p }: React.ComponentPropsWithRef<'tbody'>) => React.JSX.Element;
2055
+ declare const TableFooter: ({ className, ...p }: React.ComponentPropsWithRef<'tfoot'>) => React.JSX.Element;
2056
+ declare const TableRow: ({ className, ...p }: React.ComponentPropsWithRef<'tr'>) => React.JSX.Element;
2057
+ declare const TableHead: ({ className, ...p }: React.ComponentPropsWithRef<'th'>) => React.JSX.Element;
2058
+ declare const TableCell: ({ className, ...p }: React.ComponentPropsWithRef<'td'>) => React.JSX.Element;
2059
+ declare const TableCaption: ({ className, ...p }: React.ComponentPropsWithRef<'caption'>) => React.JSX.Element;
2060
+ interface TableColumn<Row> {
2061
+ key: string;
2062
+ header: React.ReactNode;
2063
+ cell?: (row: Row) => React.ReactNode;
2064
+ className?: string;
2065
+ /**
2066
+ * A fixed width (px number or CSS length). When any column has one the table switches to a fixed
2067
+ * layout, so widths don't follow the content; columns without a width share the rest.
2068
+ */
2069
+ width?: number | string;
2070
+ }
2071
+ interface TableProps<Row> extends Omit<TableRootProps, 'children'> {
2072
+ columns: TableColumn<Row>[];
2073
+ rows: Row[];
2074
+ /** Stable key per row. @default index */
2075
+ rowKey?: (row: Row, index: number) => React.Key;
2076
+ caption?: React.ReactNode;
2077
+ }
2078
+ /** One-line form for simple data: `<Table columns={…} rows={…} />`. For sorting/filtering see Data Table. */
2079
+ declare function TableSimple<Row extends Record<string, unknown>>({ columns, rows, rowKey, caption, layout, ...props }: TableProps<Row>): React.JSX.Element;
2080
+ export declare const Table: typeof TableSimple & {
2081
+ Root: typeof TableRoot;
2082
+ Header: typeof TableHeader;
2083
+ Body: typeof TableBody;
2084
+ Footer: typeof TableFooter;
2085
+ Row: typeof TableRow;
2086
+ Head: typeof TableHead;
2087
+ Cell: typeof TableCell;
2088
+ Caption: typeof TableCaption;
2089
+ };
2090
+ export declare const aspectRatioStyles: import("tailwind-variants").TVReturnType<{
2091
+ rounded: {
2092
+ true: string;
2093
+ false: string;
2094
+ };
2095
+ }, undefined, "relative w-full overflow-hidden [&>img]:absolute [&>img]:inset-0 [&>img]:size-full [&>img]:object-cover [&>video]:absolute [&>video]:inset-0 [&>video]:size-full [&>video]:object-cover", undefined, undefined, undefined>;
2096
+ interface AspectRatioProps extends React.ComponentPropsWithRef<'div'>, VariantProps<typeof aspectRatioStyles> {
2097
+ /** Width / height, e.g. `16 / 9`. @default 1 */
2098
+ ratio?: number;
2099
+ }
2100
+ /** Keeps its content (image, video, map) at a fixed ratio; media inside fills it. */
2101
+ export declare function AspectRatio({ ratio, rounded, className, style, ...props }: AspectRatioProps): React.JSX.Element;
2102
+ /**
2103
+ * Days are 2.5rem buttons inside 2.75rem cells (2 / 2.25rem on phones), so there is air around every day. A range is one soft
2104
+ * band per week row (a single element, so no seams between cells) with rounded ends; the picked ends are
2105
+ * solid accent days inside it, their radius concentric with the band's (band = day radius + 2px inset).
2106
+ */
2107
+ export declare const calendarStyles: import("tailwind-variants").TVReturnType<{}, {
2108
+ root: string;
2109
+ nav: string;
2110
+ navButton: string;
2111
+ viewport: string;
2112
+ months: string;
2113
+ month: string;
2114
+ caption: string;
2115
+ captionMonth: string;
2116
+ captionYear: string;
2117
+ grid: string;
2118
+ weekdays: string;
2119
+ weekday: string;
2120
+ week: string;
2121
+ cell: string;
2122
+ band: string[];
2123
+ day: string[];
2124
+ }, undefined, undefined, undefined, undefined>;
2125
+ interface DateRange {
2126
+ from: Date;
2127
+ to?: Date | null;
2128
+ }
2129
+ type Slots$1 = keyof ReturnType<typeof calendarStyles>;
2130
+ interface CalendarBaseProps {
2131
+ /** The first month shown (controlled). */
2132
+ month?: Date;
2133
+ /** The first month shown at start. Defaults to the selected date or today. */
2134
+ defaultMonth?: Date;
2135
+ onMonthChange?: (month: Date) => void;
2136
+ /** The earliest day that can be picked. */
2137
+ min?: Date;
2138
+ /** The latest day that can be picked. */
2139
+ max?: Date;
2140
+ /** Days that can't be picked: a list, or a function that returns `true` for a disabled day. */
2141
+ disabledDates?: Date[] | ((date: Date) => boolean);
2142
+ /** Disable the whole calendar. */
2143
+ disabled?: boolean;
2144
+ /** BCP 47 locale for month and weekday names. @default 'en' */
2145
+ locale?: string;
2146
+ /** 0 = Sunday … 6 = Saturday. @default 1 */
2147
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
2148
+ /** How many months to show side by side. @default 1 */
2149
+ numberOfMonths?: number;
2150
+ /** Show the days of the neighbouring months. @default true */
2151
+ showOutsideDays?: boolean;
2152
+ /** Move focus into the grid on mount (used by Date Picker). */
2153
+ autoFocus?: boolean;
2154
+ 'aria-label'?: string;
2155
+ className?: string;
2156
+ classNames?: Partial<Record<Slots$1, string>>;
2157
+ }
2158
+ interface CalendarSingleProps extends CalendarBaseProps {
2159
+ mode?: 'single';
2160
+ value?: Date | null;
2161
+ defaultValue?: Date | null;
2162
+ onValueChange?: (value: Date | null) => void;
2163
+ }
2164
+ interface CalendarRangeProps extends CalendarBaseProps {
2165
+ mode: 'range';
2166
+ value?: DateRange | null;
2167
+ defaultValue?: DateRange | null;
2168
+ onValueChange?: (value: DateRange | null) => void;
2169
+ }
2170
+ type CalendarProps = CalendarSingleProps | CalendarRangeProps;
2171
+ /**
2172
+ * A month grid for picking a day or a range of days.
2173
+ * <Calendar value={date} onValueChange={setDate} />
2174
+ * <Calendar mode="range" numberOfMonths={2} value={range} onValueChange={setRange} />
2175
+ * Names come from `Intl`; arrow keys, Home/End and Page Up/Down move the focus.
2176
+ */
2177
+ export declare function Calendar(props: CalendarProps): React.JSX.Element;
2178
+ export declare const datePickerStyles: import("tailwind-variants").TVReturnType<{
2179
+ size: {
2180
+ sm: {
2181
+ trigger: string;
2182
+ };
2183
+ md: {
2184
+ trigger: string;
2185
+ };
2186
+ lg: {
2187
+ trigger: string;
2188
+ };
2189
+ };
2190
+ }, {
2191
+ trigger: string[];
2192
+ value: string;
2193
+ placeholder: string;
2194
+ icon: string;
2195
+ popup: string;
2196
+ calendar: string;
2197
+ }, undefined, undefined, undefined, undefined>;
2198
+ type Slots = keyof ReturnType<typeof datePickerStyles>;
2199
+ type CalendarPassThrough = Pick<CalendarProps, 'min' | 'max' | 'disabledDates' | 'locale' | 'weekStartsOn' | 'numberOfMonths' | 'showOutsideDays'>;
2200
+ interface DatePickerBaseProps extends CalendarPassThrough, VariantProps<typeof datePickerStyles> {
2201
+ /** Text shown while nothing is picked. */
2202
+ placeholder?: React.ReactNode;
2203
+ /** Options for `Intl.DateTimeFormat` used to show the value in the trigger. @default { dateStyle: 'medium' } */
2204
+ formatOptions?: Intl.DateTimeFormatOptions;
2205
+ /** Disable the trigger. */
2206
+ disabled?: boolean;
2207
+ /** Submit the value with a form, as `YYYY-MM-DD` (range: `name` + `[from]` / `[to]`). */
2208
+ name?: string;
2209
+ open?: boolean;
2210
+ defaultOpen?: boolean;
2211
+ onOpenChange?: (open: boolean) => void;
2212
+ side?: 'top' | 'bottom' | 'left' | 'right';
2213
+ align?: 'start' | 'center' | 'end';
2214
+ id?: string;
2215
+ 'aria-label'?: string;
2216
+ 'aria-labelledby'?: string;
2217
+ className?: string;
2218
+ classNames?: Partial<Record<Slots, string>>;
2219
+ }
2220
+ interface DatePickerSingleProps extends DatePickerBaseProps {
2221
+ mode?: 'single';
2222
+ value?: Date | null;
2223
+ defaultValue?: Date | null;
2224
+ onValueChange?: (value: Date | null) => void;
2225
+ }
2226
+ interface DatePickerRangeProps extends DatePickerBaseProps {
2227
+ mode: 'range';
2228
+ value?: DateRange | null;
2229
+ defaultValue?: DateRange | null;
2230
+ onValueChange?: (value: DateRange | null) => void;
2231
+ }
2232
+ type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;
2233
+ /**
2234
+ * A field that opens a Calendar in a popover.
2235
+ * <DatePicker value={date} onValueChange={setDate} placeholder="Pick a date" />
2236
+ * <DatePicker mode="range" numberOfMonths={2} value={range} onValueChange={setRange} />
2237
+ */
2238
+ export declare function DatePicker(props: DatePickerProps): React.JSX.Element;
2239
+ export declare const comboboxStyles: import("tailwind-variants").TVReturnType<{
2240
+ size: {
2241
+ sm: {
2242
+ inputGroup: string;
2243
+ };
2244
+ md: {
2245
+ inputGroup: string;
2246
+ };
2247
+ lg: {
2248
+ inputGroup: string;
2249
+ };
2250
+ };
2251
+ multiple: {
2252
+ true: {
2253
+ inputGroup: string;
2254
+ input: string;
2255
+ };
2256
+ false: {
2257
+ input: string;
2258
+ };
2259
+ };
2260
+ }, {
2261
+ inputGroup: string[];
2262
+ input: string;
2263
+ actions: string;
2264
+ action: string[];
2265
+ chips: string;
2266
+ chip: string[];
2267
+ chipRemove: string[];
2268
+ positioner: string;
2269
+ popup: string[];
2270
+ list: string;
2271
+ item: string[];
2272
+ itemIndicator: string;
2273
+ empty: string;
2274
+ group: string;
2275
+ groupLabel: string;
2276
+ separator: string;
2277
+ }, undefined, undefined, undefined, undefined>;
2278
+ type Size = VariantProps<typeof comboboxStyles>['size'];
2279
+ type Props$3<C extends React.ElementType> = Omit<React.ComponentPropsWithRef<C>, 'className'> & {
2280
+ className?: string;
2281
+ };
2282
+ /** The field around the input, trigger, clear button and chips; the popup is anchored to it. */
2283
+ declare function ComboboxInputGroup({ className, size, multiple, ...props }: Props$3<typeof Combobox$1.InputGroup> & {
2284
+ size?: Size;
2285
+ multiple?: boolean;
2286
+ }): React.JSX.Element;
2287
+ declare function ComboboxInput({ className, ...props }: Props$3<typeof Combobox$1.Input>): React.JSX.Element;
2288
+ /** Holds the clear and open buttons at the end of the field. */
2289
+ declare const ComboboxActions: ({ className, ...props }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
2290
+ declare function ComboboxTrigger({ className, children, ...props }: Props$3<typeof Combobox$1.Trigger>): React.JSX.Element;
2291
+ declare function ComboboxClear({ className, children, ...props }: Props$3<typeof Combobox$1.Clear>): React.JSX.Element;
2292
+ declare function ComboboxChips({ className, ...props }: Props$3<typeof Combobox$1.Chips>): React.JSX.Element;
2293
+ /** A picked value in multiple mode, with a remove button. Backspace/Delete removes a focused chip. */
2294
+ declare function ComboboxChip({ className, children, removeLabel, ...props }: Props$3<typeof Combobox$1.Chip> & {
2295
+ removeLabel?: string;
2296
+ }): React.JSX.Element;
2297
+ /** The popup: portal + positioner + popup in one. Put `Combobox.Empty` and `Combobox.List` inside. */
2298
+ declare function ComboboxContent({ className, sideOffset, align, ...props }: Props$3<typeof Combobox$1.Popup> & {
2299
+ sideOffset?: number;
2300
+ align?: 'start' | 'center' | 'end';
2301
+ }): React.JSX.Element;
2302
+ declare function ComboboxList({ className, ...props }: Props$3<typeof Combobox$1.List>): React.JSX.Element;
2303
+ declare function ComboboxItem({ className, children, ...props }: Props$3<typeof Combobox$1.Item>): React.JSX.Element;
2304
+ declare function ComboboxEmpty({ className, ...props }: Props$3<typeof Combobox$1.Empty>): React.JSX.Element;
2305
+ declare function ComboboxGroup({ className, ...props }: Props$3<typeof Combobox$1.Group>): React.JSX.Element;
2306
+ declare function ComboboxGroupLabel({ className, ...props }: Props$3<typeof Combobox$1.GroupLabel>): React.JSX.Element;
2307
+ declare function ComboboxSeparator({ className, ...props }: Props$3<typeof Combobox$1.Separator>): React.JSX.Element;
2308
+ interface ComboboxOption {
2309
+ value: string;
2310
+ label: string;
2311
+ icon?: React.ReactNode;
2312
+ disabled?: boolean;
2313
+ }
2314
+ interface ComboboxGroupData {
2315
+ label: string;
2316
+ items: ComboboxOption[];
2317
+ }
2318
+ interface ComboboxBaseProps {
2319
+ /** Options as strings, `{ value, label }` objects, or groups `{ label, items }`. */
2320
+ items: (string | ComboboxOption)[] | ComboboxGroupData[];
2321
+ placeholder?: string;
2322
+ /** Shown when nothing matches the typed text. @default 'No results.' */
2323
+ emptyText?: React.ReactNode;
2324
+ size?: Size;
2325
+ disabled?: boolean;
2326
+ required?: boolean;
2327
+ /** Submit the value with a form. */
2328
+ name?: string;
2329
+ id?: string;
2330
+ 'aria-label'?: string;
2331
+ className?: string;
2332
+ classNames?: {
2333
+ inputGroup?: string;
2334
+ input?: string;
2335
+ popup?: string;
2336
+ item?: string;
2337
+ chip?: string;
2338
+ };
2339
+ }
2340
+ interface ComboboxSingleProps extends ComboboxBaseProps {
2341
+ multiple?: false;
2342
+ value?: string | null;
2343
+ defaultValue?: string | null;
2344
+ onValueChange?: (value: string | null) => void;
2345
+ /** Show a button that clears the value. @default true */
2346
+ clearable?: boolean;
2347
+ }
2348
+ interface ComboboxMultipleProps extends ComboboxBaseProps {
2349
+ multiple: true;
2350
+ value?: string[];
2351
+ defaultValue?: string[];
2352
+ onValueChange?: (value: string[]) => void;
2353
+ clearable?: boolean;
2354
+ }
2355
+ type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;
2356
+ /**
2357
+ * A select you can type into to filter.
2358
+ * <Combobox items={['Gothic 1', 'Gothic 2']} placeholder="Pick a game" />
2359
+ * <Combobox multiple items={…} /> // picked values become chips
2360
+ * Compound: Combobox.Root / InputGroup / Input / Actions / Trigger / Clear / Chips / Chip / Value /
2361
+ * Content / Empty / List / Item / Group / GroupLabel / Collection / Separator.
2362
+ */
2363
+ declare function ComboboxSimple(props: ComboboxProps): React.JSX.Element;
2364
+ export declare const Combobox: typeof ComboboxSimple & {
2365
+ Root: typeof Combobox$1.Root;
2366
+ InputGroup: typeof ComboboxInputGroup;
2367
+ Input: typeof ComboboxInput;
2368
+ Actions: typeof ComboboxActions;
2369
+ Trigger: typeof ComboboxTrigger;
2370
+ Clear: typeof ComboboxClear;
2371
+ Chips: typeof ComboboxChips;
2372
+ Chip: typeof ComboboxChip;
2373
+ Value: typeof Combobox$1.Value;
2374
+ Content: typeof ComboboxContent;
2375
+ Empty: typeof ComboboxEmpty;
2376
+ List: typeof ComboboxList;
2377
+ Item: typeof ComboboxItem;
2378
+ Group: typeof ComboboxGroup;
2379
+ GroupLabel: typeof ComboboxGroupLabel;
2380
+ Collection: typeof Combobox$1.Collection;
2381
+ Separator: typeof ComboboxSeparator;
2382
+ useFilter: typeof Combobox$1.useFilter;
2383
+ createItems: typeof Combobox$1.createItems;
2384
+ };
2385
+ type Props$2<C extends React.ElementType> = Omit<React.ComponentPropsWithRef<C>, 'className'> & {
2386
+ className?: string;
2387
+ };
2388
+ type AutocompleteRootProps = React.ComponentProps<typeof Autocomplete.Root>;
2389
+ interface CommandRootProps extends Pick<AutocompleteRootProps, 'items' | 'filter' | 'filteredItems' | 'itemToStringValue' | 'limit' | 'loopFocus'> {
2390
+ /** The typed text (controlled). */
2391
+ search?: string;
2392
+ defaultSearch?: string;
2393
+ onSearchChange?: (search: string) => void;
2394
+ className?: string;
2395
+ children?: React.ReactNode;
2396
+ 'aria-label'?: string;
2397
+ }
2398
+ /**
2399
+ * The palette: an always-open list filtered by the input. Arrow keys move, Enter runs the item.
2400
+ * Pass `items` (flat or `{ label, items }` groups) and render them with `Command.List`, or render
2401
+ * `Command.Item`s yourself and filter them by passing `filteredItems`.
2402
+ */
2403
+ declare function CommandRoot({ search, defaultSearch, onSearchChange, className, children, itemToStringValue, 'aria-label': ariaLabel, ...props }: CommandRootProps): React.JSX.Element;
2404
+ declare function CommandInput({ className, ...props }: Props$2<typeof Autocomplete.Input>): React.JSX.Element;
2405
+ declare function CommandList({ className, ...props }: Props$2<typeof Autocomplete.List>): React.JSX.Element;
2406
+ declare function CommandEmpty({ className, ...props }: Props$2<typeof Autocomplete.Empty>): React.JSX.Element;
2407
+ declare function CommandGroup({ className, ...props }: Props$2<typeof Autocomplete.Group>): React.JSX.Element;
2408
+ declare function CommandGroupLabel({ className, ...props }: Props$2<typeof Autocomplete.GroupLabel>): React.JSX.Element;
2409
+ declare function CommandSeparator({ className, ...props }: Props$2<typeof Autocomplete.Separator>): React.JSX.Element;
2410
+ interface CommandItemProps extends Props$2<typeof Autocomplete.Item> {
2411
+ /** Runs on click and on Enter. */
2412
+ onSelect?: () => void;
2413
+ }
2414
+ declare function CommandItem({ className, onSelect, onClick, ...props }: CommandItemProps): React.JSX.Element;
2415
+ /** Keys at the end of an item: `<Command.Shortcut keys="Ctrl+G" />` or `keys={['Ctrl', 'G']}`. */
2416
+ declare function CommandShortcut({ keys, className, ...props }: React.ComponentPropsWithRef<'span'> & {
2417
+ keys: string | string[];
2418
+ }): React.JSX.Element;
2419
+ /** A strip under the list for hints (`↑↓ to move`, `Enter to run`). */
2420
+ declare function CommandFooter({ className, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
2421
+ /** Shown instead of the list while results load (`role="status"`). */
2422
+ declare function CommandLoading({ className, children, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
2423
+ /** Stacks a breadcrumb line, a title and a description inside an item. */
2424
+ declare function CommandItemContent({ className, ...props }: React.ComponentPropsWithRef<'span'>): React.JSX.Element;
2425
+ interface CommandItemBreadcrumbsProps extends Omit<React.ComponentPropsWithRef<'span'>, 'children'> {
2426
+ /** The path above the title, e.g. `['Components', 'Button']`. */
2427
+ items: React.ReactNode[];
2428
+ }
2429
+ /** The small section / path line above an item's title. */
2430
+ declare function CommandItemBreadcrumbs({ items, className, ...props }: CommandItemBreadcrumbsProps): React.JSX.Element;
2431
+ declare function CommandItemTitle({ className, ...props }: React.ComponentPropsWithRef<'span'>): React.JSX.Element;
2432
+ declare function CommandItemDescription({ className, ...props }: React.ComponentPropsWithRef<'span'>): React.JSX.Element;
2433
+ /** Splits `text` into parts, `match: true` for every piece that matches a word of `query`. */
2434
+ export declare function highlightParts(text: string, query: string): {
2435
+ text: string;
2436
+ match: boolean;
2437
+ }[];
2438
+ interface CommandHighlightProps extends Omit<React.ComponentPropsWithRef<'span'>, 'children'> {
2439
+ text: string;
2440
+ /** The words to mark. @default the text typed into the palette */
2441
+ query?: string;
2442
+ classNames?: {
2443
+ mark?: string;
2444
+ };
2445
+ }
2446
+ /** The text with every match of the query wrapped in `<mark>`. */
2447
+ declare function CommandHighlight({ text, query, className, classNames, ...props }: CommandHighlightProps): React.JSX.Element;
2448
+ interface CommandJumpItemProps extends CommandItemProps {
2449
+ /** The words before the target. @default 'Jump to' */
2450
+ label?: React.ReactNode;
2451
+ }
2452
+ /** A quick action at the top of the list: `Jump to <target>`, with an Enter hint when highlighted. */
2453
+ declare function CommandJumpItem({ label, children, className, ...props }: CommandJumpItemProps): React.JSX.Element;
2454
+ interface CommandHintProps extends Omit<React.ComponentPropsWithRef<'span'>, 'children'> {
2455
+ /** Keys, e.g. `['↑', '↓']` or `'Enter'`. */
2456
+ keys: string | string[];
2457
+ /** What the keys do, e.g. `'to move'`. */
2458
+ children?: React.ReactNode;
2459
+ }
2460
+ /** A key hint for the footer: `<Command.Hint keys="Enter">to open</Command.Hint>`. */
2461
+ declare function CommandHint({ keys, children, className, ...props }: CommandHintProps): React.JSX.Element;
2462
+ interface CommandFilterOption {
2463
+ value: string;
2464
+ label: string;
2465
+ description?: string;
2466
+ disabled?: boolean;
2467
+ }
2468
+ interface CommandFilterProps {
2469
+ /** Name shown before the value, e.g. `'Section'`. */
2470
+ label: string;
2471
+ options: CommandFilterOption[];
2472
+ value?: string;
2473
+ /** The value that means "not filtered", shown plainly. @default the first option */
2474
+ defaultValue?: string;
2475
+ onValueChange?: (value: string) => void;
2476
+ className?: string;
2477
+ classNames?: {
2478
+ trigger?: string;
2479
+ content?: string;
2480
+ option?: string;
2481
+ };
2482
+ }
2483
+ /** One filter in the footer: a small `Label: value` button opening a radio menu. */
2484
+ declare function CommandFilter({ label, options, value, defaultValue, onValueChange, className, classNames }: CommandFilterProps): React.JSX.Element;
2485
+ interface CommandFiltersProps extends React.ComponentPropsWithRef<'div'> {
2486
+ /** Called by the "Clear filters" button. Leave out to hide the button. */
2487
+ onClear?: () => void;
2488
+ /** Whether any filter is set; the button is visible only then, but its place is always kept. */
2489
+ canClear?: boolean;
2490
+ /** @default 'Clear filters' */
2491
+ clearLabel?: React.ReactNode;
2492
+ classNames?: {
2493
+ list?: string;
2494
+ clear?: string;
2495
+ };
2496
+ }
2497
+ /**
2498
+ * The filter row. Filters wrap onto more lines when narrow; "Clear filters" sits in its own slot at the
2499
+ * end that never wraps and keeps its space when hidden, so setting a filter never moves anything.
2500
+ */
2501
+ declare function CommandFilters({ onClear, canClear, clearLabel, className, classNames, children, ...props }: CommandFiltersProps): React.JSX.Element;
2502
+ interface CommandItemData {
2503
+ value: string;
2504
+ label: string;
2505
+ icon?: React.ReactNode;
2506
+ /** Shown as Kbd keys, e.g. `'Ctrl+G'`. */
2507
+ shortcut?: string | string[];
2508
+ /** Extra words that match the search (e.g. `['invincible']` for God mode). */
2509
+ keywords?: string[];
2510
+ /** A second line under the label. */
2511
+ description?: string;
2512
+ /** A path line above the label, e.g. `['Player']`. */
2513
+ breadcrumbs?: string[];
2514
+ disabled?: boolean;
2515
+ onSelect?: () => void;
2516
+ }
2517
+ interface CommandGroupData {
2518
+ label: string;
2519
+ items: CommandItemData[];
2520
+ }
2521
+ interface CommandProps extends Omit<CommandRootProps, 'items' | 'children'> {
2522
+ /** Groups of commands. */
2523
+ groups: CommandGroupData[];
2524
+ placeholder?: string;
2525
+ /** Shown when nothing matches. @default 'No results.' */
2526
+ emptyText?: React.ReactNode;
2527
+ /** Content under the list (key hints, `Command.Filters`). */
2528
+ footer?: React.ReactNode;
2529
+ /** Show `Command.Loading` instead of the list. */
2530
+ loading?: boolean;
2531
+ /** @default 'Searching…' */
2532
+ loadingText?: React.ReactNode;
2533
+ classNames?: {
2534
+ root?: string;
2535
+ input?: string;
2536
+ list?: string;
2537
+ item?: string;
2538
+ };
2539
+ }
2540
+ /**
2541
+ * A command palette.
2542
+ * <Command groups={[{ label: 'Player', items: [{ value: 'god', label: 'God mode', shortcut: 'Ctrl+G' }] }]} />
2543
+ * In a modal: <Command.Dialog open={open} onOpenChange={setOpen} groups={…} />.
2544
+ * Compound: Command.Root / Input / List / Empty / Loading / Group / GroupLabel / Collection / Item /
2545
+ * ItemContent / ItemBreadcrumbs / ItemTitle / ItemDescription / Highlight / JumpItem / Shortcut /
2546
+ * Separator / Footer / Hint / Filters / Filter.
2547
+ */
2548
+ declare function CommandSimple({ groups, placeholder, emptyText, footer, loading, loadingText, className, classNames, filter, ...props }: CommandProps): React.JSX.Element;
2549
+ interface CommandDialogProps extends Partial<CommandProps> {
2550
+ open?: boolean;
2551
+ defaultOpen?: boolean;
2552
+ onOpenChange?: (open: boolean) => void;
2553
+ /** The element that opens the palette. */
2554
+ trigger?: React.ReactElement;
2555
+ /** A handle from `Dialog.createHandle()`, so triggers elsewhere in the app (`<Dialog.Trigger handle>`) open it. */
2556
+ handle?: Dialog$1.Handle<unknown>;
2557
+ /** Accessible name of the dialog. @default 'Command palette' */
2558
+ title?: string;
2559
+ /** Close the dialog after an item runs. @default true */
2560
+ closeOnSelect?: boolean;
2561
+ /** Your own `Command.Root` content instead of `groups`. */
2562
+ children?: React.ReactNode;
2563
+ }
2564
+ /** The palette in a modal, positioned high on the screen like Spotlight. */
2565
+ declare function CommandDialog({ open: openProp, defaultOpen, onOpenChange, trigger, handle, title, closeOnSelect, children, groups, className, ...props }: CommandDialogProps): React.JSX.Element;
2566
+ export declare const Command: typeof CommandSimple & {
2567
+ Root: typeof CommandRoot;
2568
+ Input: typeof CommandInput;
2569
+ List: typeof CommandList;
2570
+ Empty: typeof CommandEmpty;
2571
+ Group: typeof CommandGroup;
2572
+ GroupLabel: typeof CommandGroupLabel;
2573
+ Collection: typeof Autocomplete.Collection;
2574
+ Item: typeof CommandItem;
2575
+ Shortcut: typeof CommandShortcut;
2576
+ Separator: typeof CommandSeparator;
2577
+ Footer: typeof CommandFooter;
2578
+ Loading: typeof CommandLoading;
2579
+ ItemContent: typeof CommandItemContent;
2580
+ ItemBreadcrumbs: typeof CommandItemBreadcrumbs;
2581
+ ItemTitle: typeof CommandItemTitle;
2582
+ ItemDescription: typeof CommandItemDescription;
2583
+ Highlight: typeof CommandHighlight;
2584
+ JumpItem: typeof CommandJumpItem;
2585
+ Hint: typeof CommandHint;
2586
+ Filters: typeof CommandFilters;
2587
+ Filter: typeof CommandFilter;
2588
+ Dialog: typeof CommandDialog;
2589
+ };
2590
+ export declare const commandStyles: import("tailwind-variants").TVReturnType<{}, {
2591
+ root: string;
2592
+ inputWrap: string;
2593
+ input: string;
2594
+ list: string;
2595
+ empty: string;
2596
+ loading: string;
2597
+ group: string;
2598
+ groupLabel: string;
2599
+ item: string[];
2600
+ itemContent: string;
2601
+ itemBreadcrumbs: string;
2602
+ itemTitle: string;
2603
+ itemDescription: string;
2604
+ highlight: string;
2605
+ jump: string;
2606
+ jumpTarget: string;
2607
+ jumpKey: string;
2608
+ shortcut: string;
2609
+ separator: string;
2610
+ footer: string;
2611
+ hint: string;
2612
+ filters: string;
2613
+ filterList: string;
2614
+ filterTrigger: string[];
2615
+ filterTriggerActive: string;
2616
+ filterLabel: string;
2617
+ filterValue: string;
2618
+ filterOption: string;
2619
+ filterOptionDescription: string;
2620
+ clear: string[];
2621
+ backdrop: string;
2622
+ dialog: string[];
2623
+ }, undefined, undefined, undefined, undefined>;
2624
+ export declare const inputOtpStyles: import("tailwind-variants").TVReturnType<{
2625
+ size: {
2626
+ sm: {
2627
+ slot: string;
2628
+ };
2629
+ md: {
2630
+ slot: string;
2631
+ };
2632
+ lg: {
2633
+ slot: string;
2634
+ };
2635
+ };
2636
+ }, {
2637
+ root: string;
2638
+ group: string;
2639
+ slot: string[];
2640
+ separator: string;
2641
+ }, undefined, undefined, undefined, undefined>;
2642
+ type RootProps = React.ComponentPropsWithRef<typeof OTPField.Root>;
2643
+ interface InputOTPRootProps extends Omit<RootProps, 'className'>, VariantProps<typeof inputOtpStyles> {
2644
+ className?: string;
2645
+ }
2646
+ declare function InputOTPRoot({ size, className, ...props }: InputOTPRootProps): React.JSX.Element;
2647
+ /** One character box. */
2648
+ declare function InputOTPSlot({ className, ...props }: Omit<React.ComponentPropsWithRef<typeof OTPField.Input>, 'className'> & {
2649
+ className?: string;
2650
+ }): React.JSX.Element;
2651
+ /** Slots that sit closer together. */
2652
+ declare function InputOTPGroup({ className, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
2653
+ /** A dash between groups (or your own children). Announced as a separator. */
2654
+ declare function InputOTPSeparator({ className, children, ...props }: Omit<React.ComponentPropsWithRef<typeof OTPField.Separator>, 'className'> & {
2655
+ className?: string;
2656
+ }): React.JSX.Element;
2657
+ interface InputOTPProps extends InputOTPRootProps {
2658
+ /** Split the slots into groups with a separator between, e.g. `[3, 3]`. Must add up to `length`. */
2659
+ groups?: number[];
2660
+ /** What goes between groups. @default a dash */
2661
+ separator?: React.ReactNode;
2662
+ /** Hint shown in empty slots, one character per slot (e.g. `'•'`). */
2663
+ slotPlaceholder?: string;
2664
+ classNames?: {
2665
+ root?: string;
2666
+ group?: string;
2667
+ slot?: string;
2668
+ separator?: string;
2669
+ };
2670
+ }
2671
+ /**
2672
+ * A one-time code field made of single-character slots. Paste, arrows and Backspace work across slots.
2673
+ * <InputOTP length={6} groups={[3, 3]} />
2674
+ * Compound: InputOTP.Root / Group / Slot / Separator.
2675
+ */
2676
+ declare function InputOTPSimple({ length, groups, separator, slotPlaceholder, className, classNames, 'aria-label': ariaLabel, ...props }: InputOTPProps): React.JSX.Element;
2677
+ export declare const InputOTP: typeof InputOTPSimple & {
2678
+ Root: typeof InputOTPRoot;
2679
+ Group: typeof InputOTPGroup;
2680
+ Slot: typeof InputOTPSlot;
2681
+ Separator: typeof InputOTPSeparator;
2682
+ };
2683
+ export declare const nativeSelectStyles: import("tailwind-variants").TVReturnType<{
2684
+ size: {
2685
+ sm: {
2686
+ select: string;
2687
+ icon: string;
2688
+ };
2689
+ md: {
2690
+ select: string;
2691
+ };
2692
+ lg: {
2693
+ select: string;
2694
+ icon: string;
2695
+ };
2696
+ };
2697
+ }, {
2698
+ root: string;
2699
+ select: string[];
2700
+ icon: string;
2701
+ }, undefined, undefined, undefined, undefined>;
2702
+ interface NativeSelectOption {
2703
+ value: string;
2704
+ label: React.ReactNode;
2705
+ disabled?: boolean;
2706
+ }
2707
+ interface NativeSelectProps extends Omit<React.ComponentPropsWithRef<'select'>, 'size'>, VariantProps<typeof nativeSelectStyles> {
2708
+ /** Options to render; you can pass `<option>` children instead. */
2709
+ options?: NativeSelectOption[];
2710
+ /** A first, empty option shown while nothing is picked. */
2711
+ placeholder?: string;
2712
+ classNames?: {
2713
+ root?: string;
2714
+ select?: string;
2715
+ icon?: string;
2716
+ };
2717
+ }
2718
+ /**
2719
+ * The browser's own `<select>`, styled like Input with a chevron. Best on phones and in long forms.
2720
+ * <NativeSelect options={[{ value: 'g1', label: 'Gothic 1' }]} />
2721
+ * or with children: `<NativeSelect><NativeSelect.Option value="g1">Gothic 1</NativeSelect.Option></NativeSelect>`.
2722
+ */
2723
+ declare function NativeSelectRoot({ options, placeholder, size, className, classNames, children, ...props }: NativeSelectProps): React.JSX.Element;
2724
+ declare const NativeSelectOption: (props: React.ComponentPropsWithRef<'option'>) => React.JSX.Element;
2725
+ declare const NativeSelectOptGroup: (props: React.ComponentPropsWithRef<'optgroup'>) => React.JSX.Element;
2726
+ export declare const NativeSelect: typeof NativeSelectRoot & {
2727
+ Option: typeof NativeSelectOption;
2728
+ OptGroup: typeof NativeSelectOptGroup;
2729
+ };
2730
+ type Props$1<C extends React.ElementType> = Omit<React.ComponentPropsWithRef<C>, 'className'> & {
2731
+ className?: string;
2732
+ };
2733
+ declare function MenubarRoot({ className, ...props }: Props$1<typeof Menubar$1>): React.JSX.Element;
2734
+ /** A top-level button of the bar; opens its menu. */
2735
+ declare function MenubarTrigger({ className, ...props }: Props$1<typeof Menu.Trigger>): React.JSX.Element;
2736
+ interface MenubarMenuData {
2737
+ label: React.ReactNode;
2738
+ items: DropdownMenuEntry[];
2739
+ disabled?: boolean;
2740
+ }
2741
+ interface MenubarProps extends Omit<Props$1<typeof Menubar$1>, 'children'> {
2742
+ /** The menus, left to right. Items use the Dropdown Menu entry format. */
2743
+ menus: MenubarMenuData[];
2744
+ classNames?: {
2745
+ root?: string;
2746
+ trigger?: string;
2747
+ popup?: string;
2748
+ };
2749
+ }
2750
+ /**
2751
+ * A row of menus, like the one at the top of a desktop app. Arrow keys move between menus.
2752
+ * <Menubar menus={[{ label: 'File', items: [{ label: 'Save', shortcut: 'Ctrl S' }] }]} />
2753
+ * Compound: Menubar.Root / Menu / Trigger / Content / Item / CheckboxItem / RadioGroup / RadioItem /
2754
+ * Group / GroupLabel / Separator / Shortcut / Sub / SubTrigger / SubContent (the Dropdown Menu parts).
2755
+ */
2756
+ declare function MenubarSimple({ menus, className, classNames, ...props }: MenubarProps): React.JSX.Element;
2757
+ export declare const Menubar: typeof MenubarSimple & {
2758
+ Root: typeof MenubarRoot;
2759
+ Menu: typeof Menu.Root;
2760
+ Trigger: typeof MenubarTrigger;
2761
+ Content: ({ side, align, sideOffset, className, classNames, ...props }: DropdownMenuContentProps) => React.JSX.Element;
2762
+ Item: ({ danger, className, ...props }: DropdownMenuItemProps) => React.JSX.Element;
2763
+ CheckboxItem: ({ className, children, ...props }: React.ComponentPropsWithRef<typeof Menu.CheckboxItem>) => React.JSX.Element;
2764
+ RadioGroup: React.NamedExoticComponent<Omit<import("@base-ui/react").MenuRadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
2765
+ RadioItem: ({ className, children, ...props }: React.ComponentPropsWithRef<typeof Menu.RadioItem>) => React.JSX.Element;
2766
+ Group: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").MenuGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
2767
+ GroupLabel: ({ className, ...props }: React.ComponentPropsWithRef<typeof Menu.GroupLabel>) => React.JSX.Element;
2768
+ Separator: ({ className, ...props }: React.ComponentPropsWithRef<typeof Menu.Separator>) => React.JSX.Element;
2769
+ Shortcut: ({ className, ...props }: React.ComponentPropsWithRef<'kbd'>) => React.JSX.Element;
2770
+ Sub: typeof Menu.SubmenuRoot;
2771
+ SubTrigger: ({ className, children, ...props }: React.ComponentPropsWithRef<typeof Menu.SubmenuTrigger>) => React.JSX.Element;
2772
+ SubContent: (props: DropdownMenuContentProps) => React.JSX.Element;
2773
+ };
2774
+ export declare const menubarStyles: import("tailwind-variants").TVReturnType<{}, {
2775
+ root: string;
2776
+ trigger: string[];
2777
+ }, undefined, undefined, undefined, undefined>;
2778
+ type Props<C extends React.ElementType> = Omit<React.ComponentPropsWithRef<C>, 'className'> & {
2779
+ className?: string;
2780
+ };
2781
+ declare function NavigationMenuRoot({ className, ...props }: Props<typeof NavigationMenu$1.Root>): React.JSX.Element;
2782
+ /** The row of triggers and links, with a highlight that glides to the hovered or open item. */
2783
+ declare function NavigationMenuList({ className, classNames, children, ...props }: Props<typeof NavigationMenu$1.List> & {
2784
+ classNames?: {
2785
+ indicator?: string;
2786
+ };
2787
+ }): React.JSX.Element;
2788
+ declare function NavigationMenuItem(props: React.ComponentPropsWithRef<typeof NavigationMenu$1.Item>): React.JSX.Element;
2789
+ /** Opens the item's panel. A chevron is added after the label. */
2790
+ declare function NavigationMenuTrigger({ className, children, ...props }: Props<typeof NavigationMenu$1.Trigger>): React.JSX.Element;
2791
+ /** The panel of an item. It slides in from the side the pointer came from. */
2792
+ declare function NavigationMenuContent({ className, ...props }: Props<typeof NavigationMenu$1.Content>): React.JSX.Element;
2793
+ /** A link. Top-level links look like triggers; pass `render` to use your router's link. */
2794
+ declare function NavigationMenuLink({ className, ...props }: Props<typeof NavigationMenu$1.Link>): React.JSX.Element;
2795
+ interface NavigationMenuLinkCardProps extends Omit<Props<typeof NavigationMenu$1.Link>, 'title'> {
2796
+ title: React.ReactNode;
2797
+ description?: React.ReactNode;
2798
+ icon?: React.ReactNode;
2799
+ }
2800
+ /** A link inside a panel: icon, title and a line of description. */
2801
+ declare function NavigationMenuLinkCard({ title, description, icon, className, ...props }: NavigationMenuLinkCardProps): React.JSX.Element;
2802
+ /** The floating box the panels render in; it resizes smoothly between panels. */
2803
+ declare function NavigationMenuViewport({ className, classNames, sideOffset, align }: {
2804
+ className?: string;
2805
+ classNames?: {
2806
+ positioner?: string;
2807
+ popup?: string;
2808
+ viewport?: string;
2809
+ };
2810
+ sideOffset?: number;
2811
+ align?: 'start' | 'center' | 'end';
2812
+ }): React.JSX.Element;
2813
+ interface NavigationMenuLinkData {
2814
+ title: React.ReactNode;
2815
+ href: string;
2816
+ description?: React.ReactNode;
2817
+ icon?: React.ReactNode;
2818
+ }
2819
+ type NavigationMenuItemData = {
2820
+ label: React.ReactNode;
2821
+ href: string;
2822
+ active?: boolean;
2823
+ } | {
2824
+ label: React.ReactNode;
2825
+ links: NavigationMenuLinkData[];
2826
+ columns?: 1 | 2;
2827
+ } | {
2828
+ label: React.ReactNode;
2829
+ content: React.ReactNode;
2830
+ };
2831
+ interface NavigationMenuProps extends Omit<Props<typeof NavigationMenu$1.Root>, 'children'> {
2832
+ items: NavigationMenuItemData[];
2833
+ classNames?: {
2834
+ list?: string;
2835
+ trigger?: string;
2836
+ content?: string;
2837
+ popup?: string;
2838
+ };
2839
+ }
2840
+ /**
2841
+ * Site navigation with panels, like the top bar of a docs site.
2842
+ * <NavigationMenu items={[{ label: 'Docs', links: [{ title: 'Install', href: '/docs/install' }] }, { label: 'Blog', href: '/blog' }]} />
2843
+ * Compound: NavigationMenu.Root / List / Item / Trigger / Content / Link / LinkCard / Viewport.
2844
+ */
2845
+ declare function NavigationMenuSimple({ items, className, classNames, ...props }: NavigationMenuProps): React.JSX.Element;
2846
+ export declare const NavigationMenu: typeof NavigationMenuSimple & {
2847
+ Root: typeof NavigationMenuRoot;
2848
+ List: typeof NavigationMenuList;
2849
+ Item: typeof NavigationMenuItem;
2850
+ Trigger: typeof NavigationMenuTrigger;
2851
+ Content: typeof NavigationMenuContent;
2852
+ Link: typeof NavigationMenuLink;
2853
+ LinkCard: typeof NavigationMenuLinkCard;
2854
+ Viewport: typeof NavigationMenuViewport;
2855
+ };
2856
+ export declare const navigationMenuStyles: import("tailwind-variants").TVReturnType<{}, {
2857
+ root: string;
2858
+ list: string;
2859
+ indicator: string[];
2860
+ trigger: string[];
2861
+ icon: string;
2862
+ content: string[];
2863
+ positioner: string[];
2864
+ popup: string[];
2865
+ viewport: string;
2866
+ cardList: string;
2867
+ card: string[];
2868
+ cardIcon: string;
2869
+ cardTitle: string;
2870
+ cardDescription: string;
2871
+ }, undefined, undefined, undefined, undefined>;
2872
+ type CarouselApi = NonNullable<UseEmblaCarouselType[1]>;
2873
+ type CarouselOptions = NonNullable<Parameters<typeof useEmblaCarousel>[0]>;
2874
+ type CarouselPlugins = Parameters<typeof useEmblaCarousel>[1];
2875
+ type Orientation$1 = 'horizontal' | 'vertical';
2876
+ interface CarouselContextValue {
2877
+ viewportRef: UseEmblaCarouselType[0];
2878
+ api: CarouselApi | undefined;
2879
+ orientation: Orientation$1;
2880
+ selected: number;
2881
+ count: number;
2882
+ canPrev: boolean;
2883
+ canNext: boolean;
2884
+ prev: () => void;
2885
+ next: () => void;
2886
+ goTo: (index: number) => void;
2887
+ }
2888
+ /** The carousel state inside `Carousel.Root`: `{ api, selected, count, prev, next, goTo, … }`. */
2889
+ export declare function useCarousel(): CarouselContextValue;
2890
+ interface CarouselRootProps extends React.ComponentPropsWithRef<'div'> {
2891
+ /** Embla options (`align`, `slidesToScroll`, `dragFree` …). `loop` and `orientation` have their own props. */
2892
+ opts?: Omit<CarouselOptions, 'loop' | 'axis'>;
2893
+ plugins?: CarouselPlugins;
2894
+ /** Wrap from the last slide to the first. */
2895
+ loop?: boolean;
2896
+ /** @default 'horizontal' */
2897
+ orientation?: Orientation$1;
2898
+ /** Receives the Embla API once it is ready. */
2899
+ setApi?: (api: CarouselApi) => void;
2900
+ /** Called when the current slide changes. */
2901
+ onSelectedChange?: (index: number) => void;
2902
+ }
2903
+ /** Holds the state; arrow keys on any focused part move between slides. */
2904
+ declare function CarouselRoot({ opts, plugins, loop, orientation, setApi, onSelectedChange, className, onKeyDownCapture, children, ...props }: CarouselRootProps): React.JSX.Element;
2905
+ interface CarouselContentProps extends React.ComponentPropsWithRef<'div'> {
2906
+ classNames?: {
2907
+ viewport?: string;
2908
+ };
2909
+ }
2910
+ /** The clipped viewport and the moving track. Put `Carousel.Item`s inside. */
2911
+ declare function CarouselContent({ className, classNames, ...props }: CarouselContentProps): React.JSX.Element;
2912
+ interface CarouselItemProps extends React.ComponentPropsWithRef<'div'> {
2913
+ /** Wrap the content in a squircle card. @default true */
2914
+ card?: boolean;
2915
+ classNames?: {
2916
+ card?: string;
2917
+ };
2918
+ }
2919
+ /**
2920
+ * One slide. Its width is `basis-full`; pass e.g. `className="md:basis-1/2"` to show several at once.
2921
+ * The slide's label ("2 of 5") is added for screen readers.
2922
+ */
2923
+ declare function CarouselItem({ card, className, classNames, children, ...props }: CarouselItemProps): React.JSX.Element;
2924
+ declare function CarouselPrevious({ className, children, ...props }: ButtonProps): React.JSX.Element;
2925
+ declare function CarouselNext({ className, children, ...props }: ButtonProps): React.JSX.Element;
2926
+ interface CarouselDotsProps extends React.ComponentPropsWithRef<'div'> {
2927
+ classNames?: {
2928
+ dot?: string;
2929
+ current?: string;
2930
+ };
2931
+ }
2932
+ /** One dot per snap point; the current one is an accent pill that glides. */
2933
+ declare function CarouselDots({ className, classNames, ...props }: CarouselDotsProps): React.JSX.Element;
2934
+ /** The default control row: previous, dots, next. */
2935
+ declare function CarouselControls({ className, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
2936
+ interface CarouselProps extends Omit<CarouselRootProps, 'children'> {
2937
+ /** One node per slide. */
2938
+ slides: React.ReactNode[];
2939
+ /** Show the previous/next buttons. @default true */
2940
+ arrows?: boolean;
2941
+ /** Show the dots. @default true */
2942
+ dots?: boolean;
2943
+ /** Wrap each slide in a card. @default true */
2944
+ card?: boolean;
2945
+ classNames?: {
2946
+ viewport?: string;
2947
+ content?: string;
2948
+ item?: string;
2949
+ card?: string;
2950
+ controls?: string;
2951
+ };
2952
+ }
2953
+ /**
2954
+ * Slides that scroll horizontally, with arrows, dots, swipe and keyboard.
2955
+ * <Carousel loop slides={[<Slide1 />, <Slide2 />]} />
2956
+ * or compound: Carousel.Root / Content / Item / Previous / Next / Dots / Controls, plus `useCarousel()`.
2957
+ */
2958
+ declare function CarouselSimple({ slides, arrows, dots, card, classNames, ...props }: CarouselProps): React.JSX.Element;
2959
+ export declare const Carousel: typeof CarouselSimple & {
2960
+ Root: typeof CarouselRoot;
2961
+ Content: typeof CarouselContent;
2962
+ Item: typeof CarouselItem;
2963
+ Previous: typeof CarouselPrevious;
2964
+ Next: typeof CarouselNext;
2965
+ Dots: typeof CarouselDots;
2966
+ Controls: typeof CarouselControls;
2967
+ };
2968
+ /**
2969
+ * Slides are squircle cards in a clipped viewport; the controls sit in a row underneath (never over
2970
+ * the slides and never outside the frame, so nothing overflows on a phone). The current dot is one
2971
+ * accent pill that glides between dots (transform only).
2972
+ */
2973
+ export declare const carouselStyles: import("tailwind-variants").TVReturnType<{
2974
+ orientation: {
2975
+ horizontal: {
2976
+ container: string;
2977
+ item: string;
2978
+ };
2979
+ vertical: {
2980
+ container: string;
2981
+ item: string;
2982
+ };
2983
+ };
2984
+ }, {
2985
+ root: string;
2986
+ viewport: string;
2987
+ container: string;
2988
+ item: string;
2989
+ card: string;
2990
+ controls: string;
2991
+ dots: string;
2992
+ dot: string[];
2993
+ dotCurrent: string;
2994
+ }, undefined, undefined, undefined, undefined>;
2995
+ /**
2996
+ * The chart frame. TanStack Charts paints axes and labels with `currentColor`, so the frame sets the
2997
+ * muted ink; series colours and the tooltip surface are CSS variables set from our tokens (see
2998
+ * `chartVariables` in chart.tsx). The tooltip gets the popover look; its corners use `corner-shape`
2999
+ * natively where supported, without the polyfill (it moves on every pointer move).
3000
+ */
3001
+ export declare const chartStyles: import("tailwind-variants").TVReturnType<{
3002
+ legendPosition: {
3003
+ top: {
3004
+ legend: string;
3005
+ };
3006
+ bottom: {
3007
+ legend: string;
3008
+ };
3009
+ };
3010
+ }, {
3011
+ root: string;
3012
+ chart: string[];
3013
+ legend: string;
3014
+ legendItem: string;
3015
+ legendButton: string[];
3016
+ swatch: string;
3017
+ tooltip: string[];
3018
+ tooltipTitle: string;
3019
+ tooltipRow: string;
3020
+ tooltipSwatch: string;
3021
+ tooltipLabel: string;
3022
+ tooltipValue: string;
3023
+ tooltipShare: string;
3024
+ tooltipTotal: string;
3025
+ loading: string;
3026
+ loadingBar: string;
3027
+ empty: string;
3028
+ }, undefined, undefined, undefined, undefined>;
3029
+ /** Straight lines between points. */
3030
+ export declare const curveLinear: ChartCurve;
3031
+ /** A smooth monotone curve: no overshoot above peaks or below dips. */
3032
+ export declare const curveSmooth: ChartCurve;
3033
+ declare const chartCurves: {
3034
+ readonly linear: ChartCurve;
3035
+ readonly smooth: ChartCurve;
3036
+ };
3037
+ type ChartCurveName = keyof typeof chartCurves;
3038
+ /** How numbers are written: a preset, `Intl.NumberFormat` options or your own function. */
3039
+ type ChartValueFormat = 'number' | 'compact' | 'percent' | Intl.NumberFormatOptions | ((value: number) => string);
3040
+ /** How x values are written: a date preset, `Intl.DateTimeFormat` options or your own function. */
3041
+ type ChartXFormat<TValue = unknown> = 'day' | 'week' | 'month' | 'year' | Intl.DateTimeFormatOptions | ((value: TValue) => string);
3042
+ /**
3043
+ * The series palette: the accent first, then calmer colours derived from it (hue turns in OKLCH
3044
+ * with a little less chroma, so they sit next to the accent without shouting), then the muted ink.
3045
+ * Every step reads an optional `--cui-chart-N` token first, so an app can set its own palette.
3046
+ */
3047
+ export declare const chartPalette: readonly ['var(--cui-chart-1, var(--cui-accent))', 'var(--cui-chart-2, oklch(from var(--cui-accent) l calc(c * 0.8) calc(h - 115)))', 'var(--cui-chart-3, oklch(from var(--cui-accent) l calc(c * 0.8) calc(h + 70)))', 'var(--cui-chart-4, oklch(from var(--cui-accent) l calc(c * 0.8) calc(h + 150)))', 'var(--cui-chart-5, oklch(from var(--cui-accent) l calc(c * 0.8) calc(h - 50)))', 'var(--cui-chart-6, var(--cui-muted))'];
3048
+ /** The CSS variables TanStack Charts reads: palette and tooltip surface, all from our tokens. */
3049
+ export declare const chartVariables: React.CSSProperties;
3050
+ /** Colour of the series at `index` (cycles through the palette). */
3051
+ export declare const chartColor: (index: number) => string;
3052
+ interface ChartSeries {
3053
+ /** The field of each data row that holds this series' values. */
3054
+ key: string;
3055
+ /** Name in the legend and tooltip. @default key */
3056
+ label?: string;
3057
+ /** Any CSS colour; defaults to the palette. */
3058
+ color?: string;
3059
+ }
3060
+ interface ChartReferenceLine {
3061
+ /** Where the line sits on the y axis. */
3062
+ value: number;
3063
+ /** Text drawn above the line, at the left. */
3064
+ label?: string;
3065
+ /** Any CSS colour. @default the muted ink */
3066
+ color?: string;
3067
+ }
3068
+ interface ChartLegendItem {
3069
+ label: string;
3070
+ color: string;
3071
+ /** Series key, passed to `onToggle`. @default label */
3072
+ key?: string;
3073
+ /** Drawn as switched off (hollow swatch, dimmed). */
3074
+ hidden?: boolean;
3075
+ }
3076
+ interface ChartLegendProps extends Omit<React.ComponentPropsWithRef<'ul'>, 'onToggle'> {
3077
+ items: ChartLegendItem[];
3078
+ position?: 'top' | 'bottom';
3079
+ /** Makes each item a toggle button; called with the item's key. */
3080
+ onToggle?: (key: string) => void;
3081
+ classNames?: {
3082
+ item?: string;
3083
+ swatch?: string;
3084
+ };
3085
+ }
3086
+ /** Swatches with series names, as HTML (readable, wraps on a phone). With `onToggle`, each is a toggle. */
3087
+ declare function ChartLegend({ items, position, onToggle, className, classNames, ...props }: ChartLegendProps): React.JSX.Element;
3088
+ type ChartRenderer = React.ComponentProps<typeof RendererChart>['renderer'];
3089
+ type ChartRootProps = ChartProps$1 & Omit<React.ComponentPropsWithRef<'div'>, keyof ChartProps$1> & {
3090
+ /** A TanStack renderer, e.g. `motion()` from `@tanstack/charts/motion` for entrance animation. */
3091
+ renderer?: ChartRenderer;
3092
+ classNames?: {
3093
+ chart?: string;
3094
+ };
3095
+ };
3096
+ /**
3097
+ * The frame for your own TanStack Charts definition: our palette, ink and tooltip surface around the
3098
+ * `Chart` of `@tanstack/react-charts`. Use `chartColor(i)` in marks for series colours.
3099
+ */
3100
+ declare function ChartRoot({ definition, ariaLabel, ariaDescription, height, aspectRatio, initialWidth, onFocusChange, onSelect, renderTooltipBody, renderer, className, classNames, style, children, ...props }: ChartRootProps): React.JSX.Element;
3101
+ interface ChartProps<TRow extends Record<string, unknown>> extends Omit<React.ComponentPropsWithRef<'div'>, 'children' | 'onSelect'>, VariantProps<typeof chartStyles> {
3102
+ /** `line`, `area` or `bar`. @default 'line' */
3103
+ type?: 'line' | 'area' | 'bar';
3104
+ /** One row per category (week, build…), with one field per series. */
3105
+ data: readonly TRow[];
3106
+ /** The field with the category shown on the x axis (strings, numbers or dates). */
3107
+ x: keyof TRow & string;
3108
+ /** The series to draw; each reads `row[key]`. */
3109
+ series: ChartSeries[];
3110
+ /** What the chart shows, for screen readers. */
3111
+ ariaLabel: string;
3112
+ ariaDescription?: string;
3113
+ /** Height in pixels; the width follows the container. @default 280 */
3114
+ height?: number;
3115
+ /** `smooth` draws a monotone curve (no overshoot), `linear` straight segments. @default 'smooth' */
3116
+ curve?: ChartCurveName;
3117
+ /** Stack areas or bars; `percent` stacks shares of the total (0–100 %). Bars are grouped otherwise. */
3118
+ stacked?: boolean | 'percent';
3119
+ /** Fill under lines with the series colour fading to transparent. @default true for `area` */
3120
+ gradient?: boolean;
3121
+ /** Dots on line points. */
3122
+ points?: boolean;
3123
+ /** Show the legend; its items toggle series. @default true with more than one series */
3124
+ legend?: boolean;
3125
+ /** Series keys hidden (controlled). */
3126
+ hiddenSeries?: string[];
3127
+ /** Series keys hidden at first (uncontrolled). */
3128
+ defaultHiddenSeries?: string[];
3129
+ onHiddenSeriesChange?: (hidden: string[]) => void;
3130
+ /** Horizontal grid lines. @default true */
3131
+ grid?: boolean;
3132
+ /** Crosshair and tooltip listing every series at the hovered x. @default true */
3133
+ tooltip?: boolean;
3134
+ /** Formats values on the y axis and in the tooltip. @default 'number' */
3135
+ valueFormat?: ChartValueFormat;
3136
+ /** Formats x values on the axis and in the tooltip heading (dates: `day`, `week`, `month`, `year`). */
3137
+ xFormat?: ChartXFormat<TRow[keyof TRow & string]>;
3138
+ /** Locale for number and date formatting. @default 'en-US' */
3139
+ locale?: string;
3140
+ /** Dashed horizontal lines: goals, limits, averages. */
3141
+ referenceLines?: ChartReferenceLine[];
3142
+ /** Shows a skeleton instead of the chart. */
3143
+ loading?: boolean;
3144
+ /** What the empty state says when `data` is empty. */
3145
+ empty?: {
3146
+ title?: React.ReactNode;
3147
+ description?: React.ReactNode;
3148
+ action?: React.ReactNode;
3149
+ };
3150
+ /** Lines grow from the baseline and bars rise on mount; off with reduced motion. @default true */
3151
+ animate?: boolean;
3152
+ classNames?: {
3153
+ chart?: string;
3154
+ legend?: string;
3155
+ tooltip?: string;
3156
+ };
3157
+ }
3158
+ /**
3159
+ * A line, area or bar chart (TanStack Charts) in our colours: gradient fills, smooth curves, a
3160
+ * crosshair tooltip with every series, a legend that toggles series, stacking, reference lines,
3161
+ * loading and empty states, and an entrance animation.
3162
+ * <Chart type="area" data={weeks} x="week" series={[{ key: 'votes', label: 'Votes' }]} ariaLabel="Votes per week" />
3163
+ * For anything else, build a TanStack definition and render it in `Chart.Root`.
3164
+ */
3165
+ declare function ChartSimple<TRow extends Record<string, unknown>>({ type, data, x, series, ariaLabel, ariaDescription, height, curve, stacked, gradient, points, legend, legendPosition, hiddenSeries, defaultHiddenSeries, onHiddenSeriesChange, grid, tooltip: showTooltip, valueFormat, xFormat, locale, referenceLines, loading, empty, animate, className, classNames, style, ...props }: ChartProps<TRow>): React.JSX.Element;
3166
+ export declare const Chart: typeof ChartSimple & {
3167
+ Root: typeof ChartRoot;
3168
+ Legend: typeof ChartLegend;
3169
+ };
3170
+ interface CodeThemes {
3171
+ light: string;
3172
+ dark: string;
3173
+ }
3174
+ interface HighlightOptions {
3175
+ lang: string;
3176
+ themes?: CodeThemes;
3177
+ /** 1-based line numbers to mark. */
3178
+ highlightLines?: number[];
3179
+ }
3180
+ /**
3181
+ * Highlights `code` with Shiki and returns HTML: `<pre><code><span class="line">…`. Tokens are painted
3182
+ * with `light-dark()`, so they follow the page's `color-scheme`. Shiki, the language and the themes
3183
+ * load on first use and results are cached. Unknown languages fall back to plain text.
3184
+ */
3185
+ export declare function highlightCode(code: string, { lang, themes, highlightLines }: HighlightOptions): Promise<string>;
3186
+ interface CodeBlockCopyProps extends Omit<ButtonProps, 'value'> {
3187
+ /** The text to copy. */
3188
+ value: string;
3189
+ }
3190
+ /** A button that copies `value` and shows a check for a moment. */
3191
+ declare function CodeBlockCopy({ value, className, onClick, ...props }: CodeBlockCopyProps): React.JSX.Element;
3192
+ interface CodeBlockProps extends Omit<React.ComponentPropsWithRef<'div'>, 'title'> {
3193
+ code: string;
3194
+ /** A Shiki language id. @default 'tsx' */
3195
+ lang?: string;
3196
+ /** A file name or title shown in a bar above the code. */
3197
+ title?: React.ReactNode;
3198
+ /** The icon before the title. @default <FileCode /> */
3199
+ icon?: React.ReactNode;
3200
+ lineNumbers?: boolean;
3201
+ /** 1-based line numbers to mark with the accent. */
3202
+ highlightLines?: number[];
3203
+ /** Fold code longer than this many lines behind a "View code" button. */
3204
+ collapsedLines?: number;
3205
+ /** Label of the unfold button. @default 'View code' */
3206
+ expandLabel?: string;
3207
+ /** Show the copy button. @default true */
3208
+ copyable?: boolean;
3209
+ /** Shiki themes for light and dark. @default { light: 'github-light', dark: 'github-dark' } */
3210
+ themes?: CodeThemes;
3211
+ classNames?: {
3212
+ header?: string;
3213
+ title?: string;
3214
+ pre?: string;
3215
+ copy?: string;
3216
+ fold?: string;
3217
+ };
3218
+ }
3219
+ /**
3220
+ * Highlighted code with a copy button, an optional file-name bar, line numbers, marked lines and
3221
+ * folding for long snippets.
3222
+ * <CodeBlock code={source} lang="ts" title="trainer.config.ts" lineNumbers highlightLines={[3]} />
3223
+ */
3224
+ declare function CodeBlockRoot({ code, lang, title, icon, lineNumbers, highlightLines, collapsedLines, expandLabel, copyable, themes, className, classNames, ...props }: CodeBlockProps): React.JSX.Element;
3225
+ export declare const CodeBlock: typeof CodeBlockRoot & {
3226
+ Copy: typeof CodeBlockCopy;
3227
+ };
3228
+ /**
3229
+ * Highlighted code in a squircle frame. Shiki paints each token with `light-dark(light, dark)`, so the
3230
+ * colours follow `color-scheme`, which the theme sets on `.dark`: no `dark:` variant, no second pass.
3231
+ * Lines are blocks in a grid (one row each) so highlights span the full scroll width; line numbers are
3232
+ * a CSS counter. The line height is fixed (1.5rem) because the copy button is centred on line one.
3233
+ */
3234
+ export declare const codeBlockStyles: import("tailwind-variants").TVReturnType<{}, {
3235
+ root: string;
3236
+ header: string;
3237
+ title: string;
3238
+ body: string;
3239
+ pre: string[];
3240
+ lineNumbers: string[];
3241
+ copy: string;
3242
+ fold: string;
3243
+ foldOpen: string;
3244
+ foldButton: string;
3245
+ }, undefined, undefined, undefined, undefined>;
3246
+ /** What a column can tell the data table through `meta`. */
3247
+ interface DataTableColumnMeta {
3248
+ /**
3249
+ * A fixed width (px number or any CSS length). The table uses a fixed layout, so widths never jump
3250
+ * when sorting, paging or selecting; columns without a width share the space that's left.
3251
+ * Give one to short columns (status, numbers, dates).
3252
+ */
3253
+ width?: number | string;
3254
+ }
3255
+ /**
3256
+ * The TanStack Table v9 features a data table uses: sorting, column + global filtering, column
3257
+ * visibility, row selection and pagination (client side). Pass it to `createColumnHelper` so column
3258
+ * definitions are typed against the same features.
3259
+ */
3260
+ export declare const dataTableFeatures: {
3261
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
3262
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3263
+ sortFns: {
3264
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
3265
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
3266
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
3267
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
3268
+ };
3269
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
3270
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
3271
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3272
+ filterFns: {
3273
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3274
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3275
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3276
+ };
3277
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
3278
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
3279
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
3280
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3281
+ columnMeta: DataTableColumnMeta;
3282
+ };
3283
+ type DataTableFeatures = typeof dataTableFeatures;
3284
+ type DataTableColumn<TData extends RowData> = ColumnDef<DataTableFeatures, TData, any>;
3285
+ type DataTableInstance<TData extends RowData> = ReactTable<DataTableFeatures, TData>;
3286
+ /** A column helper typed for data tables: `const col = createDataTableColumns<Post>()`. */
3287
+ export declare function createDataTableColumns<TData extends RowData>(): import("@tanstack/react-table").ColumnHelper<{
3288
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
3289
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3290
+ sortFns: {
3291
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
3292
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
3293
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
3294
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
3295
+ };
3296
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
3297
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
3298
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3299
+ filterFns: {
3300
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3301
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3302
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3303
+ };
3304
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
3305
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
3306
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
3307
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3308
+ columnMeta: DataTableColumnMeta;
3309
+ }, TData>;
3310
+ type Options$1<TData extends RowData> = Omit<TableOptions<DataTableFeatures, TData>, 'features' | 'columns'>;
3311
+ interface UseDataTableOptions<TData extends RowData> extends Options$1<TData> {
3312
+ columns: DataTableColumn<TData>[];
3313
+ /** Add a checkbox column to select rows. */
3314
+ selectable?: boolean;
3315
+ /** Rows per page. @default 10 */
3316
+ pageSize?: number;
3317
+ }
3318
+ /**
3319
+ * Creates the table instance for the compound form. Keep `columns` and `data` stable (module scope,
3320
+ * state or `useMemo`), otherwise the row models rebuild on every render.
3321
+ */
3322
+ export declare function useDataTable<TData extends RowData>({ columns, selectable, pageSize, initialState, ...options }: UseDataTableOptions<TData>): ReactTable<{
3323
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
3324
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3325
+ sortFns: {
3326
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
3327
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
3328
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
3329
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
3330
+ };
3331
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
3332
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
3333
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3334
+ filterFns: {
3335
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3336
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3337
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
3338
+ };
3339
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
3340
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
3341
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
3342
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
3343
+ columnMeta: DataTableColumnMeta;
3344
+ }, TData, import("@tanstack/react-table").TableState_ColumnFiltering & import("@tanstack/react-table").TableState_ColumnVisibility & import("@tanstack/react-table").TableState_GlobalFiltering & import("@tanstack/react-table").TableState_RowPagination & import("@tanstack/react-table").TableState_RowSelection & import("@tanstack/react-table").TableState_RowSorting>;
3345
+ /** The table instance inside `DataTable.Root`. */
3346
+ export declare function useDataTableContext<TData extends RowData = RowData>(): DataTableInstance<TData>;
3347
+ interface DataTableRootProps<TData extends RowData> extends React.ComponentPropsWithRef<'div'> {
3348
+ table: DataTableInstance<TData>;
3349
+ }
3350
+ declare function DataTableRoot<TData extends RowData>({ table, className, ...props }: DataTableRootProps<TData>): React.JSX.Element;
3351
+ declare const DataTableToolbar: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3352
+ interface DataTableSearchProps {
3353
+ placeholder?: string;
3354
+ /** Filter one column instead of all of them. */
3355
+ column?: string;
3356
+ className?: string;
3357
+ 'aria-label'?: string;
3358
+ }
3359
+ /** A search field that filters the rows (all columns, or one with `column`). */
3360
+ declare function DataTableSearch({ placeholder, column, className, 'aria-label': label }: DataTableSearchProps): React.JSX.Element;
3361
+ /** A "View" menu with one checkbox per column that can be hidden. */
3362
+ declare function DataTableColumnToggle({ label, className }: {
3363
+ label?: React.ReactNode;
3364
+ className?: string;
3365
+ }): React.JSX.Element;
3366
+ interface DataTableContentProps extends Omit<TableRootProps, 'children' | 'layout'> {
3367
+ /** Shown in one row when no rows match. @default 'No results.' */
3368
+ empty?: React.ReactNode;
3369
+ /** Called when a row is clicked (open a post, a tester). */
3370
+ onRowClick?: (row: Row<DataTableFeatures, RowData>) => void;
3371
+ }
3372
+ /** The table: sortable headers, selectable rows, an empty row when nothing matches. */
3373
+ declare function DataTableContent({ empty, onRowClick, hover, style, ...props }: DataTableContentProps): React.JSX.Element;
3374
+ /** "2 of 12 selected" when rows can be selected, otherwise the number of rows. */
3375
+ declare function DataTableCount({ className }: {
3376
+ className?: string;
3377
+ }): React.JSX.Element;
3378
+ /** Our Pagination bound to the table's pages. Hidden when everything fits on one page. */
3379
+ declare function DataTablePagination({ className }: {
3380
+ className?: string;
3381
+ }): React.JSX.Element | null;
3382
+ declare const DataTableFooter: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3383
+ interface DataTableProps<TData extends RowData> extends UseDataTableOptions<TData> {
3384
+ /** Show the search field; a string sets its placeholder. @default true */
3385
+ search?: boolean | string;
3386
+ /** Filter only this column with the search field. */
3387
+ searchColumn?: string;
3388
+ /** Show the column visibility menu. @default true */
3389
+ columnToggle?: boolean;
3390
+ /** Extra controls in the toolbar (filters, a "New" button). */
3391
+ toolbar?: React.ReactNode;
3392
+ empty?: React.ReactNode;
3393
+ onRowClick?: (row: Row<DataTableFeatures, TData>) => void;
3394
+ /** Tighter rows. */
3395
+ dense?: boolean;
3396
+ className?: string;
3397
+ }
3398
+ /**
3399
+ * Sorting, filtering, row selection, column visibility and pagination on our Table.
3400
+ * <DataTable columns={columns} data={posts} getRowId={(p) => p.id} selectable />
3401
+ * or compound: `useDataTable()` + DataTable.Root / Toolbar / Search / ColumnToggle / Content / Footer /
3402
+ * Count / Pagination.
3403
+ */
3404
+ declare function DataTableSimple<TData extends RowData>({ search, searchColumn, columnToggle, toolbar, empty, onRowClick, dense, className, ...options }: DataTableProps<TData>): React.JSX.Element;
3405
+ export declare const DataTable: typeof DataTableSimple & {
3406
+ Root: typeof DataTableRoot;
3407
+ Toolbar: typeof DataTableToolbar;
3408
+ Search: typeof DataTableSearch;
3409
+ ColumnToggle: typeof DataTableColumnToggle;
3410
+ Content: typeof DataTableContent;
3411
+ Footer: typeof DataTableFooter;
3412
+ Count: typeof DataTableCount;
3413
+ Pagination: typeof DataTablePagination;
3414
+ };
3415
+ /** The data table is our Table plus a toolbar (search, column menu) and a footer (selection, pages). */
3416
+ export declare const dataTableStyles: import("tailwind-variants").TVReturnType<{}, {
3417
+ root: string;
3418
+ toolbar: string;
3419
+ search: string;
3420
+ sortButton: string[];
3421
+ sortIcon: string;
3422
+ selectCell: string;
3423
+ selectedRow: string;
3424
+ empty: string;
3425
+ footer: string;
3426
+ count: string;
3427
+ }, undefined, undefined, undefined, undefined>;
3428
+ type Orientation = 'horizontal' | 'vertical';
3429
+ interface ResizableGroupProps extends Omit<GroupProps, 'orientation'> {
3430
+ /** `horizontal` puts panels side by side, `vertical` stacks them. @default 'horizontal' */
3431
+ orientation?: Orientation;
3432
+ }
3433
+ /** Holds the panels and the handles between them. Panels and handles must be its direct children. */
3434
+ declare function ResizableGroup({ orientation, className, ...props }: ResizableGroupProps): React.JSX.Element;
3435
+ type ResizablePanelProps = PanelProps;
3436
+ /** One resizable area. Sizes: numbers are pixels, strings without a unit are percentages. */
3437
+ declare function ResizablePanel({ className, ...props }: ResizablePanelProps): React.JSX.Element;
3438
+ interface ResizableHandleProps extends SeparatorProps$1 {
3439
+ /** Show a small grip on the line. */
3440
+ withHandle?: boolean;
3441
+ classNames?: {
3442
+ grip?: string;
3443
+ };
3444
+ }
3445
+ /** The draggable line between two panels; also focusable and moved with the arrow keys. */
3446
+ declare function ResizableHandle({ withHandle, className, classNames, ...props }: ResizableHandleProps): React.JSX.Element;
3447
+ /**
3448
+ * Panels split by draggable handles.
3449
+ * <Resizable.Group>
3450
+ * <Resizable.Panel defaultSize="30">…</Resizable.Panel>
3451
+ * <Resizable.Handle withHandle />
3452
+ * <Resizable.Panel>…</Resizable.Panel>
3453
+ * </Resizable.Group>
3454
+ */
3455
+ export declare const Resizable: {
3456
+ Group: typeof ResizableGroup;
3457
+ Panel: typeof ResizablePanel;
3458
+ Handle: typeof ResizableHandle;
3459
+ };
3460
+ /**
3461
+ * Panels split by a hairline. The hairline turns accent while hovered or dragged; the optional grip is a
3462
+ * small rounded tile on the line. The hit area is wider than the line (a transparent pseudo-element).
3463
+ */
3464
+ export declare const resizableStyles: import("tailwind-variants").TVReturnType<{
3465
+ orientation: {
3466
+ horizontal: {
3467
+ group: string;
3468
+ handle: string;
3469
+ grip: string;
3470
+ };
3471
+ vertical: {
3472
+ group: string;
3473
+ handle: string;
3474
+ grip: string;
3475
+ };
3476
+ };
3477
+ }, {
3478
+ group: string;
3479
+ panel: string;
3480
+ handle: string[];
3481
+ grip: string[];
3482
+ }, undefined, undefined, undefined, undefined>;
3483
+ interface SidebarContextValue {
3484
+ /** Desktop: the sidebar is shown. */
3485
+ open: boolean;
3486
+ setOpen: (open: boolean) => void;
3487
+ /** Phone: the drawer is shown. */
3488
+ openMobile: boolean;
3489
+ setOpenMobile: (open: boolean) => void;
3490
+ /** Opens/closes the drawer on a phone, the sidebar otherwise. */
3491
+ toggle: () => void;
3492
+ id: string;
3493
+ }
3494
+ /** The sidebar state inside `Sidebar.Provider`: `{ open, setOpen, openMobile, setOpenMobile, toggle }`. */
3495
+ export declare function useSidebar(): SidebarContextValue;
3496
+ interface SidebarProviderProps extends React.ComponentPropsWithRef<'div'> {
3497
+ /** Desktop open state (controlled). */
3498
+ open?: boolean;
3499
+ /** @default true */
3500
+ defaultOpen?: boolean;
3501
+ onOpenChange?: (open: boolean) => void;
3502
+ /** Toggle with Ctrl/⌘ + this key; `false` turns the shortcut off. @default 'b' */
3503
+ shortcut?: string | false;
3504
+ /** Sidebar width, any CSS length. @default '16rem' */
3505
+ width?: string;
3506
+ }
3507
+ /** Holds the open state and lays out the sidebar next to `Sidebar.Inset` on the frame colour. */
3508
+ declare function SidebarProvider({ open: openProp, defaultOpen, onOpenChange, shortcut, width, className, style, ...props }: SidebarProviderProps): React.JSX.Element;
3509
+ interface SidebarProps extends React.ComponentPropsWithRef<'aside'> {
3510
+ /** Name of the navigation landmark. @default 'Sidebar' */
3511
+ label?: string;
3512
+ classNames?: {
3513
+ column?: string;
3514
+ drawer?: string;
3515
+ backdrop?: string;
3516
+ };
3517
+ }
3518
+ /**
3519
+ * The sidebar: an `<aside>` on desktop that collapses completely, and a drawer from the left on phones
3520
+ * (opened by `Sidebar.Trigger`). Its children are rendered in whichever is shown.
3521
+ */
3522
+ declare function SidebarRoot({ label, className, classNames, children, ...props }: SidebarProps): React.JSX.Element;
3523
+ declare const SidebarHeader: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3524
+ declare const SidebarFooter: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3525
+ declare const SidebarSeparator: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3526
+ /** The scrolling middle part with the groups. */
3527
+ declare function SidebarContent({ className, ...props }: React.ComponentPropsWithRef<'nav'>): React.JSX.Element;
3528
+ interface SidebarGroupProps extends Omit<React.ComponentPropsWithRef<'div'>, 'title'> {
3529
+ /** The small heading above the rows. */
3530
+ label?: React.ReactNode;
3531
+ classNames?: {
3532
+ label?: string;
3533
+ list?: string;
3534
+ };
3535
+ }
3536
+ /** A labelled group of rows. Each child becomes a list item. */
3537
+ declare function SidebarGroup({ label, className, classNames, children, ...props }: SidebarGroupProps): React.JSX.Element;
3538
+ declare function SidebarList({ className, children, ...props }: React.ComponentPropsWithRef<'ul'>): React.JSX.Element;
3539
+ declare const SidebarGroupLabel: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3540
+ interface SidebarItemProps extends useRender.ComponentProps<'a'> {
3541
+ icon?: React.ReactNode;
3542
+ /** The current page: soft accent fill, `aria-current="page"`. */
3543
+ active?: boolean;
3544
+ /** Text at the end of the row (a count, a shortcut). */
3545
+ badge?: React.ReactNode;
3546
+ disabled?: boolean;
3547
+ }
3548
+ /**
3549
+ * A row. Renders a link; `render={<Link to="…" />}` for a router link or `render={<button />}` for an
3550
+ * action. On a phone, choosing a row closes the drawer.
3551
+ */
3552
+ declare function SidebarItem({ icon, active, badge, disabled, className, render, children, onClick, ...props }: SidebarItemProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3553
+ /** Nested rows under an item, with a guide line. */
3554
+ declare function SidebarSub({ className, children, ...props }: React.ComponentPropsWithRef<'ul'>): React.JSX.Element;
3555
+ /** Opens and closes the sidebar (the drawer on a phone). */
3556
+ declare function SidebarTrigger({ className, onClick, children, ...props }: ButtonProps): React.JSX.Element;
3557
+ /** The page panel next to the sidebar (rounded, on the background colour). */
3558
+ declare function SidebarInset({ className, ...props }: React.ComponentPropsWithRef<'main'>): React.JSX.Element;
3559
+ /**
3560
+ * The app sidebar of crazy-hub.
3561
+ * <Sidebar.Provider>
3562
+ * <Sidebar>
3563
+ * <Sidebar.Header>…</Sidebar.Header>
3564
+ * <Sidebar.Content>
3565
+ * <Sidebar.Group label="Feedback">
3566
+ * <Sidebar.Item href="/ideas" icon={<Lightbulb />} active>Ideas</Sidebar.Item>
3567
+ * </Sidebar.Group>
3568
+ * </Sidebar.Content>
3569
+ * </Sidebar>
3570
+ * <Sidebar.Inset><Sidebar.Trigger /> …</Sidebar.Inset>
3571
+ * </Sidebar.Provider>
3572
+ */
3573
+ export declare const Sidebar: typeof SidebarRoot & {
3574
+ Provider: typeof SidebarProvider;
3575
+ Header: typeof SidebarHeader;
3576
+ Content: typeof SidebarContent;
3577
+ Footer: typeof SidebarFooter;
3578
+ Separator: typeof SidebarSeparator;
3579
+ Group: typeof SidebarGroup;
3580
+ GroupLabel: typeof SidebarGroupLabel;
3581
+ List: typeof SidebarList;
3582
+ Item: typeof SidebarItem;
3583
+ Sub: typeof SidebarSub;
3584
+ Trigger: typeof SidebarTrigger;
3585
+ Inset: typeof SidebarInset;
3586
+ };
3587
+ /**
3588
+ * The hover of a menu column (from crazy-hub, which took it from Fumadocs): one neutral block per area
3589
+ * glides to the row under the mouse or the keyboard focus. Rows that already show their own fill (the
3590
+ * active row) count as empty space, so the block never paints over the accent and never starts its
3591
+ * slide from there: leaving the active row, the block fades in at the next row instead of sliding.
3592
+ */
3593
+ export declare const glideBlockClass: string;
3594
+ /**
3595
+ * Starts the glide in `area`; returns a cleanup. The block is the area's child with
3596
+ * `[data-glide-block]`. Rows inside `[data-no-glide-area]` are ignored.
3597
+ */
3598
+ export declare function glide(area: HTMLElement): () => void;
3599
+ /** A ref callback that runs `glide` on the element while it is mounted. */
3600
+ export declare function useGlide<T extends HTMLElement>(): (node: T | null) => void;
3601
+ /**
3602
+ * The app sidebar of crazy-hub: it sits on the frame colour next to the page panel (the framed app
3603
+ * layout). Rows are muted; the active row has the soft accent fill; one neutral block glides under
3604
+ * the hovered row (see glide.ts). Collapsing hides the sidebar completely: the column closes and the
3605
+ * content slides out a little and fades. On phones it is a drawer from the left.
3606
+ */
3607
+ export declare const sidebarStyles: import("tailwind-variants").TVReturnType<{}, {
3608
+ provider: string;
3609
+ aside: string[];
3610
+ column: string[];
3611
+ area: string;
3612
+ header: string;
3613
+ content: string;
3614
+ footer: string;
3615
+ separator: string;
3616
+ group: string;
3617
+ groupLabel: string;
3618
+ list: string;
3619
+ item: string[];
3620
+ badge: string;
3621
+ sub: string;
3622
+ inset: string[];
3623
+ trigger: string;
3624
+ backdrop: string[];
3625
+ drawer: string[];
3626
+ }, undefined, undefined, undefined, undefined>;
3627
+ /** One look per text element, shared by the parts and by the `Prose` wrapper. */
3628
+ export declare const typographyStyles: import("tailwind-variants").TVReturnType<{}, {
3629
+ h1: string;
3630
+ h2: string;
3631
+ h3: string;
3632
+ h4: string;
3633
+ p: string;
3634
+ lead: string;
3635
+ large: string;
3636
+ small: string;
3637
+ muted: string;
3638
+ blockquote: string;
3639
+ list: string;
3640
+ inlineCode: string;
3641
+ link: string;
3642
+ kbd: string;
3643
+ hr: string;
3644
+ }, undefined, undefined, undefined, undefined>;
3645
+ /**
3646
+ * Long-form text from markdown or a CMS: every child element gets the same look as the parts.
3647
+ * Spacing follows a vertical rhythm: block elements are separated by `margin-top`, headings get more.
3648
+ */
3649
+ export declare const proseStyles: import("tailwind-variants").TVReturnType<{
3650
+ size: {
3651
+ sm: string;
3652
+ md: string;
3653
+ lg: string;
3654
+ };
3655
+ }, undefined, string[], undefined, undefined, undefined>;
3656
+ interface ProseProps extends useRender.ComponentProps<'div'>, VariantProps<typeof proseStyles> {}
3657
+ /**
3658
+ * Styles every element inside: headings, paragraphs, lists, quotes, code, tables, links. Use it around
3659
+ * rendered markdown or CMS content. `render={<article />}` changes the element.
3660
+ */
3661
+ export declare function Prose({ className, size, render, ...props }: ProseProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3662
+ /**
3663
+ * Text parts with the same look as `Prose`, for UI text outside long-form content:
3664
+ * <Typography.H2>Roadmap</Typography.H2> <Typography.Lead>What we build next.</Typography.Lead>
3665
+ * Each part takes `render` to swap the element (`<Typography.H2 render={<h3 />}>` keeps the h2 look).
3666
+ */
3667
+ export declare const Typography: {
3668
+ H1: {
3669
+ ({ className, render, ...props }: useRender.ComponentProps<"h1", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3670
+ displayName: string;
3671
+ };
3672
+ H2: {
3673
+ ({ className, render, ...props }: useRender.ComponentProps<"h2", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3674
+ displayName: string;
3675
+ };
3676
+ H3: {
3677
+ ({ className, render, ...props }: useRender.ComponentProps<"h3", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3678
+ displayName: string;
3679
+ };
3680
+ H4: {
3681
+ ({ className, render, ...props }: useRender.ComponentProps<"h4", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3682
+ displayName: string;
3683
+ };
3684
+ P: {
3685
+ ({ className, render, ...props }: useRender.ComponentProps<"p", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3686
+ displayName: string;
3687
+ };
3688
+ Lead: {
3689
+ ({ className, render, ...props }: useRender.ComponentProps<"p", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3690
+ displayName: string;
3691
+ };
3692
+ Large: {
3693
+ ({ className, render, ...props }: useRender.ComponentProps<"div", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3694
+ displayName: string;
3695
+ };
3696
+ Small: {
3697
+ ({ className, render, ...props }: useRender.ComponentProps<"small", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3698
+ displayName: string;
3699
+ };
3700
+ Muted: {
3701
+ ({ className, render, ...props }: useRender.ComponentProps<"p", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3702
+ displayName: string;
3703
+ };
3704
+ Blockquote: {
3705
+ ({ className, render, ...props }: useRender.ComponentProps<"blockquote", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3706
+ displayName: string;
3707
+ };
3708
+ List: {
3709
+ ({ className, render, ...props }: useRender.ComponentProps<"ul", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3710
+ displayName: string;
3711
+ };
3712
+ InlineCode: {
3713
+ ({ className, render, ...props }: useRender.ComponentProps<"code", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3714
+ displayName: string;
3715
+ };
3716
+ Link: {
3717
+ ({ className, render, ...props }: useRender.ComponentProps<"a", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3718
+ displayName: string;
3719
+ };
3720
+ Kbd: {
3721
+ ({ className, render, ...props }: useRender.ComponentProps<"kbd", {}, import("@base-ui/react").HTMLProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3722
+ displayName: string;
3723
+ };
3724
+ Prose: typeof Prose;
3725
+ };
3726
+ /**
3727
+ * A list row: media, title + description, actions. `outline` and `muted` frame it like a small card;
3728
+ * `plain` (default) leaves it bare for use inside a group. Rows that are links or buttons get a soft
3729
+ * hover fill (background-color only, which the squircle fallback can paint).
3730
+ */
3731
+ export declare const itemStyles: import("tailwind-variants").TVReturnType<{
3732
+ variant: {
3733
+ plain: {
3734
+ root: string;
3735
+ };
3736
+ outline: {
3737
+ root: string;
3738
+ };
3739
+ muted: {
3740
+ root: string;
3741
+ };
3742
+ };
3743
+ size: {
3744
+ sm: {
3745
+ root: string;
3746
+ };
3747
+ md: {
3748
+ root: string;
3749
+ };
3750
+ };
3751
+ }, {
3752
+ root: string[];
3753
+ media: string;
3754
+ content: string;
3755
+ title: string;
3756
+ description: string;
3757
+ actions: string;
3758
+ header: string;
3759
+ footer: string;
3760
+ }, undefined, undefined, undefined, undefined>;
3761
+ export declare const itemMediaStyles: import("tailwind-variants").TVReturnType<{
3762
+ variant: {
3763
+ /** Anything: an avatar, a custom element. */
3764
+ default: string;
3765
+ /** A tinted squircle tile with the icon in accent ink. */
3766
+ icon: string;
3767
+ /** A picture cropped to a tile. */
3768
+ image: string;
3769
+ };
3770
+ }, undefined, "flex shrink-0 items-center justify-center [&_svg]:pointer-events-none", undefined, undefined, undefined>;
3771
+ export declare const itemGroupStyles: import("tailwind-variants").TVReturnType<{
3772
+ /** Rows inside one shared frame, divided by hairlines. */
3773
+ framed: {
3774
+ true: {
3775
+ root: string;
3776
+ };
3777
+ false: {
3778
+ root: string;
3779
+ };
3780
+ };
3781
+ }, {
3782
+ root: string;
3783
+ separator: string;
3784
+ }, undefined, undefined, undefined, undefined>;
3785
+ type Options = VariantProps<typeof itemStyles>;
3786
+ interface ItemRootProps extends useRender.ComponentProps<'div'>, Options {}
3787
+ /** The row itself. Pass `render={<a href="…" />}` (or a router link) to make the whole row a link. */
3788
+ declare function ItemRoot({ className, variant, size, render, ...props }: ItemRootProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3789
+ interface ItemMediaProps extends React.ComponentPropsWithRef<'div'>, VariantProps<typeof itemMediaStyles> {}
3790
+ declare function ItemMedia({ className, variant, ...props }: ItemMediaProps): React.JSX.Element;
3791
+ declare const ItemContent: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3792
+ declare const ItemTitle: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3793
+ declare const ItemDescription: ({ className, ...p }: React.ComponentPropsWithRef<'p'>) => React.JSX.Element;
3794
+ declare const ItemActions: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3795
+ declare const ItemHeader: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3796
+ declare const ItemFooter: ({ className, ...p }: React.ComponentPropsWithRef<'div'>) => React.JSX.Element;
3797
+ interface ItemGroupProps extends React.ComponentPropsWithRef<'div'>, VariantProps<typeof itemGroupStyles> {}
3798
+ /** A list of items. `framed` puts them in one card with hairlines between rows. */
3799
+ export declare function ItemGroup({ className, framed, ...props }: ItemGroupProps): React.JSX.Element;
3800
+ /** A hairline between rows of a group. */
3801
+ export declare function ItemSeparator({ className, ...props }: React.ComponentPropsWithRef<'div'>): React.JSX.Element;
3802
+ interface ItemProps extends Omit<ItemRootProps, 'title'> {
3803
+ /** An icon, shown on a tinted tile. */
3804
+ icon?: React.ReactNode;
3805
+ /** Any media (avatar, image) shown as is; wins over `icon`. */
3806
+ media?: React.ReactNode;
3807
+ title?: React.ReactNode;
3808
+ description?: React.ReactNode;
3809
+ /** Controls on the right: a button, a switch, a chip. */
3810
+ actions?: React.ReactNode;
3811
+ classNames?: {
3812
+ media?: string;
3813
+ content?: string;
3814
+ title?: string;
3815
+ description?: string;
3816
+ actions?: string;
3817
+ };
3818
+ }
3819
+ /**
3820
+ * A list row: media, title and description, actions.
3821
+ * <Item icon={<Shield />} title="God mode" description="No damage taken." actions={<Switch />} />
3822
+ * or compound: Item.Root / Media / Content / Title / Description / Actions / Header / Footer.
3823
+ */
3824
+ declare function ItemSimple({ icon, media, title, description, actions, classNames, children, ...props }: ItemProps): React.JSX.Element;
3825
+ export declare const Item: typeof ItemSimple & {
3826
+ Root: typeof ItemRoot;
3827
+ Media: typeof ItemMedia;
3828
+ Content: typeof ItemContent;
3829
+ Title: typeof ItemTitle;
3830
+ Description: typeof ItemDescription;
3831
+ Actions: typeof ItemActions;
3832
+ Header: typeof ItemHeader;
3833
+ Footer: typeof ItemFooter;
3834
+ Group: typeof ItemGroup;
3835
+ Separator: typeof ItemSeparator;
3836
+ };
3837
+ /**
3838
+ * An overlay pinned to one edge of its positioned parent. The layers are stacked `backdrop-filter`
3839
+ * blurs, each masked to a band, so the blur grows towards the edge instead of starting at a hard line.
3840
+ */
3841
+ export declare const progressiveBlurStyles: import("tailwind-variants").TVReturnType<{
3842
+ side: {
3843
+ top: {
3844
+ root: string;
3845
+ };
3846
+ bottom: {
3847
+ root: string;
3848
+ };
3849
+ left: {
3850
+ root: string;
3851
+ };
3852
+ right: {
3853
+ root: string;
3854
+ };
3855
+ };
3856
+ }, {
3857
+ root: string;
3858
+ layer: string;
3859
+ tint: string;
3860
+ }, undefined, undefined, undefined, undefined>;
3861
+ type Side = 'top' | 'bottom' | 'left' | 'right';
3862
+ interface ProgressiveBlurProps extends Omit<React.ComponentPropsWithRef<'div'>, 'children'>, VariantProps<typeof progressiveBlurStyles> {
3863
+ /** The edge the blur grows towards. @default 'bottom' */
3864
+ side?: Side;
3865
+ /** How far the blur reaches in from the edge: pixels or any CSS length. @default 64 */
3866
+ size?: number | string;
3867
+ /** The blur at the edge, in pixels; it fades out inwards. @default 8 */
3868
+ strength?: number;
3869
+ /** Number of stacked layers; more is smoother and costs more. @default 8 */
3870
+ layers?: number;
3871
+ /**
3872
+ * Also fade towards a colour at the edge, so text under the blur disappears completely.
3873
+ * `true` uses the page background; pass a CSS colour (`var(--cui-surface)`) inside cards.
3874
+ */
3875
+ tint?: boolean | string;
3876
+ classNames?: {
3877
+ layer?: string;
3878
+ tint?: string;
3879
+ };
3880
+ }
3881
+ /**
3882
+ * Blurs whatever is behind it progressively towards one edge. Put it inside a positioned parent
3883
+ * (`relative`) over a scroll area, a card, an image or a list end; it never catches the pointer.
3884
+ * <div className="relative"><ScrollArea …/><ProgressiveBlur side="bottom" size={72} /></div>
3885
+ */
3886
+ export declare function ProgressiveBlur({ side, size, strength, layers, tint, className, classNames, style, ...props }: ProgressiveBlurProps): React.JSX.Element;
3887
+ export type { AccordionItemData, AccordionPanelProps, AccordionProps, AccordionRootProps, AccordionTriggerProps, AlertDialogContentProps, AlertDialogProps, AlertProps, AspectRatioProps, AvatarProps, AvatarRootProps, BreadcrumbItemData, BreadcrumbLinkProps, BreadcrumbProps, ButtonGroupProps, ButtonProps, CalendarProps, CalendarRangeProps, CalendarSingleProps, CardProps, CarouselApi, CarouselContentProps, CarouselDotsProps, CarouselItemProps, CarouselOptions, CarouselProps, CarouselRootProps, ChartCurveName, ChartLegendItem, ChartLegendProps, ChartProps, ChartReferenceLine, ChartRootProps, ChartSeries, ChartValueFormat, ChartXFormat, CheckboxGroupProps, CheckboxProps, ChipProps, CodeBlockCopyProps, CodeBlockProps, CodeThemes, CollapsibleProps, CollapsibleTriggerProps, ComboboxGroupData, ComboboxMultipleProps, ComboboxOption, ComboboxProps, ComboboxSingleProps, CommandDialogProps, CommandFilterOption, CommandFilterProps, CommandFiltersProps, CommandGroupData, CommandHighlightProps, CommandHintProps, CommandItemBreadcrumbsProps, CommandItemData, CommandItemProps, CommandJumpItemProps, CommandProps, CommandRootProps, ContextMenuContentProps, ContextMenuProps, DataTableColumn, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableProps, DataTableRootProps, DataTableSearchProps, DatePickerProps, DatePickerRangeProps, DatePickerSingleProps, DateRange, DialogContentProps, DialogProps, DrawerContentProps, DrawerProps, DropdownMenuContentProps, DropdownMenuEntry, DropdownMenuItemProps, DropdownMenuProps, EmptyProps, FieldProps, HighlightOptions, HoverCardContentProps, HoverCardProps, InputGroupProps, InputOTPProps, InputOTPRootProps, InputProps, ItemGroupProps, ItemMediaProps, ItemProps, ItemRootProps, KbdProps, LabelProps, MenubarMenuData, MenubarProps, NativeSelectOption, NativeSelectProps, NavigationMenuItemData, NavigationMenuLinkCardProps, NavigationMenuLinkData, NavigationMenuProps, NumberFieldProps, NumberFieldRootProps, PaginationProps, PopoverContentProps, PopoverProps, ProgressProps, ProgressTrackProps, ProgressiveBlurProps, ProseProps, RadioGroupItem, RadioGroupProps, RadioProps, ResizableGroupProps, ResizableHandleProps, ResizablePanelProps, RevealGroupProps, RevealProps, ScrollAreaProps, SelectOption, SelectProps, SeparatorProps, SheetContentProps, SheetProps, SidebarGroupProps, SidebarItemProps, SidebarProps, SidebarProviderProps, SkeletonProps, SliderProps, SpinnerProps, SwitchProps, TabItem, TableColumn, TableProps, TableRootProps, TabsListProps, TabsProps, TabsRootProps, TextareaProps, ToastOptions, ToastType, ToasterProps, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps, ToggleProps, TooltipContentProps, TooltipProps, UseDataTableOptions, VariantProps };