silicaui-react 0.1.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,2754 @@
1
+ import * as React from 'react';
2
+ import { Accordion as Accordion$1 } from '@base-ui-components/react/accordion';
3
+ import { Slider as Slider$1 } from '@base-ui-components/react/slider';
4
+ import * as _base_ui_components_react_toast from '@base-ui-components/react/toast';
5
+ import { Toast } from '@base-ui-components/react/toast';
6
+ import { NumberField as NumberField$1 } from '@base-ui-components/react/number-field';
7
+ import { Dialog as Dialog$1 } from '@base-ui-components/react/dialog';
8
+ import { PreviewCard as PreviewCard$1 } from '@base-ui-components/react/preview-card';
9
+ import * as _base_ui_components_react_toolbar from '@base-ui-components/react/toolbar';
10
+ import { Toolbar as Toolbar$1 } from '@base-ui-components/react/toolbar';
11
+ import * as _base_ui_components_react_navigation_menu from '@base-ui-components/react/navigation-menu';
12
+ import { NavigationMenu as NavigationMenu$1 } from '@base-ui-components/react/navigation-menu';
13
+ import * as _base_ui_components_react_menu from '@base-ui-components/react/menu';
14
+ import { Menu as Menu$1 } from '@base-ui-components/react/menu';
15
+ import * as _base_ui_components_react_menubar from '@base-ui-components/react/menubar';
16
+ import { Menubar as Menubar$1 } from '@base-ui-components/react/menubar';
17
+ import * as _base_ui_components_react_context_menu from '@base-ui-components/react/context-menu';
18
+ import { ContextMenu as ContextMenu$1 } from '@base-ui-components/react/context-menu';
19
+ import * as _base_ui_components_react_toggle from '@base-ui-components/react/toggle';
20
+ import { Toggle as Toggle$1 } from '@base-ui-components/react/toggle';
21
+ import * as _base_ui_components_react_toggle_group from '@base-ui-components/react/toggle-group';
22
+ import { ToggleGroup as ToggleGroup$1 } from '@base-ui-components/react/toggle-group';
23
+ import * as _base_ui_components_react_field from '@base-ui-components/react/field';
24
+ import { Field as Field$1 } from '@base-ui-components/react/field';
25
+ import { Form as Form$1 } from '@base-ui-components/react/form';
26
+ import { Switch as Switch$1 } from '@base-ui-components/react/switch';
27
+ import { Collapsible as Collapsible$1 } from '@base-ui-components/react/collapsible';
28
+ import { AlertDialog as AlertDialog$1 } from '@base-ui-components/react/alert-dialog';
29
+ import { Select as Select$1 } from '@base-ui-components/react/select';
30
+ import { Combobox as Combobox$1 } from '@base-ui-components/react/combobox';
31
+ import { Autocomplete as Autocomplete$1 } from '@base-ui-components/react/autocomplete';
32
+ import { Popover as Popover$1 } from '@base-ui-components/react/popover';
33
+ import { Tooltip as Tooltip$1 } from '@base-ui-components/react/tooltip';
34
+ import { Tabs as Tabs$1 } from '@base-ui-components/react/tabs';
35
+
36
+ /**
37
+ * Shared token unions used across Silica components.
38
+ *
39
+ * `SilicaColor` lists the built-in semantic colors for autocomplete but also
40
+ * accepts any custom color string (the `(string & {})` trick keeps the literal
41
+ * suggestions while still allowing arbitrary user-defined colors registered via
42
+ * `@plugin "silicaui" { colors: … }`).
43
+ */
44
+ type SilicaColor = "primary" | "secondary" | "accent" | "neutral" | "info" | "success" | "warning" | "error" | (string & {});
45
+ type SilicaSize = "xs" | "sm" | "md" | "lg" | "xl";
46
+
47
+ /** Semantic or custom color. Alias of the shared {@link SilicaColor}. */
48
+ type ButtonColor = SilicaColor;
49
+ type ButtonVariant = "solid" | "outline" | "soft" | "ghost" | "link" | "dash";
50
+ type ButtonSize = SilicaSize;
51
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
52
+ /** Semantic or custom color; maps to `btn-<color>`. */
53
+ color?: ButtonColor;
54
+ /** How the color is applied. Default `solid`. */
55
+ variant?: ButtonVariant;
56
+ /** Default `md`. */
57
+ size?: ButtonSize;
58
+ /** Icon-only button shape. */
59
+ shape?: "square" | "circle";
60
+ /** Full-width. */
61
+ block?: boolean;
62
+ /** Extra-wide. */
63
+ wide?: boolean;
64
+ /** Force the pressed look. */
65
+ active?: boolean;
66
+ /** Show a spinner, set `aria-busy`, and make the button non-interactive. */
67
+ loading?: boolean;
68
+ iconStart?: React.ReactNode;
69
+ iconEnd?: React.ReactNode;
70
+ /**
71
+ * Render as a different element (e.g. an anchor or router link) while keeping
72
+ * Silica's classes and behavior. Mirrors Base UI's `render` composition model.
73
+ *
74
+ * <Button render={<a href="/docs" />}>Docs</Button>
75
+ */
76
+ render?: React.ReactElement;
77
+ }
78
+ /**
79
+ * Silica Button — a thin wrapper that applies Silica's `btn` classes. It's a
80
+ * presentational component, so it doesn't pull in a headless primitive; the
81
+ * `render` prop covers polymorphism.
82
+ */
83
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
84
+
85
+ type BadgeColor = SilicaColor;
86
+ type BadgeVariant = "solid" | "outline" | "soft" | "ghost" | "dash";
87
+ type BadgeSize = SilicaSize;
88
+ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
89
+ /** Semantic or custom color; maps to `badge-<color>`. */
90
+ color?: BadgeColor;
91
+ /** How the color is applied. Default `solid`. */
92
+ variant?: BadgeVariant;
93
+ /** Default `md`. */
94
+ size?: BadgeSize;
95
+ /** Render as a different element while keeping Silica's classes. */
96
+ render?: React.ReactElement;
97
+ }
98
+ /**
99
+ * Silica Badge — a small pill for labels, counts, and statuses. Presentational;
100
+ * `render` covers polymorphism (e.g. wrap a link).
101
+ */
102
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
103
+
104
+ type InputColor = SilicaColor;
105
+ type InputSize = SilicaSize;
106
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "color"> {
107
+ /** Accent color; maps to `input-<color>` (border + focus ring). */
108
+ color?: InputColor;
109
+ /** Default `md`. Matches same-size Button heights. */
110
+ size?: InputSize;
111
+ }
112
+ /**
113
+ * Silica Input — a single-line text field. Thin, presentational wrapper around a
114
+ * native `<input>`, so all native attributes (`type`, `value`, `onChange`,
115
+ * `placeholder`, `disabled`, …) pass straight through.
116
+ */
117
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
118
+
119
+ type NativeSelectColor = SilicaColor;
120
+ type NativeSelectSize = SilicaSize;
121
+ interface NativeSelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, "size" | "color"> {
122
+ /** Accent color; maps to `select-<color>` (border + focus ring). */
123
+ color?: NativeSelectColor;
124
+ /** Default `md`. Matches same-size Input/Button heights. */
125
+ size?: NativeSelectSize;
126
+ }
127
+ /**
128
+ * Silica NativeSelect — a native `<select>` restyled to the field tier. Thin,
129
+ * presentational wrapper: pass `<option>`s as children and all native
130
+ * attributes (`value`, `defaultValue`, `onChange`, `disabled`, …) through.
131
+ *
132
+ * For a rich, searchable, fully-styled listbox (custom popup, groups, keyboard
133
+ * typeahead, multi-select), use `Select` (the Base UI listbox) instead.
134
+ */
135
+ declare const NativeSelect: React.ForwardRefExoticComponent<NativeSelectProps & React.RefAttributes<HTMLSelectElement>>;
136
+
137
+ type TextareaColor = SilicaColor;
138
+ type TextareaSize = SilicaSize;
139
+ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "color"> {
140
+ /** Accent color; maps to `textarea-<color>` (border + focus ring). */
141
+ color?: TextareaColor;
142
+ /** Default `md`. */
143
+ size?: TextareaSize;
144
+ }
145
+ /**
146
+ * Silica Textarea — a multi-line text field. Thin, presentational wrapper around
147
+ * a native `<textarea>`, so all native attributes (`value`, `rows`, `onChange`,
148
+ * `placeholder`, `disabled`, …) pass straight through.
149
+ */
150
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
151
+
152
+ type CardProps = React.HTMLAttributes<HTMLDivElement>;
153
+ /**
154
+ * Silica Card — a surface container. Compose it from parts:
155
+ *
156
+ * <Card>
157
+ * <figure><img src={cover} alt="" /></figure>
158
+ * <CardBody>
159
+ * <CardTitle>Heading</CardTitle>
160
+ * <p>Body copy…</p>
161
+ * <CardActions>
162
+ * <Button color="primary">Action</Button>
163
+ * </CardActions>
164
+ * </CardBody>
165
+ * </Card>
166
+ */
167
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
168
+ /** Padded content stack inside a Card. */
169
+ declare const CardBody: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
170
+ /** Card heading. Renders a `div` — pair with your own heading level if needed. */
171
+ declare const CardTitle: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
172
+ /** Right-aligned action row (buttons, links) at the bottom of a Card body. */
173
+ declare const CardActions: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
174
+
175
+ type AlertColor = SilicaColor;
176
+ type AlertSize = SilicaSize;
177
+ type AlertVariant = "solid" | "soft" | "outline" | "dash";
178
+ interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "color"> {
179
+ /** Semantic color; maps to `alert-<color>`. Omit for a neutral surface. */
180
+ color?: AlertColor;
181
+ /** Visual style. Default `solid`. */
182
+ variant?: AlertVariant;
183
+ /** Default `md`. */
184
+ size?: AlertSize;
185
+ }
186
+ /**
187
+ * Silica Alert — a feedback surface. Compose it from parts, like Card:
188
+ *
189
+ * // One-liner: icon + message
190
+ * <Alert color="success"><CheckIcon /> Your changes were saved.</Alert>
191
+ *
192
+ * // Structured: title + description + trailing actions
193
+ * <Alert color="error">
194
+ * <XIcon />
195
+ * <AlertContent>
196
+ * <AlertTitle>Upload failed</AlertTitle>
197
+ * <AlertDescription>The file exceeds the 5 MB limit.</AlertDescription>
198
+ * </AlertContent>
199
+ * <AlertActions>
200
+ * <Button size="sm" color="error" variant="soft">Retry</Button>
201
+ * </AlertActions>
202
+ * </Alert>
203
+ *
204
+ * A leading `<svg>` child is sized automatically. Defaults to `role="alert"`
205
+ * (assertive); pass `role="status"` for a quieter, non-interrupting announcement.
206
+ */
207
+ declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
208
+ /** Growing middle column of an Alert — holds the title + description. */
209
+ declare const AlertContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
210
+ /** Bold heading line of an Alert. */
211
+ declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
212
+ /** Secondary message line under an AlertTitle. */
213
+ declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
214
+ /** Trailing action group (buttons, links) at the end of an Alert row. */
215
+ declare const AlertActions: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
216
+
217
+ type ProgressColor = SilicaColor;
218
+ type ProgressSize = SilicaSize;
219
+ interface ProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "color" | "children"> {
220
+ /** Fill color; maps to `progress-<color>`. Omit for a neutral bar. */
221
+ color?: ProgressColor;
222
+ /** Default `md`. Height lines up with same-size fields. */
223
+ size?: ProgressSize;
224
+ /**
225
+ * Current value, from 0 to `max`. Omit entirely for an indeterminate
226
+ * (unknown-duration) loading bar.
227
+ */
228
+ value?: number;
229
+ /** Upper bound of `value`. Default `100`. */
230
+ max?: number;
231
+ }
232
+ /**
233
+ * Silica Progress — a task-completion bar (div-based, so it renders identically
234
+ * across engines; see the CSS component for why not native `<progress>`).
235
+ *
236
+ * <Progress value={60} /> // 60%
237
+ * <Progress color="success" value={3} max={4} />
238
+ * <Progress /> // indeterminate
239
+ *
240
+ * Exposes the ARIA `progressbar` role with the right value bounds; an
241
+ * indeterminate bar omits `aria-valuenow` so assistive tech announces it as
242
+ * busy rather than a fixed percentage.
243
+ */
244
+ declare const Progress: React.ForwardRefExoticComponent<ProgressProps & React.RefAttributes<HTMLDivElement>>;
245
+
246
+ type AvatarColor = SilicaColor;
247
+ type AvatarSize = SilicaSize;
248
+ type AvatarShape = "circle" | "rounded";
249
+ type AvatarStatus = "online" | "offline";
250
+ interface AvatarProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "color"> {
251
+ /** Fallback-chip + ring color; maps to `avatar-<color>`. */
252
+ color?: AvatarColor;
253
+ /** Default `md`. */
254
+ size?: AvatarSize;
255
+ /** `circle` (default) or a `rounded` square. */
256
+ shape?: AvatarShape;
257
+ /** Draw an accent ring with a base-100 gap. */
258
+ ring?: boolean;
259
+ /** Presence dot in the corner. */
260
+ status?: AvatarStatus;
261
+ /** Photo URL. If it fails to load, the fallback `children` show instead. */
262
+ src?: string;
263
+ /** Accessible label for the photo / the initials fallback. */
264
+ alt?: string;
265
+ }
266
+ /**
267
+ * Silica Avatar — a photo, or an initials/icon fallback on a colored chip.
268
+ *
269
+ * <Avatar src={url} alt="Jane Doe">JD</Avatar> // photo, falls back to "JD"
270
+ * <Avatar color="primary" alt="Ada Lovelace">AL</Avatar> // initials chip
271
+ * <Avatar color="accent"><UserIcon /></Avatar> // icon fallback
272
+ *
273
+ * `children` are the fallback shown when there's no `src` or the image errors.
274
+ * When falling back to initials with an `alt`, the container is exposed as an
275
+ * `img` with that label so assistive tech announces the person, not "JD".
276
+ */
277
+ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLSpanElement>>;
278
+ /** Overlapping row of Avatars (`<Avatar>` children stack with a base-100 gap). */
279
+ declare const AvatarGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
280
+
281
+ type SkeletonShape = "block" | "circle" | "text";
282
+ interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
283
+ /**
284
+ * `block` (default, `--radius-field`), `circle` (avatar/dot placeholder), or
285
+ * `text` (a pill-rounded line sized in `em`). Give it dimensions with
286
+ * utilities or inline `style`.
287
+ */
288
+ shape?: SkeletonShape;
289
+ }
290
+ /**
291
+ * Silica Skeleton — an animated placeholder for loading content.
292
+ *
293
+ * <Skeleton className="h-32 w-full" /> // block
294
+ * <Skeleton shape="circle" className="h-12 w-12" /> // avatar placeholder
295
+ * <Skeleton shape="text" className="w-40" /> // one line of text
296
+ *
297
+ * Owns only the fill, radius, and shimmer — size it yourself. Marked
298
+ * `aria-hidden` by default (it's decorative; announce loading with an
299
+ * `aria-busy` region around it); override via props if you need otherwise.
300
+ */
301
+ declare const Skeleton: React.ForwardRefExoticComponent<SkeletonProps & React.RefAttributes<HTMLDivElement>>;
302
+
303
+ type TableSize = SilicaSize;
304
+ interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
305
+ /** Striped rows. */
306
+ zebra?: boolean;
307
+ /** Highlight the row under the cursor. */
308
+ hover?: boolean;
309
+ /** Default `md`. Scales cell padding + type. */
310
+ size?: TableSize;
311
+ /** Class for the horizontal-scroll wrapper (the outer `<div>`). */
312
+ wrapperClassName?: string;
313
+ }
314
+ /**
315
+ * Silica Table — a styled `<table>`. Compose it from plain semantic rows; the
316
+ * CSS styles the native elements, so no per-cell classes are needed:
317
+ *
318
+ * <Table zebra hover>
319
+ * <thead>
320
+ * <tr><th>Name</th><th>Role</th></tr>
321
+ * </thead>
322
+ * <tbody>
323
+ * <tr><td>Ada</td><td>Engineer</td></tr>
324
+ * </tbody>
325
+ * </Table>
326
+ *
327
+ * Auto-wrapped in an `overflow-x: auto` container so a wide table scrolls
328
+ * instead of blowing out the page; `ref`/`className` land on the `<table>`.
329
+ */
330
+ declare const Table: React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLTableElement>>;
331
+
332
+ type DividerOrientation = "horizontal" | "vertical";
333
+ interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
334
+ /** `horizontal` (default) or `vertical` (for row layouts). */
335
+ orientation?: DividerOrientation;
336
+ }
337
+ /**
338
+ * Silica Divider — a plain or labeled separator.
339
+ *
340
+ * <Divider /> // plain rule
341
+ * <Divider>OR</Divider> // centered label with rules on each side
342
+ * <Divider orientation="vertical" /> // vertical rule inside a flex row
343
+ */
344
+ declare const Divider: React.ForwardRefExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement>>;
345
+
346
+ type KbdSize = SilicaSize;
347
+ interface KbdProps extends React.HTMLAttributes<HTMLElement> {
348
+ /** Default `md`. Scales the (em-based) keycap with the surrounding text. */
349
+ size?: KbdSize;
350
+ }
351
+ /**
352
+ * Silica Kbd — an inline keyboard-key cap.
353
+ *
354
+ * Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to search.
355
+ */
356
+ declare const Kbd: React.ForwardRefExoticComponent<KbdProps & React.RefAttributes<HTMLElement>>;
357
+
358
+ interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
359
+ }
360
+ /**
361
+ * Silica Breadcrumb — a navigation trail. Pass `<li>` items as children; the
362
+ * chevron separators are drawn by CSS, so no separator markup is needed.
363
+ *
364
+ * <Breadcrumb>
365
+ * <li><a href="/">Home</a></li>
366
+ * <li><a href="/projects">Projects</a></li>
367
+ * <li><span aria-current="page">Silica</span></li>
368
+ * </Breadcrumb>
369
+ */
370
+ declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
371
+
372
+ interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {
373
+ /** Stack the blocks vertically instead of inline. */
374
+ vertical?: boolean;
375
+ }
376
+ /** Container for a row (or column) of `<Stat>` blocks. */
377
+ declare const Stats: React.ForwardRefExoticComponent<StatsProps & React.RefAttributes<HTMLDivElement>>;
378
+ interface StatProps extends React.HTMLAttributes<HTMLDivElement> {
379
+ }
380
+ /**
381
+ * Silica Stat — a single metric block. Compose from parts:
382
+ *
383
+ * <Stats>
384
+ * <Stat>
385
+ * <StatFigure><ChartIcon /></StatFigure>
386
+ * <StatTitle>Revenue</StatTitle>
387
+ * <StatValue>$42.8k</StatValue>
388
+ * <StatDesc>↗︎ 12% this month</StatDesc>
389
+ * </Stat>
390
+ * </Stats>
391
+ */
392
+ declare const Stat: React.ForwardRefExoticComponent<StatProps & React.RefAttributes<HTMLDivElement>>;
393
+ /** Muted label above the value. */
394
+ declare const StatTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
395
+ /** The headline metric. */
396
+ declare const StatValue: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
397
+ /** Secondary line under the value (trend, context). */
398
+ declare const StatDesc: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
399
+ /** Trailing figure/icon, centered beside the text (defaults to primary). */
400
+ declare const StatFigure: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
401
+
402
+ type StepColor = SilicaColor;
403
+ interface StepsProps extends React.OlHTMLAttributes<HTMLOListElement> {
404
+ }
405
+ /**
406
+ * Silica Steps — a horizontal progress tracker. Children are `<Step>`s; color
407
+ * the ones up to (and including) the current step to show completion.
408
+ *
409
+ * <Steps>
410
+ * <Step color="primary" data-content="✓">Cart</Step>
411
+ * <Step color="primary">Shipping</Step>
412
+ * <Step>Payment</Step>
413
+ * <Step>Done</Step>
414
+ * </Steps>
415
+ */
416
+ declare const Steps: React.ForwardRefExoticComponent<StepsProps & React.RefAttributes<HTMLOListElement>>;
417
+ interface StepProps extends React.LiHTMLAttributes<HTMLLIElement> {
418
+ /** Paints the node + incoming connector; maps to `step-<color>`. */
419
+ color?: StepColor;
420
+ /** Glyph shown in the node instead of its number (e.g. a check). */
421
+ "data-content"?: string;
422
+ }
423
+ /** A single node + label in a `<Steps>` track. */
424
+ declare const Step: React.ForwardRefExoticComponent<StepProps & React.RefAttributes<HTMLLIElement>>;
425
+
426
+ type JoinOrientation = "horizontal" | "vertical";
427
+ interface JoinProps extends React.HTMLAttributes<HTMLDivElement> {
428
+ /** `horizontal` (default) or `vertical`. */
429
+ orientation?: JoinOrientation;
430
+ }
431
+ /**
432
+ * Silica Join — merges its children into one seamless segmented group.
433
+ *
434
+ * <Join>
435
+ * <Button>Day</Button>
436
+ * <Button>Week</Button>
437
+ * <Button>Month</Button>
438
+ * </Join>
439
+ *
440
+ * <Join>
441
+ * <Input placeholder="Search…" />
442
+ * <Button color="primary">Go</Button>
443
+ * </Join>
444
+ */
445
+ declare const Join: React.ForwardRefExoticComponent<JoinProps & React.RefAttributes<HTMLDivElement>>;
446
+
447
+ interface MenuProps extends React.HTMLAttributes<HTMLUListElement> {
448
+ }
449
+ /**
450
+ * Silica Menu — a styled list of links/actions.
451
+ *
452
+ * <Menu>
453
+ * <MenuTitle>Workspace</MenuTitle>
454
+ * <MenuItem><a href="/" aria-current="page">Overview</a></MenuItem>
455
+ * <MenuItem><a href="/team">Team</a></MenuItem>
456
+ * <MenuItem><button type="button">Sign out</button></MenuItem>
457
+ * </Menu>
458
+ */
459
+ declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLUListElement>>;
460
+ /** A single item row — wraps an `<a>` or `<button>`. */
461
+ declare const MenuItem: React.ForwardRefExoticComponent<React.LiHTMLAttributes<HTMLLIElement> & React.RefAttributes<HTMLLIElement>>;
462
+ /** A muted section label between items. */
463
+ declare const MenuTitle: React.ForwardRefExoticComponent<React.LiHTMLAttributes<HTMLLIElement> & React.RefAttributes<HTMLLIElement>>;
464
+
465
+ interface CollapseProps extends React.DetailsHTMLAttributes<HTMLDetailsElement> {
466
+ /** Drop the surface for a flush, borderless accordion row. */
467
+ ghost?: boolean;
468
+ }
469
+ /**
470
+ * Silica Collapse — a native `<details>` disclosure. Give several the same
471
+ * `name` for an exclusive accordion (only one open at a time).
472
+ *
473
+ * <Collapse>
474
+ * <CollapseTitle>Shipping</CollapseTitle>
475
+ * <CollapseContent>Ships in 2–3 business days.</CollapseContent>
476
+ * </Collapse>
477
+ *
478
+ * <Collapse name="faq" open>…</Collapse>
479
+ * <Collapse name="faq">…</Collapse>
480
+ */
481
+ declare const Collapse: React.ForwardRefExoticComponent<CollapseProps & React.RefAttributes<HTMLDetailsElement>>;
482
+ /** The clickable header (renders a `<summary>`). */
483
+ declare const CollapseTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
484
+ /** The disclosed body. */
485
+ declare const CollapseContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
486
+
487
+ type IndicatorPlacement = "top-end" | "top-start" | "bottom-end" | "bottom-start";
488
+ interface IndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {
489
+ }
490
+ /**
491
+ * Silica Indicator — pins an overlay to a corner of its content.
492
+ *
493
+ * <Indicator>
494
+ * <IndicatorItem><Badge color="error" size="xs">3</Badge></IndicatorItem>
495
+ * <Button variant="outline">Inbox</Button>
496
+ * </Indicator>
497
+ *
498
+ * The item comes first; the element it decorates follows.
499
+ */
500
+ declare const Indicator: React.ForwardRefExoticComponent<IndicatorProps & React.RefAttributes<HTMLSpanElement>>;
501
+ interface IndicatorItemProps extends React.HTMLAttributes<HTMLSpanElement> {
502
+ /** Which corner. Default `top-end`. */
503
+ placement?: IndicatorPlacement;
504
+ }
505
+ /** The pinned overlay (usually a Badge or dot). */
506
+ declare const IndicatorItem: React.ForwardRefExoticComponent<IndicatorItemProps & React.RefAttributes<HTMLSpanElement>>;
507
+
508
+ type LoadingSize = SilicaSize;
509
+ interface LoadingProps extends React.HTMLAttributes<HTMLSpanElement> {
510
+ /** Default `md`. */
511
+ size?: LoadingSize;
512
+ /** Accessible label announced to assistive tech. Default "Loading". */
513
+ label?: string;
514
+ }
515
+ /**
516
+ * Silica Loading — a spinner. Inherits `currentColor`, so color it with a
517
+ * `text-*` utility or let it match the surrounding text.
518
+ *
519
+ * <Loading />
520
+ * <Loading size="sm" className="text-primary" />
521
+ * <Button loading>Saving…</Button> // Button has its own built-in spinner
522
+ */
523
+ declare const Loading: React.ForwardRefExoticComponent<LoadingProps & React.RefAttributes<HTMLSpanElement>>;
524
+
525
+ type ProseSize = "sm" | "md" | "lg" | "xl";
526
+ interface ProseProps extends React.HTMLAttributes<HTMLDivElement> {
527
+ /** Default `md`. Rescales the whole block by one root font-size. */
528
+ size?: ProseSize;
529
+ }
530
+ /**
531
+ * Silica Prose — typographic defaults for a block of rich/markdown content.
532
+ * Wrap raw HTML (or a Markdown renderer's output) and it gets themed headings,
533
+ * lists, quotes, code, tables, and rhythm — scoped to this block only.
534
+ *
535
+ * <Prose>
536
+ * <h1>Title</h1>
537
+ * <p>Body copy with a <a href="#">link</a> and <code>inline code</code>.</p>
538
+ * </Prose>
539
+ *
540
+ * <Prose dangerouslySetInnerHTML={{ __html: renderedMarkdown }} />
541
+ *
542
+ * Caps width at 65ch for readability — add `max-w-none` to remove.
543
+ */
544
+ declare const Prose: React.ForwardRefExoticComponent<ProseProps & React.RefAttributes<HTMLDivElement>>;
545
+
546
+ /**
547
+ * Typography components for silicaui's UI type ramp (see the `typography` plugin
548
+ * module). They keep the *semantic* element and its *visual* size independent: a
549
+ * `<Heading level={1} size={3}>` is an `<h1>` for the document outline but reads
550
+ * as an h3. With no `size`, a heading just inherits its tag's global default, so
551
+ * `<Heading level={2} />` and a bare `<h2>` match.
552
+ */
553
+ type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
554
+ interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
555
+ /** Semantic level → renders `<h1>`…`<h6>`. Default 2. */
556
+ level?: HeadingLevel;
557
+ /** Visual size override (`1`–`6` or `"display"`); omit to use the tag default. */
558
+ size?: HeadingLevel | "display";
559
+ }
560
+ /** A heading whose semantic level and visual size are set independently. */
561
+ declare const Heading: React.ForwardRefExoticComponent<HeadingProps & React.RefAttributes<HTMLHeadingElement>>;
562
+ interface DisplayProps extends React.HTMLAttributes<HTMLHeadingElement> {
563
+ /** Semantic level for the outline (the look is always `.display`). Default 1. */
564
+ level?: HeadingLevel;
565
+ }
566
+ /** Oversized hero/display heading (`.display`) on a semantic heading element. */
567
+ declare const Display: React.ForwardRefExoticComponent<DisplayProps & React.RefAttributes<HTMLHeadingElement>>;
568
+ type TextVariant = "body" | "lead" | "caption";
569
+ interface TextProps extends React.HTMLAttributes<HTMLElement> {
570
+ /** `body` (default), `lead` (larger intro), or `caption` (small, muted). */
571
+ variant?: TextVariant;
572
+ /** Element to render. Default `p`. */
573
+ as?: React.ElementType;
574
+ }
575
+ /** Body-copy text with a semantic variant. `body` carries no class (bare `<p>`). */
576
+ declare const Text: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLElement>>;
577
+
578
+ type NavbarProps = React.HTMLAttributes<HTMLDivElement>;
579
+ /**
580
+ * Silica Navbar — a top bar with optional start / center / end slots.
581
+ *
582
+ * <Navbar>
583
+ * <NavbarStart><a className="text-lg font-bold">Silica</a></NavbarStart>
584
+ * <NavbarCenter>…nav links…</NavbarCenter>
585
+ * <NavbarEnd><Button>Sign in</Button></NavbarEnd>
586
+ * </Navbar>
587
+ */
588
+ declare const Navbar: React.ForwardRefExoticComponent<NavbarProps & React.RefAttributes<HTMLDivElement>>;
589
+ declare const NavbarStart: React.ForwardRefExoticComponent<NavbarProps & React.RefAttributes<HTMLDivElement>>;
590
+ declare const NavbarCenter: React.ForwardRefExoticComponent<NavbarProps & React.RefAttributes<HTMLDivElement>>;
591
+ declare const NavbarEnd: React.ForwardRefExoticComponent<NavbarProps & React.RefAttributes<HTMLDivElement>>;
592
+
593
+ interface FooterProps extends React.HTMLAttributes<HTMLElement> {
594
+ /** Center every column and its contents (single-row, centered footer). */
595
+ center?: boolean;
596
+ }
597
+ /**
598
+ * Silica Footer — a responsive multi-column site footer.
599
+ *
600
+ * <Footer>
601
+ * <nav>
602
+ * <FooterTitle>Product</FooterTitle>
603
+ * <Link href="#">Features</Link>
604
+ * <Link href="#">Pricing</Link>
605
+ * </nav>
606
+ * …more columns…
607
+ * </Footer>
608
+ *
609
+ * Renders a `<footer>`. Each direct child (e.g. a `<nav>`) becomes a vertical
610
+ * stack of links under its `<FooterTitle>`.
611
+ */
612
+ declare const Footer: React.ForwardRefExoticComponent<FooterProps & React.RefAttributes<HTMLElement>>;
613
+ type FooterTitleProps = React.HTMLAttributes<HTMLElement>;
614
+ /** A small, muted, upper-cased heading for a footer column. Renders `<h6>`. */
615
+ declare const FooterTitle: React.ForwardRefExoticComponent<FooterTitleProps & React.RefAttributes<HTMLHeadingElement>>;
616
+
617
+ type HeroProps = React.HTMLAttributes<HTMLDivElement>;
618
+ /**
619
+ * Silica Hero — a full-width banner that centers its content.
620
+ *
621
+ * <Hero style={{ backgroundImage: `url(${img})` }}>
622
+ * <HeroOverlay />
623
+ * <HeroContent className="text-neutral-content text-center">
624
+ * <div>
625
+ * <h1 className="text-5xl font-bold">Ship faster</h1>
626
+ * <p>…</p>
627
+ * <Button color="primary">Get started</Button>
628
+ * </div>
629
+ * </HeroContent>
630
+ * </Hero>
631
+ *
632
+ * Set a background image via the `style` prop; add `<HeroOverlay />` to tint it.
633
+ */
634
+ declare const Hero: React.ForwardRefExoticComponent<HeroProps & React.RefAttributes<HTMLDivElement>>;
635
+ declare const HeroContent: React.ForwardRefExoticComponent<HeroProps & React.RefAttributes<HTMLDivElement>>;
636
+ /** A translucent dark layer that tints the hero's background image. */
637
+ declare const HeroOverlay: React.ForwardRefExoticComponent<HeroProps & React.RefAttributes<HTMLDivElement>>;
638
+
639
+ type LinkColor = SilicaColor;
640
+ interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
641
+ /** Accent color; maps to `link-<color>`. Defaults to the surrounding text color. */
642
+ color?: LinkColor;
643
+ /** Show the underline only on hover / focus. */
644
+ hover?: boolean;
645
+ }
646
+ /**
647
+ * Silica Link — a styled inline anchor.
648
+ *
649
+ * <Link href="/docs">Docs</Link>
650
+ * <Link href="/pricing" color="primary">Pricing</Link>
651
+ * <Link href="#" hover>Underlines on hover</Link>
652
+ */
653
+ declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
654
+
655
+ type MockupWindowProps = React.HTMLAttributes<HTMLDivElement>;
656
+ /**
657
+ * Silica MockupWindow — an app window frame with faux traffic-light dots.
658
+ *
659
+ * <MockupWindow>
660
+ * <div className="p-8 text-center">Hello!</div>
661
+ * </MockupWindow>
662
+ */
663
+ declare const MockupWindow: React.ForwardRefExoticComponent<MockupWindowProps & React.RefAttributes<HTMLDivElement>>;
664
+ interface MockupBrowserProps extends React.HTMLAttributes<HTMLDivElement> {
665
+ /** Text shown in the faux address bar. */
666
+ url?: string;
667
+ /** Replace the address bar with custom toolbar content. */
668
+ toolbar?: React.ReactNode;
669
+ }
670
+ /**
671
+ * Silica MockupBrowser — a browser frame with a toolbar and faux address bar.
672
+ *
673
+ * <MockupBrowser url="https://silica.ui">
674
+ * <div className="p-8 text-center">Your page</div>
675
+ * </MockupBrowser>
676
+ */
677
+ declare const MockupBrowser: React.ForwardRefExoticComponent<MockupBrowserProps & React.RefAttributes<HTMLDivElement>>;
678
+ type MockupCodeProps = React.HTMLAttributes<HTMLDivElement>;
679
+ /**
680
+ * Silica MockupCode — a dark terminal / code block. Compose it from
681
+ * `<MockupCodeLine>` rows (each renders a `<pre data-prefix>`).
682
+ *
683
+ * <MockupCode>
684
+ * <MockupCodeLine prefix="$">npm i silicaui</MockupCodeLine>
685
+ * <MockupCodeLine prefix=">" className="text-success">done</MockupCodeLine>
686
+ * </MockupCode>
687
+ */
688
+ declare const MockupCode: React.ForwardRefExoticComponent<MockupCodeProps & React.RefAttributes<HTMLDivElement>>;
689
+ interface MockupCodeLineProps extends React.HTMLAttributes<HTMLPreElement> {
690
+ /** Gutter prefix rendered before the line (e.g. `$`, `>`, a line number). */
691
+ prefix?: string;
692
+ }
693
+ /** A single line inside `<MockupCode>`. Renders `<pre data-prefix>`. */
694
+ declare const MockupCodeLine: React.ForwardRefExoticComponent<MockupCodeLineProps & React.RefAttributes<HTMLPreElement>>;
695
+ type MockupPhoneProps = React.HTMLAttributes<HTMLDivElement>;
696
+ /**
697
+ * Silica MockupPhone — a phone frame with a camera notch.
698
+ *
699
+ * <MockupPhone>
700
+ * <div className="p-6 pt-10">Your app screen</div>
701
+ * </MockupPhone>
702
+ *
703
+ * Children render inside the display; the bezel and notch are supplied by the
704
+ * frame. Give top content some `pt` so it clears the notch.
705
+ */
706
+ declare const MockupPhone: React.ForwardRefExoticComponent<MockupPhoneProps & React.RefAttributes<HTMLDivElement>>;
707
+
708
+ type TimelineOrientation = "vertical" | "horizontal";
709
+ interface TimelineProps extends React.HTMLAttributes<HTMLUListElement> {
710
+ /** `vertical` (default) or `horizontal`. */
711
+ orientation?: TimelineOrientation;
712
+ }
713
+ /**
714
+ * Silica Timeline — a sequence of dated events with a connecting rail.
715
+ *
716
+ * <Timeline>
717
+ * <TimelineItem>
718
+ * <TimelineStart>2021</TimelineStart>
719
+ * <TimelineMiddle />
720
+ * <TimelineEnd box>Founded</TimelineEnd>
721
+ * </TimelineItem>
722
+ * <TimelineItem>
723
+ * <TimelineStart>2024</TimelineStart>
724
+ * <TimelineMiddle />
725
+ * <TimelineEnd box>Shipped 1.0</TimelineEnd>
726
+ * </TimelineItem>
727
+ * </Timeline>
728
+ *
729
+ * Renders `<ul>` / `<li>`. Any slot is optional — omit `<TimelineStart>` for a
730
+ * one-sided timeline. `<TimelineMiddle>` renders a default dot when empty.
731
+ */
732
+ declare const Timeline: React.ForwardRefExoticComponent<TimelineProps & React.RefAttributes<HTMLUListElement>>;
733
+ type TimelineItemProps = React.LiHTMLAttributes<HTMLLIElement>;
734
+ declare const TimelineItem: React.ForwardRefExoticComponent<TimelineItemProps & React.RefAttributes<HTMLLIElement>>;
735
+ type TimelineStartProps = React.HTMLAttributes<HTMLDivElement>;
736
+ /** The opposite-side label (e.g. a date). */
737
+ declare const TimelineStart: React.ForwardRefExoticComponent<TimelineStartProps & React.RefAttributes<HTMLDivElement>>;
738
+ type TimelineMiddleProps = React.HTMLAttributes<HTMLDivElement>;
739
+ /** The marker on the rail. Renders a default dot when given no children. */
740
+ declare const TimelineMiddle: React.ForwardRefExoticComponent<TimelineMiddleProps & React.RefAttributes<HTMLDivElement>>;
741
+ interface TimelineEndProps extends React.HTMLAttributes<HTMLDivElement> {
742
+ /** Wrap the content in a bordered card. */
743
+ box?: boolean;
744
+ }
745
+ /** The event content. Set `box` to wrap it in a bordered card. */
746
+ declare const TimelineEnd: React.ForwardRefExoticComponent<TimelineEndProps & React.RefAttributes<HTMLDivElement>>;
747
+
748
+ type CarouselSnap = "start" | "center" | "end";
749
+ type CarouselOrientation = "horizontal" | "vertical";
750
+ interface CarouselProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
751
+ /** Snap alignment of items. `start` (default), `center`, or `end`. */
752
+ snap?: CarouselSnap;
753
+ /** `horizontal` (default) or `vertical`. */
754
+ orientation?: CarouselOrientation;
755
+ /** Show prev/next controls. Default `true`. */
756
+ controls?: boolean;
757
+ /** Bottom indicators: `dots` (default), `numbers` (paged), or `false` to hide. */
758
+ indicators?: boolean | "dots" | "numbers";
759
+ /** Wrap around past the first/last slide. Default `false`. */
760
+ loop?: boolean;
761
+ /** Auto-advance every N ms (pauses on hover/focus). Off by default. */
762
+ autoplay?: number;
763
+ /** Called with the active slide index whenever it changes. */
764
+ onChange?: (index: number) => void;
765
+ /** Extra class for the scroll surface. */
766
+ className?: string;
767
+ }
768
+ /**
769
+ * Silica Carousel — a scroll-snap strip driven by real prev/next controls and
770
+ * dot indicators (with optional loop + autoplay), not just a scrollable list.
771
+ *
772
+ * <Carousel loop autoplay={4000} className="gap-4 rounded-box">
773
+ * <CarouselItem className="w-full"><img … /></CarouselItem>
774
+ * <CarouselItem className="w-full"><img … /></CarouselItem>
775
+ * </Carousel>
776
+ */
777
+ declare function Carousel({ snap, orientation, controls, indicators, loop, autoplay, onChange, className, children, ...rest }: CarouselProps): React.JSX.Element;
778
+ type CarouselItemProps = React.HTMLAttributes<HTMLDivElement>;
779
+ declare const CarouselItem: React.ForwardRefExoticComponent<CarouselItemProps & React.RefAttributes<HTMLDivElement>>;
780
+
781
+ type StackPeek = "top" | "bottom" | "start" | "end";
782
+ interface StackProps extends React.HTMLAttributes<HTMLDivElement> {
783
+ /** Which way the deck peeks. `top` (default), `bottom`, `start`, or `end`. */
784
+ peek?: StackPeek;
785
+ /** Make the deck clickable — sends the front card to the back to reveal the next. */
786
+ interactive?: boolean;
787
+ }
788
+ /**
789
+ * Silica Stack — layers its children into a peeking deck (first child on top).
790
+ * With `interactive`, clicking (or Enter/Space) cycles the front card to the
791
+ * back so you can flip through the deck; the re-stack animates.
792
+ *
793
+ * <Stack interactive>
794
+ * <Card className="bg-primary text-primary-content"><CardBody>1</CardBody></Card>
795
+ * <Card className="bg-secondary text-secondary-content"><CardBody>2</CardBody></Card>
796
+ * <Card className="bg-accent text-accent-content"><CardBody>3</CardBody></Card>
797
+ * </Stack>
798
+ */
799
+ declare function Stack({ peek, interactive, className, children, onClick, onKeyDown, ...rest }: StackProps): React.JSX.Element;
800
+
801
+ type RatingColor = SilicaColor;
802
+ type RatingSize = SilicaSize;
803
+ interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
804
+ /** Controlled value (number of filled stars). */
805
+ value?: number;
806
+ /** Initial value when uncontrolled. */
807
+ defaultValue?: number;
808
+ /** Called when the rating changes. */
809
+ onChange?: (value: number) => void;
810
+ /** Number of stars. Default 5. */
811
+ max?: number;
812
+ /** Accent color for filled stars. Default warning (gold). */
813
+ color?: RatingColor;
814
+ /** Star size. */
815
+ size?: RatingSize;
816
+ /** Render non-interactive. */
817
+ readOnly?: boolean;
818
+ /** Custom star icon (defaults to a filled star). */
819
+ icon?: React.ReactNode;
820
+ /** Accessible label for the group. */
821
+ label?: string;
822
+ }
823
+ /**
824
+ * Silica Rating — a row of star buttons.
825
+ *
826
+ * <Rating defaultValue={3} onChange={setStars} />
827
+ * <Rating value={4.5 | 4} color="warning" readOnly />
828
+ *
829
+ * Keyboard: arrow keys change the value; Home/End jump to 1/max.
830
+ */
831
+ declare function Rating({ value, defaultValue, onChange, max, color, size, readOnly, icon, label, className, ...rest }: RatingProps): React.JSX.Element;
832
+
833
+ type RadialProgressColor = SilicaColor;
834
+ interface RadialProgressProps extends React.HTMLAttributes<HTMLDivElement> {
835
+ /** Progress percentage, 0–100. */
836
+ value: number;
837
+ /** Overall diameter (any CSS length). Default `5rem`. */
838
+ size?: string;
839
+ /** Ring thickness (any CSS length). Default `0.5rem`. */
840
+ thickness?: string;
841
+ /** Accent color. Default primary. */
842
+ color?: RadialProgressColor;
843
+ }
844
+ /**
845
+ * Silica RadialProgress — a circular progress ring with a centered label.
846
+ *
847
+ * <RadialProgress value={70} color="success" />
848
+ * <RadialProgress value={40} size="7rem" thickness="0.75rem">40%</RadialProgress>
849
+ *
850
+ * Defaults the label to `{value}%`; pass children to override.
851
+ */
852
+ declare const RadialProgress: React.ForwardRefExoticComponent<RadialProgressProps & React.RefAttributes<HTMLDivElement>>;
853
+
854
+ type PaginationColor = SilicaColor;
855
+ type PaginationSize = "xs" | "sm" | "md" | "lg";
856
+ interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, "onChange"> {
857
+ /** Current page (1-based). */
858
+ page: number;
859
+ /** Total number of pages. */
860
+ count: number;
861
+ /** Called with the new page. */
862
+ onChange?: (page: number) => void;
863
+ /** Pages shown on each side of the current page. Default 1. */
864
+ siblingCount?: number;
865
+ /** Pages shown at the start/end. Default 1. */
866
+ boundaryCount?: number;
867
+ /** Show prev/next arrows. Default `true`. */
868
+ controls?: boolean;
869
+ color?: PaginationColor;
870
+ size?: PaginationSize;
871
+ }
872
+ /**
873
+ * Silica Pagination — page controls with prev/next and ellipsis.
874
+ *
875
+ * <Pagination page={page} count={12} onChange={setPage} color="primary" />
876
+ */
877
+ declare function Pagination({ page, count, onChange, siblingCount, boundaryCount, controls, color, size, className, ...rest }: PaginationProps): React.JSX.Element;
878
+
879
+ type Styled$k<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
880
+ className?: string;
881
+ };
882
+ /**
883
+ * Silica Accordion — collapsible sections (Base UI behavior, animated height).
884
+ *
885
+ * <Accordion multiple={false} defaultValue={["a"]}>
886
+ * <AccordionItem value="a">
887
+ * <AccordionTrigger>What is Silica?</AccordionTrigger>
888
+ * <AccordionPanel>A design system on one token model.</AccordionPanel>
889
+ * </AccordionItem>
890
+ * <AccordionItem value="b">
891
+ * <AccordionTrigger>Is it themeable?</AccordionTrigger>
892
+ * <AccordionPanel>Yes — every color is a token.</AccordionPanel>
893
+ * </AccordionItem>
894
+ * </Accordion>
895
+ */
896
+ declare function Accordion({ className, ...rest }: Styled$k<typeof Accordion$1.Root>): React.JSX.Element;
897
+ declare function AccordionItem({ className, ...rest }: Styled$k<typeof Accordion$1.Item>): React.JSX.Element;
898
+ interface AccordionTriggerProps extends Styled$k<typeof Accordion$1.Trigger> {
899
+ /** Set false to omit the built-in chevron. */
900
+ chevron?: boolean;
901
+ }
902
+ declare function AccordionTrigger({ className, children, chevron, ...rest }: AccordionTriggerProps): React.JSX.Element;
903
+ declare function AccordionPanel({ className, children, ...rest }: Styled$k<typeof Accordion$1.Panel>): React.JSX.Element;
904
+
905
+ type ChatSide = "start" | "end";
906
+ type ChatBubbleColor = SilicaColor;
907
+ interface ChatProps extends React.HTMLAttributes<HTMLDivElement> {
908
+ /** `start` (incoming, avatar left) or `end` (outgoing, avatar right). */
909
+ side?: ChatSide;
910
+ }
911
+ /**
912
+ * Silica Chat — a message row: avatar, header, bubble, footer.
913
+ *
914
+ * <Chat side="start">
915
+ * <ChatImage><Avatar>OW</Avatar></ChatImage>
916
+ * <ChatHeader>Obi-Wan <time className="opacity-60">12:45</time></ChatHeader>
917
+ * <ChatBubble>You were the chosen one!</ChatBubble>
918
+ * <ChatFooter>Seen</ChatFooter>
919
+ * </Chat>
920
+ * <Chat side="end">
921
+ * <ChatBubble color="primary">I hate you!</ChatBubble>
922
+ * </Chat>
923
+ */
924
+ declare const Chat: React.ForwardRefExoticComponent<ChatProps & React.RefAttributes<HTMLDivElement>>;
925
+ type ChatImageProps = React.HTMLAttributes<HTMLDivElement>;
926
+ declare const ChatImage: React.ForwardRefExoticComponent<ChatImageProps & React.RefAttributes<HTMLDivElement>>;
927
+ type ChatHeaderProps = React.HTMLAttributes<HTMLDivElement>;
928
+ declare const ChatHeader: React.ForwardRefExoticComponent<ChatHeaderProps & React.RefAttributes<HTMLDivElement>>;
929
+ type ChatFooterProps = React.HTMLAttributes<HTMLDivElement>;
930
+ declare const ChatFooter: React.ForwardRefExoticComponent<ChatFooterProps & React.RefAttributes<HTMLDivElement>>;
931
+ interface ChatBubbleProps extends React.HTMLAttributes<HTMLDivElement> {
932
+ /** Bubble color; maps to `chat-bubble-<color>`. Default neutral base-200. */
933
+ color?: ChatBubbleColor;
934
+ }
935
+ declare const ChatBubble: React.ForwardRefExoticComponent<ChatBubbleProps & React.RefAttributes<HTMLDivElement>>;
936
+
937
+ type Styled$j<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
938
+ className?: string;
939
+ };
940
+ type RangeColor = SilicaColor;
941
+ interface RangeProps extends Styled$j<typeof Slider$1.Root> {
942
+ /** Accent color for the filled track + thumb. Default primary. */
943
+ color?: RangeColor;
944
+ }
945
+ /**
946
+ * Silica Range — a slider (Base UI behavior).
947
+ *
948
+ * <Range defaultValue={40} onValueChange={setV} />
949
+ * <Range defaultValue={[20, 60]} color="success" /> // two thumbs
950
+ *
951
+ * Pass an array value/defaultValue for a multi-thumb range.
952
+ */
953
+ declare function Range({ color, className, value, defaultValue, ...rest }: RangeProps): React.JSX.Element;
954
+
955
+ type ToastProviderProps = React.ComponentProps<typeof Toast.Provider>;
956
+ /**
957
+ * Silica ToastProvider — wrap your app once, then call `useToast().add(...)`.
958
+ *
959
+ * <ToastProvider>
960
+ * <App />
961
+ * </ToastProvider>
962
+ *
963
+ * const toast = useToast();
964
+ * toast.add({ title: "Saved", description: "Your changes are saved.", type: "success" });
965
+ */
966
+ declare function ToastProvider({ children, ...rest }: ToastProviderProps): React.JSX.Element;
967
+ /** Toast manager: `add`, `close`, `update`, and the live `toasts` list. */
968
+ declare function useToast(): _base_ui_components_react_toast.UseToastManagerReturnValue;
969
+
970
+ type SwapVariant = "fade" | "rotate" | "flip";
971
+ interface SwapProps extends Omit<React.HTMLAttributes<HTMLLabelElement>, "onChange"> {
972
+ /** Shown when active (checked). */
973
+ on: React.ReactNode;
974
+ /** Shown when inactive. */
975
+ off: React.ReactNode;
976
+ /** Controlled active state. */
977
+ active?: boolean;
978
+ /** Initial state when uncontrolled. */
979
+ defaultActive?: boolean;
980
+ /** Called when toggled. */
981
+ onActiveChange?: (active: boolean) => void;
982
+ /** Transition style. `fade` (default), `rotate`, or `flip`. */
983
+ variant?: SwapVariant;
984
+ /** Accessible label. */
985
+ label?: string;
986
+ }
987
+ /**
988
+ * Silica Swap — cross-fades (or rotates/flips) between two icons on toggle.
989
+ *
990
+ * <Swap variant="rotate" on={<CloseIcon />} off={<MenuIcon />} label="Menu" />
991
+ */
992
+ declare function Swap({ on, off, active, defaultActive, onActiveChange, variant, label, className, ...rest }: SwapProps): React.JSX.Element;
993
+
994
+ type StatusColor = SilicaColor;
995
+ type StatusSize = SilicaSize;
996
+ interface StatusProps extends React.HTMLAttributes<HTMLSpanElement> {
997
+ /** Dot color. */
998
+ color?: StatusColor;
999
+ /** Dot size. */
1000
+ size?: StatusSize;
1001
+ /** Add an expanding "ping" ring. */
1002
+ ping?: boolean;
1003
+ /** Accessible label (e.g. "Online"). */
1004
+ label?: string;
1005
+ }
1006
+ /**
1007
+ * Silica Status — a small status dot, optionally pinging.
1008
+ *
1009
+ * <Status color="success" ping label="Online" />
1010
+ * <Status color="warning" size="sm" />
1011
+ */
1012
+ declare const Status: React.ForwardRefExoticComponent<StatusProps & React.RefAttributes<HTMLSpanElement>>;
1013
+
1014
+ type CountdownUnit = "days" | "hours" | "minutes" | "seconds";
1015
+ interface CountdownProps extends React.HTMLAttributes<HTMLDivElement> {
1016
+ /** Target time (a Date or epoch-ms timestamp). */
1017
+ to: Date | number;
1018
+ /** Which units to show. Default all four. */
1019
+ units?: CountdownUnit[];
1020
+ /** Drop the boxes for an inline number run. */
1021
+ plain?: boolean;
1022
+ /** Called once when the countdown reaches zero. */
1023
+ onComplete?: () => void;
1024
+ }
1025
+ /**
1026
+ * Silica Countdown — a live days/hours/minutes/seconds display.
1027
+ *
1028
+ * <Countdown to={launchDate} />
1029
+ * <Countdown to={Date.now() + 90_000} units={["minutes", "seconds"]} plain />
1030
+ *
1031
+ * Client-only (ticks every second); render under a `"use client"` boundary.
1032
+ */
1033
+ declare function Countdown({ to, units, plain, onComplete, className, ...rest }: CountdownProps): React.JSX.Element;
1034
+
1035
+ type Styled$i<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1036
+ className?: string;
1037
+ };
1038
+ interface NumberFieldProps extends Styled$i<typeof NumberField$1.Root> {
1039
+ /** Accessible label for the input. */
1040
+ label?: string;
1041
+ }
1042
+ /**
1043
+ * Silica NumberField — a stepper input (Base UI: clamping, keyboard, scrub).
1044
+ *
1045
+ * <NumberField defaultValue={1} min={0} max={10} onValueChange={setQty} />
1046
+ */
1047
+ declare function NumberField({ className, label, ...rest }: NumberFieldProps): React.JSX.Element;
1048
+
1049
+ type Styled$h<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1050
+ className?: string;
1051
+ };
1052
+ type DrawerSide = "left" | "right" | "top" | "bottom";
1053
+ type DrawerProps = React.ComponentProps<typeof Dialog$1.Root>;
1054
+ /**
1055
+ * Silica Drawer — a panel that slides in from an edge (Base UI Dialog behavior).
1056
+ *
1057
+ * <Drawer>
1058
+ * <DrawerTrigger><Button>Menu</Button></DrawerTrigger>
1059
+ * <DrawerContent side="left">
1060
+ * <DrawerTitle>Navigation</DrawerTitle>
1061
+ * <nav>…</nav>
1062
+ * <DrawerClose><Button variant="ghost">Close</Button></DrawerClose>
1063
+ * </DrawerContent>
1064
+ * </Drawer>
1065
+ */
1066
+ declare const Drawer: typeof Dialog$1.Root;
1067
+ declare function DrawerTrigger({ children }: {
1068
+ children: React.ReactElement;
1069
+ }): React.JSX.Element;
1070
+ declare function DrawerClose({ children }: {
1071
+ children: React.ReactElement;
1072
+ }): React.JSX.Element;
1073
+ interface DrawerContentProps extends Omit<Styled$h<typeof Dialog$1.Popup>, "children"> {
1074
+ children?: React.ReactNode;
1075
+ /** Edge the drawer slides from. Default `left`. */
1076
+ side?: DrawerSide;
1077
+ /** Class for the backdrop layer. */
1078
+ backdropClassName?: string;
1079
+ }
1080
+ /** Portals + backdrop + the edge-pinned sliding panel in one. */
1081
+ declare function DrawerContent({ side, className, backdropClassName, children, ...rest }: DrawerContentProps): React.JSX.Element;
1082
+ declare function DrawerTitle({ className, ...rest }: Styled$h<typeof Dialog$1.Title>): React.JSX.Element;
1083
+ declare function DrawerDescription({ className, ...rest }: Styled$h<typeof Dialog$1.Description>): React.JSX.Element;
1084
+
1085
+ interface ListProps extends React.HTMLAttributes<HTMLDivElement> {
1086
+ /** Add a hover highlight to rows (for interactive lists). */
1087
+ hover?: boolean;
1088
+ }
1089
+ /**
1090
+ * Silica List — a vertical list of rows.
1091
+ *
1092
+ * <List hover>
1093
+ * <ListTitle>Team</ListTitle>
1094
+ * <ListRow>
1095
+ * <Avatar size="sm">AL</Avatar>
1096
+ * <ListColGrow>
1097
+ * <div className="font-medium">Ada Lovelace</div>
1098
+ * <div className="text-sm opacity-60">Owner</div>
1099
+ * </ListColGrow>
1100
+ * <Button size="sm" variant="ghost">Manage</Button>
1101
+ * </ListRow>
1102
+ * </List>
1103
+ */
1104
+ declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLDivElement>>;
1105
+ type ListRowProps = React.HTMLAttributes<HTMLDivElement>;
1106
+ declare const ListRow: React.ForwardRefExoticComponent<ListRowProps & React.RefAttributes<HTMLDivElement>>;
1107
+ /** The cell that should take the remaining width (title/body). */
1108
+ type ListColGrowProps = React.HTMLAttributes<HTMLDivElement>;
1109
+ declare const ListColGrow: React.ForwardRefExoticComponent<ListColGrowProps & React.RefAttributes<HTMLDivElement>>;
1110
+ type ListTitleProps = React.HTMLAttributes<HTMLDivElement>;
1111
+ declare const ListTitle: React.ForwardRefExoticComponent<ListTitleProps & React.RefAttributes<HTMLDivElement>>;
1112
+
1113
+ type FileInputSize = "sm" | "md" | "lg";
1114
+ interface FileInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
1115
+ size?: FileInputSize;
1116
+ }
1117
+ /**
1118
+ * Silica FileInput — a styled `<input type="file">`.
1119
+ *
1120
+ * <FileInput onChange={(e) => setFile(e.target.files?.[0])} />
1121
+ * <FileInput accept="image/*" multiple size="lg" />
1122
+ */
1123
+ declare const FileInput: React.ForwardRefExoticComponent<FileInputProps & React.RefAttributes<HTMLInputElement>>;
1124
+
1125
+ type DockColor = SilicaColor;
1126
+ interface DockProps extends React.HTMLAttributes<HTMLElement> {
1127
+ /** Accent color for the active item. Default primary. */
1128
+ color?: DockColor;
1129
+ }
1130
+ /**
1131
+ * Silica Dock — a bottom navigation bar of icon+label items.
1132
+ *
1133
+ * <Dock className="fixed inset-x-0 bottom-0">
1134
+ * <DockItem active><HomeIcon /><DockLabel>Home</DockLabel></DockItem>
1135
+ * <DockItem><SearchIcon /><DockLabel>Search</DockLabel></DockItem>
1136
+ * <DockItem><UserIcon /><DockLabel>Profile</DockLabel></DockItem>
1137
+ * </Dock>
1138
+ */
1139
+ declare const Dock: React.ForwardRefExoticComponent<DockProps & React.RefAttributes<HTMLElement>>;
1140
+ interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
1141
+ /** Highlight this item as the current destination. */
1142
+ active?: boolean;
1143
+ }
1144
+ declare const DockItem: React.ForwardRefExoticComponent<DockItemProps & React.RefAttributes<HTMLButtonElement>>;
1145
+ type DockLabelProps = React.HTMLAttributes<HTMLSpanElement>;
1146
+ declare const DockLabel: React.ForwardRefExoticComponent<DockLabelProps & React.RefAttributes<HTMLSpanElement>>;
1147
+
1148
+ interface FieldsetProps extends React.FieldsetHTMLAttributes<HTMLFieldSetElement> {
1149
+ }
1150
+ /**
1151
+ * Silica Fieldset — a labeled, vertically-stacked group of form controls.
1152
+ *
1153
+ * <Fieldset>
1154
+ * <FieldsetLegend>Profile</FieldsetLegend>
1155
+ * <Input placeholder="Name" />
1156
+ * <FieldsetLabel>Your full legal name.</FieldsetLabel>
1157
+ * </Fieldset>
1158
+ *
1159
+ * Renders a native `<fieldset>` (chrome reset in CSS) so `disabled` cascades to
1160
+ * every control inside it for free.
1161
+ */
1162
+ declare const Fieldset: React.ForwardRefExoticComponent<FieldsetProps & React.RefAttributes<HTMLFieldSetElement>>;
1163
+ interface FieldsetLegendProps extends React.HTMLAttributes<HTMLLegendElement> {
1164
+ }
1165
+ /** The group heading. Renders a native `<legend>`. */
1166
+ declare const FieldsetLegend: React.ForwardRefExoticComponent<FieldsetLegendProps & React.RefAttributes<HTMLLegendElement>>;
1167
+ interface FieldsetLabelProps extends React.HTMLAttributes<HTMLSpanElement> {
1168
+ }
1169
+ /** Muted helper/hint text under a control. */
1170
+ declare const FieldsetLabel: React.ForwardRefExoticComponent<FieldsetLabelProps & React.RefAttributes<HTMLSpanElement>>;
1171
+
1172
+ interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
1173
+ }
1174
+ /**
1175
+ * Silica Label — a plain, muted caption for a control.
1176
+ *
1177
+ * <Label htmlFor="email">Email</Label>
1178
+ * <Input id="email" />
1179
+ */
1180
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
1181
+ interface FloatingLabelProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, "children"> {
1182
+ /** Caption text that floats onto the border when the field is focused/filled. */
1183
+ label: React.ReactNode;
1184
+ /** The control (an `<Input>`, `<Textarea>`, `<select>`, …). */
1185
+ children: React.ReactElement<{
1186
+ placeholder?: string;
1187
+ }>;
1188
+ }
1189
+ /**
1190
+ * Silica FloatingLabel — a caption that rests inside the field and floats up on
1191
+ * focus or when the field has a value.
1192
+ *
1193
+ * <FloatingLabel label="Email">
1194
+ * <Input type="email" />
1195
+ * </FloatingLabel>
1196
+ *
1197
+ * The "filled" state relies on `:placeholder-shown`, so the control needs a
1198
+ * placeholder — one (a single space) is injected automatically if you don't set
1199
+ * your own.
1200
+ */
1201
+ declare const FloatingLabel: React.ForwardRefExoticComponent<FloatingLabelProps & React.RefAttributes<HTMLLabelElement>>;
1202
+
1203
+ interface ValidatorProps {
1204
+ /** A single form control to apply validity-driven coloring to. */
1205
+ children: React.ReactElement<{
1206
+ className?: string;
1207
+ }>;
1208
+ }
1209
+ /**
1210
+ * Silica Validator — recolors its child control by validity.
1211
+ *
1212
+ * <Validator><Input required type="email" /></Validator>
1213
+ * <ValidatorHint>Enter a valid email address.</ValidatorHint>
1214
+ *
1215
+ * Adds the `validator` class to the child so the field flips to error/success
1216
+ * on `:user-invalid` / `:user-valid` (after the user interacts) or on an
1217
+ * explicit `aria-invalid`. For the hint to reveal itself, render `<ValidatorHint>`
1218
+ * as the immediate next sibling of the control.
1219
+ */
1220
+ declare function Validator({ children }: ValidatorProps): React.JSX.Element;
1221
+ interface ValidatorHintProps extends React.HTMLAttributes<HTMLParagraphElement> {
1222
+ }
1223
+ /** Error message that stays hidden until the preceding control is invalid. */
1224
+ declare const ValidatorHint: React.ForwardRefExoticComponent<ValidatorHintProps & React.RefAttributes<HTMLParagraphElement>>;
1225
+
1226
+ interface DiffProps extends Omit<React.HTMLAttributes<HTMLElement>, "children"> {
1227
+ /** The "before" layer (clipped from the split leftward). */
1228
+ before: React.ReactNode;
1229
+ /** The "after" layer (revealed to the right of the split). */
1230
+ after: React.ReactNode;
1231
+ /** Controlled split position, 0–100 (percent from the left edge). */
1232
+ position?: number;
1233
+ /** Uncontrolled initial split position, 0–100. Default `50`. */
1234
+ defaultPosition?: number;
1235
+ /** Fires with the new split position (0–100) as it changes. */
1236
+ onPositionChange?: (position: number) => void;
1237
+ }
1238
+ /**
1239
+ * Silica Diff — a draggable before/after comparison.
1240
+ *
1241
+ * <Diff
1242
+ * before={<img src={before} alt="before" />}
1243
+ * after={<img src={after} alt="after" />}
1244
+ * className="aspect-video"
1245
+ * />
1246
+ *
1247
+ * Drag the handle (or click anywhere) to move the split; the handle is a slider,
1248
+ * so ←/→ nudge it (Shift for larger steps), Home/End snap to the edges.
1249
+ */
1250
+ declare const Diff: React.ForwardRefExoticComponent<DiffProps & React.RefAttributes<HTMLElement>>;
1251
+
1252
+ type MaskVariant = "squircle" | "heart" | "circle" | "hexagon" | "hexagon-2" | "triangle" | "triangle-2" | "triangle-3" | "triangle-4" | "diamond" | "pentagon" | "star" | "star-2" | "decagon" | "parallelogram";
1253
+ interface MaskProps extends React.HTMLAttributes<HTMLDivElement> {
1254
+ /** The shape to clip to. */
1255
+ variant: MaskVariant;
1256
+ }
1257
+ /**
1258
+ * Silica Mask — clips its content (usually an `<img>`) to a shape.
1259
+ *
1260
+ * <Mask variant="hexagon" className="w-24 h-24">
1261
+ * <img src={photo} alt="" className="w-full h-full object-cover" />
1262
+ * </Mask>
1263
+ *
1264
+ * Give the mask a size (via `className`/`style`); the shape scales to fill it.
1265
+ * You can also apply the classes directly to an `<img>` if you prefer.
1266
+ */
1267
+ declare const Mask: React.ForwardRefExoticComponent<MaskProps & React.RefAttributes<HTMLDivElement>>;
1268
+
1269
+ type MeterColor = SilicaColor;
1270
+ type MeterSize = SilicaSize;
1271
+ interface MeterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "color"> {
1272
+ /** The current reading. */
1273
+ value: number;
1274
+ /** Range floor. Default `0`. */
1275
+ min?: number;
1276
+ /** Range ceiling. Default `100`. */
1277
+ max?: number;
1278
+ /** Fill color; maps to `meter-<color>`. */
1279
+ color?: MeterColor;
1280
+ /** Track height; default `md`. */
1281
+ size?: MeterSize;
1282
+ /** Optional label shown in the header row. */
1283
+ label?: React.ReactNode;
1284
+ /** Show the formatted value in the header row. Default `false`. */
1285
+ showValue?: boolean;
1286
+ /** `Intl.NumberFormat` options for the displayed value. */
1287
+ format?: Intl.NumberFormatOptions;
1288
+ }
1289
+ /**
1290
+ * Silica Meter — a static measurement within a known range (disk usage, score,
1291
+ * capacity). Behavior/accessibility from Base UI's Meter; look from Silica.
1292
+ *
1293
+ * <Meter value={72} label="Storage" showValue color="warning" />
1294
+ */
1295
+ declare const Meter: React.ForwardRefExoticComponent<MeterProps & React.RefAttributes<HTMLDivElement>>;
1296
+
1297
+ type ScrollAreaOrientation = "vertical" | "horizontal" | "both";
1298
+ interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
1299
+ /** Which scrollbars to render. Default `vertical`. */
1300
+ orientation?: ScrollAreaOrientation;
1301
+ }
1302
+ /**
1303
+ * Silica ScrollArea — a panel with custom overlay scrollbars.
1304
+ *
1305
+ * <ScrollArea className="h-64 w-72">
1306
+ * <div className="p-4">…long content…</div>
1307
+ * </ScrollArea>
1308
+ *
1309
+ * Give it a bounded size (via `className`/`style`); the content scrolls inside
1310
+ * and the overlay scrollbars fade in on hover. Use `orientation="both"` for a
1311
+ * two-axis panel.
1312
+ */
1313
+ declare const ScrollArea: React.ForwardRefExoticComponent<ScrollAreaProps & React.RefAttributes<HTMLDivElement>>;
1314
+
1315
+ type PositionerProps$9 = React.ComponentProps<typeof PreviewCard$1.Positioner>;
1316
+ type PreviewCardSide = NonNullable<PositionerProps$9["side"]>;
1317
+ type PreviewCardAlign = NonNullable<PositionerProps$9["align"]>;
1318
+ interface PreviewCardProps {
1319
+ /** The trigger (usually a link). Base UI merges hover/focus behavior onto it. */
1320
+ children: React.ReactElement;
1321
+ /** The card body shown on hover/focus. */
1322
+ content: React.ReactNode;
1323
+ /** Preferred side. Default `bottom` (flips to avoid collisions). */
1324
+ side?: PreviewCardSide;
1325
+ /** Alignment along that side. Default `center`. */
1326
+ align?: PreviewCardAlign;
1327
+ /** Gap between trigger and card, in px. Default `8`. */
1328
+ sideOffset?: number;
1329
+ /** Hover-open delay in ms. */
1330
+ delay?: number;
1331
+ /** Close delay in ms. */
1332
+ closeDelay?: number;
1333
+ /** Controlled open state. */
1334
+ open?: boolean;
1335
+ /** Uncontrolled initial open state. */
1336
+ defaultOpen?: boolean;
1337
+ onOpenChange?: (open: boolean) => void;
1338
+ /** Show the little arrow. Default `false`. */
1339
+ arrow?: boolean;
1340
+ /** Extra class on the card surface. */
1341
+ className?: string;
1342
+ }
1343
+ /**
1344
+ * Silica PreviewCard — a hover/focus link preview (hovercard). Behavior from
1345
+ * Base UI, look from Silica's `.preview-card` CSS.
1346
+ *
1347
+ * <PreviewCard content={<UserPreview user={u} />}>
1348
+ * <Link href={u.url}>@{u.handle}</Link>
1349
+ * </PreviewCard>
1350
+ */
1351
+ declare function PreviewCard({ children, content, side, align, sideOffset, delay, closeDelay, open, defaultOpen, onOpenChange, arrow, className, }: PreviewCardProps): React.JSX.Element;
1352
+
1353
+ type Styled$g<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1354
+ className?: string;
1355
+ };
1356
+ type ToolbarProps = Styled$g<typeof Toolbar$1.Root>;
1357
+ type ToolbarButtonProps = Styled$g<typeof Toolbar$1.Button>;
1358
+ type ToolbarGroupProps = Styled$g<typeof Toolbar$1.Group>;
1359
+ type ToolbarLinkProps = Styled$g<typeof Toolbar$1.Link>;
1360
+ type ToolbarSeparatorProps = Styled$g<typeof Toolbar$1.Separator>;
1361
+ /**
1362
+ * Silica Toolbar — a group of controls with roving arrow-key focus.
1363
+ *
1364
+ * <Toolbar aria-label="Formatting">
1365
+ * <ToolbarButton><BoldIcon /></ToolbarButton>
1366
+ * <ToolbarButton><ItalicIcon /></ToolbarButton>
1367
+ * <ToolbarSeparator />
1368
+ * <ToolbarLink href="/help">Help</ToolbarLink>
1369
+ * </Toolbar>
1370
+ */
1371
+ declare const Toolbar: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toolbar.ToolbarRootProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1372
+ className?: string;
1373
+ } & React.RefAttributes<HTMLDivElement>>;
1374
+ declare const ToolbarButton: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toolbar.ToolbarButtonProps & React.RefAttributes<HTMLButtonElement>, "ref">, "className"> & {
1375
+ className?: string;
1376
+ } & React.RefAttributes<HTMLButtonElement>>;
1377
+ declare const ToolbarGroup: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toolbar.ToolbarGroupProps & React.RefAttributes<HTMLElement>, "ref">, "className"> & {
1378
+ className?: string;
1379
+ } & React.RefAttributes<HTMLDivElement>>;
1380
+ declare const ToolbarLink: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toolbar.ToolbarLinkProps & React.RefAttributes<HTMLAnchorElement>, "ref">, "className"> & {
1381
+ className?: string;
1382
+ } & React.RefAttributes<HTMLAnchorElement>>;
1383
+ declare const ToolbarSeparator: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toolbar.ToolbarSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1384
+ className?: string;
1385
+ } & React.RefAttributes<HTMLDivElement>>;
1386
+
1387
+ interface ThemeControllerProps {
1388
+ /** The themes to cycle through. Default `["light", "dark"]`. */
1389
+ themes?: string[];
1390
+ /** Controlled current theme. */
1391
+ value?: string;
1392
+ /** Uncontrolled initial theme (falls back to stored value, then the target's
1393
+ * current `data-theme`, then the first theme). */
1394
+ defaultValue?: string;
1395
+ /** Called with the new theme when it changes. */
1396
+ onChange?: (theme: string) => void;
1397
+ /** Element to set `data-theme` on. Default `document.documentElement`. */
1398
+ target?: HTMLElement | null | (() => HTMLElement | null);
1399
+ /** localStorage key for persistence; `null` disables it. Default `"silica-theme"`. */
1400
+ storageKey?: string | null;
1401
+ /** Show the current theme name next to the icon. */
1402
+ labels?: boolean;
1403
+ /** Button variant. Default `ghost`. */
1404
+ variant?: ButtonVariant;
1405
+ /** Button color. Default `neutral`. */
1406
+ color?: ButtonColor;
1407
+ className?: string;
1408
+ "aria-label"?: string;
1409
+ }
1410
+ /**
1411
+ * Silica ThemeController — a control that switches the active `data-theme`.
1412
+ *
1413
+ * <ThemeController /> // light ⇄ dark toggle
1414
+ * <ThemeController themes={["light","dark","dim"]} labels />
1415
+ *
1416
+ * Applies the theme to `document.documentElement` (or a `target`) and persists
1417
+ * it to localStorage. Cycles to the next theme on click; a plain light/dark pair
1418
+ * shows a sun/moon toggle.
1419
+ */
1420
+ declare function ThemeController({ themes, value, defaultValue, onChange, target, storageKey, labels, variant, color, className, "aria-label": ariaLabel, }: ThemeControllerProps): React.JSX.Element;
1421
+
1422
+ type Styled$f<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1423
+ className?: string;
1424
+ };
1425
+ type PositionerProps$8 = React.ComponentProps<typeof NavigationMenu$1.Positioner>;
1426
+ type NavigationMenuSide = NonNullable<PositionerProps$8["side"]>;
1427
+ type NavigationMenuAlign = NonNullable<PositionerProps$8["align"]>;
1428
+ interface NavigationMenuProps extends Omit<Styled$f<typeof NavigationMenu$1.Root>, "children"> {
1429
+ children?: React.ReactNode;
1430
+ /** Preferred side for the dropdown panel. Default `bottom`. */
1431
+ side?: NavigationMenuSide;
1432
+ /** Alignment. Default `center`. */
1433
+ align?: NavigationMenuAlign;
1434
+ /** Gap between the bar and the panel, in px. Default `8`. */
1435
+ sideOffset?: number;
1436
+ }
1437
+ /**
1438
+ * Silica NavigationMenu — a site-nav bar with rich dropdown panels (mega menu).
1439
+ * Behavior from Base UI (shared animated viewport that resizes between panels);
1440
+ * look from Silica.
1441
+ *
1442
+ * <NavigationMenu>
1443
+ * <NavigationMenuItem>
1444
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
1445
+ * <NavigationMenuContent>
1446
+ * <ul className="grid gap-1">…</ul>
1447
+ * </NavigationMenuContent>
1448
+ * </NavigationMenuItem>
1449
+ * <NavigationMenuItem>
1450
+ * <NavigationMenuLink href="/pricing">Pricing</NavigationMenuLink>
1451
+ * </NavigationMenuItem>
1452
+ * </NavigationMenu>
1453
+ */
1454
+ declare function NavigationMenu({ children, className, side, align, sideOffset, ...rest }: NavigationMenuProps): React.JSX.Element;
1455
+ type NavigationMenuItemProps = Styled$f<typeof NavigationMenu$1.Item>;
1456
+ /** A bar item — holds either a Trigger + Content, or a Link. */
1457
+ declare const NavigationMenuItem: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_navigation_menu.NavigationMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1458
+ className?: string;
1459
+ } & React.RefAttributes<HTMLDivElement>>;
1460
+ type NavigationMenuTriggerProps = Styled$f<typeof NavigationMenu$1.Trigger>;
1461
+ /** Opens this item's panel; carries an auto-rotating chevron. */
1462
+ declare const NavigationMenuTrigger: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_navigation_menu.NavigationMenuTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref">, "className"> & {
1463
+ className?: string;
1464
+ } & React.RefAttributes<HTMLButtonElement>>;
1465
+ type NavigationMenuContentProps = Styled$f<typeof NavigationMenu$1.Content>;
1466
+ /** The dropdown panel for an item (teleported into the shared viewport). */
1467
+ declare const NavigationMenuContent: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_navigation_menu.NavigationMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1468
+ className?: string;
1469
+ } & React.RefAttributes<HTMLDivElement>>;
1470
+ type NavigationMenuLinkProps = Styled$f<typeof NavigationMenu$1.Link>;
1471
+ /** A plain bar link (no panel). */
1472
+ declare const NavigationMenuLink: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_navigation_menu.NavigationMenuLinkProps & React.RefAttributes<HTMLAnchorElement>, "ref">, "className"> & {
1473
+ className?: string;
1474
+ } & React.RefAttributes<HTMLAnchorElement>>;
1475
+
1476
+ type Styled$e<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1477
+ className?: string;
1478
+ };
1479
+ type PositionerProps$7 = React.ComponentProps<typeof Menu$1.Positioner>;
1480
+ type MenubarSide = NonNullable<PositionerProps$7["side"]>;
1481
+ type MenubarAlign = NonNullable<PositionerProps$7["align"]>;
1482
+ type MenubarProps = Styled$e<typeof Menubar$1>;
1483
+ /**
1484
+ * Silica Menubar — a bar of menus (File / Edit / View …). Behavior from Base UI
1485
+ * (arrow between menus, hover to switch once open, roving focus). Each menu is a
1486
+ * `MenubarMenu`; its popup reuses the shared `.dropdown*` surface.
1487
+ *
1488
+ * <Menubar>
1489
+ * <MenubarMenu>
1490
+ * <MenubarTrigger>File</MenubarTrigger>
1491
+ * <MenubarContent>
1492
+ * <MenubarItem>New</MenubarItem>
1493
+ * <MenubarSeparator />
1494
+ * <MenubarItem>Exit</MenubarItem>
1495
+ * </MenubarContent>
1496
+ * </MenubarMenu>
1497
+ * </Menubar>
1498
+ */
1499
+ declare const Menubar: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_menubar.MenubarProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1500
+ className?: string;
1501
+ } & React.RefAttributes<HTMLDivElement>>;
1502
+ /** A single menu within the bar. */
1503
+ declare const MenubarMenu: typeof Menu$1.Root;
1504
+ type MenubarTriggerProps = Styled$e<typeof Menu$1.Trigger>;
1505
+ declare const MenubarTrigger: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_menu.MenuTriggerProps<unknown> & React.RefAttributes<HTMLElement>, "ref">, "className"> & {
1506
+ className?: string;
1507
+ } & React.RefAttributes<HTMLButtonElement>>;
1508
+ interface MenubarContentProps extends Omit<Styled$e<typeof Menu$1.Popup>, "children"> {
1509
+ children?: React.ReactNode;
1510
+ side?: MenubarSide;
1511
+ align?: MenubarAlign;
1512
+ sideOffset?: number;
1513
+ }
1514
+ /** Portal + positioner + the menu popup (shared dropdown surface). */
1515
+ declare function MenubarContent({ className, children, side, align, sideOffset, ...rest }: MenubarContentProps): React.JSX.Element;
1516
+ declare function MenubarItem({ className, ...rest }: Styled$e<typeof Menu$1.Item>): React.JSX.Element;
1517
+ declare function MenubarSeparator({ className, ...rest }: Styled$e<typeof Menu$1.Separator>): React.JSX.Element;
1518
+ declare function MenubarGroup(props: React.ComponentProps<typeof Menu$1.Group>): React.JSX.Element;
1519
+ declare function MenubarLabel({ className, ...rest }: Styled$e<typeof Menu$1.GroupLabel>): React.JSX.Element;
1520
+
1521
+ type Styled$d<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1522
+ className?: string;
1523
+ };
1524
+ type ContextMenuProps = React.ComponentProps<typeof ContextMenu$1.Root>;
1525
+ /**
1526
+ * Silica ContextMenu — a right-click menu. Behavior from Base UI (opens at the
1527
+ * pointer, roving focus, typeahead, dismissal); its popup reuses the shared
1528
+ * `.dropdown*` surface.
1529
+ *
1530
+ * <ContextMenu>
1531
+ * <ContextMenuTrigger className="grid h-40 place-items-center rounded-box border border-dashed">
1532
+ * Right-click here
1533
+ * </ContextMenuTrigger>
1534
+ * <ContextMenuContent>
1535
+ * <ContextMenuGroup>
1536
+ * <ContextMenuLabel>Actions</ContextMenuLabel>
1537
+ * <ContextMenuItem>Cut</ContextMenuItem>
1538
+ * <ContextMenuItem>Copy</ContextMenuItem>
1539
+ * </ContextMenuGroup>
1540
+ * <ContextMenuSeparator />
1541
+ * <ContextMenuItem disabled>Paste</ContextMenuItem>
1542
+ * </ContextMenuContent>
1543
+ * </ContextMenu>
1544
+ */
1545
+ declare const ContextMenu: typeof ContextMenu$1.Root;
1546
+ type ContextMenuTriggerProps = Styled$d<typeof ContextMenu$1.Trigger>;
1547
+ /** The right-click area. */
1548
+ declare const ContextMenuTrigger: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_context_menu.ContextMenuTriggerProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1549
+ className?: string;
1550
+ } & React.RefAttributes<HTMLDivElement>>;
1551
+ interface ContextMenuContentProps extends Omit<Styled$d<typeof ContextMenu$1.Popup>, "children"> {
1552
+ children?: React.ReactNode;
1553
+ }
1554
+ /** Portal + positioner + the menu popup (shared dropdown surface). */
1555
+ declare function ContextMenuContent({ className, children, ...rest }: ContextMenuContentProps): React.JSX.Element;
1556
+ declare function ContextMenuItem({ className, ...rest }: Styled$d<typeof ContextMenu$1.Item>): React.JSX.Element;
1557
+ declare function ContextMenuSeparator({ className, ...rest }: Styled$d<typeof ContextMenu$1.Separator>): React.JSX.Element;
1558
+ declare function ContextMenuGroup(props: React.ComponentProps<typeof ContextMenu$1.Group>): React.JSX.Element;
1559
+ declare function ContextMenuLabel({ className, ...rest }: Styled$d<typeof ContextMenu$1.GroupLabel>): React.JSX.Element;
1560
+
1561
+ type Styled$c<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1562
+ className?: string;
1563
+ };
1564
+ type ToggleGroupProps = Styled$c<typeof ToggleGroup$1>;
1565
+ type ToggleGroupItemProps = Styled$c<typeof Toggle$1>;
1566
+ /**
1567
+ * Silica ToggleGroup — a segmented control (single- or multi-select). Behavior
1568
+ * from Base UI (roving focus, pressed state); look from Silica. This is the
1569
+ * button-based control — for an on/off switch use `Toggle`.
1570
+ *
1571
+ * <ToggleGroup defaultValue={["list"]}>
1572
+ * <ToggleGroupItem value="list">List</ToggleGroupItem>
1573
+ * <ToggleGroupItem value="grid">Grid</ToggleGroupItem>
1574
+ * </ToggleGroup>
1575
+ */
1576
+ declare const ToggleGroup: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toggle_group.ToggleGroupProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1577
+ className?: string;
1578
+ } & React.RefAttributes<HTMLDivElement>>;
1579
+ /** One selectable button within a ToggleGroup. */
1580
+ declare const ToggleGroupItem: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_toggle.ToggleProps & React.RefAttributes<HTMLButtonElement>, "ref">, "className"> & {
1581
+ className?: string;
1582
+ } & React.RefAttributes<HTMLButtonElement>>;
1583
+
1584
+ type Styled$b<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1585
+ className?: string;
1586
+ };
1587
+ type FieldProps = Styled$b<typeof Field$1.Root>;
1588
+ type FieldLabelProps = Styled$b<typeof Field$1.Label>;
1589
+ type FieldControlProps = Styled$b<typeof Field$1.Control>;
1590
+ type FieldDescriptionProps = Styled$b<typeof Field$1.Description>;
1591
+ type FieldErrorProps = Styled$b<typeof Field$1.Error>;
1592
+ /**
1593
+ * Silica Field — an accessible form field. Base UI wires the label, control,
1594
+ * description, and error together (ids, aria, validity tracking); Silica styles
1595
+ * them. Wrap any Silica control.
1596
+ *
1597
+ * <Field name="email">
1598
+ * <FieldLabel>Email</FieldLabel>
1599
+ * <FieldControl type="email" required placeholder="you@example.com" />
1600
+ * <FieldDescription>We'll never share it.</FieldDescription>
1601
+ * <FieldError />
1602
+ * </Field>
1603
+ *
1604
+ * For a non-input control, pass it via `render`:
1605
+ * <FieldControl render={<Textarea />} />
1606
+ */
1607
+ declare const Field: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_field.FieldRootProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1608
+ className?: string;
1609
+ } & React.RefAttributes<HTMLDivElement>>;
1610
+ declare const FieldLabel: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_field.FieldLabelProps & React.RefAttributes<any>, "ref">, "className"> & {
1611
+ className?: string;
1612
+ } & React.RefAttributes<HTMLLabelElement>>;
1613
+ /**
1614
+ * The control. Defaults to a native input styled as a Silica `.input`; when you
1615
+ * pass `render` (a Textarea/Select/etc.), it carries its own styling instead.
1616
+ */
1617
+ declare const FieldControl: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_field.FieldControlProps & React.RefAttributes<HTMLInputElement>, "ref">, "className"> & {
1618
+ className?: string;
1619
+ } & React.RefAttributes<HTMLInputElement>>;
1620
+ declare const FieldDescription: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_field.FieldDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref">, "className"> & {
1621
+ className?: string;
1622
+ } & React.RefAttributes<HTMLParagraphElement>>;
1623
+ /** Error message; renders only when the field is invalid. */
1624
+ declare const FieldError: React.ForwardRefExoticComponent<Omit<Omit<_base_ui_components_react_field.FieldErrorProps & React.RefAttributes<HTMLDivElement>, "ref">, "className"> & {
1625
+ className?: string;
1626
+ } & React.RefAttributes<HTMLParagraphElement>>;
1627
+
1628
+ type FormProps = React.ComponentPropsWithoutRef<typeof Form$1>;
1629
+ /**
1630
+ * Silica Form — a `<form>` that coordinates its Fields' validation. Behavior
1631
+ * from Base UI: it runs each Field's validation on submit, focuses the first
1632
+ * invalid control, and accepts server-returned `errors` keyed by field `name`.
1633
+ * Presentational only otherwise — lay it out with `Field`s and utilities.
1634
+ *
1635
+ * <Form errors={serverErrors} onSubmit={…}>
1636
+ * <Field name="email">…</Field>
1637
+ * <Button type="submit">Save</Button>
1638
+ * </Form>
1639
+ */
1640
+ declare const Form: React.ForwardRefExoticComponent<Omit<Form$1.Props<Record<string, any>> & {
1641
+ ref?: React.Ref<HTMLFormElement>;
1642
+ }, "ref"> & React.RefAttributes<HTMLFormElement>>;
1643
+
1644
+ type RadioGroupOrientation = "vertical" | "horizontal";
1645
+ interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
1646
+ /** Controlled selected value. */
1647
+ value?: string;
1648
+ /** Uncontrolled initial value. */
1649
+ defaultValue?: string;
1650
+ /** Fires with the newly-selected value. */
1651
+ onValueChange?: (value: string) => void;
1652
+ /** Shared radio `name` (auto-generated if omitted). */
1653
+ name?: string;
1654
+ /** Stack (`vertical`, default) or row (`horizontal`). */
1655
+ orientation?: RadioGroupOrientation;
1656
+ /** Disable every option. */
1657
+ disabled?: boolean;
1658
+ /** Default accent color for the options. */
1659
+ color?: SilicaColor;
1660
+ /** Default size for the options. */
1661
+ size?: SilicaSize;
1662
+ }
1663
+ /**
1664
+ * Silica RadioGroup — a managed set of radios (native inputs, so arrow-key
1665
+ * navigation comes free). Pair with `RadioOption`s.
1666
+ *
1667
+ * <RadioGroup defaultValue="card" name="pay">
1668
+ * <RadioOption value="card">Card</RadioOption>
1669
+ * <RadioOption value="ach">Bank transfer</RadioOption>
1670
+ * </RadioGroup>
1671
+ */
1672
+ declare function RadioGroup({ value, defaultValue, onValueChange, name, orientation, disabled, color, size, className, children, ...rest }: RadioGroupProps): React.JSX.Element;
1673
+ interface RadioOptionProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, "onChange"> {
1674
+ /** This option's value. */
1675
+ value: string;
1676
+ disabled?: boolean;
1677
+ color?: SilicaColor;
1678
+ size?: SilicaSize;
1679
+ }
1680
+ /** One labeled radio within a RadioGroup. */
1681
+ declare function RadioOption({ value, disabled, color, size, className, children, ...rest }: RadioOptionProps): React.JSX.Element;
1682
+
1683
+ type CheckboxGroupOrientation = "vertical" | "horizontal";
1684
+ interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
1685
+ /** Controlled array of checked values. */
1686
+ value?: string[];
1687
+ /** Uncontrolled initial checked values. */
1688
+ defaultValue?: string[];
1689
+ /** Fires with the new array of checked values. */
1690
+ onValueChange?: (value: string[]) => void;
1691
+ /** Stack (`vertical`, default) or row (`horizontal`). */
1692
+ orientation?: CheckboxGroupOrientation;
1693
+ /** Disable every option. */
1694
+ disabled?: boolean;
1695
+ /** Default accent color for the options. */
1696
+ color?: SilicaColor;
1697
+ /** Default size for the options. */
1698
+ size?: SilicaSize;
1699
+ }
1700
+ /**
1701
+ * Silica CheckboxGroup — a managed set of checkboxes whose value is the array of
1702
+ * checked items. Pair with `CheckboxOption`s.
1703
+ *
1704
+ * <CheckboxGroup defaultValue={["email"]}>
1705
+ * <CheckboxOption value="email">Email</CheckboxOption>
1706
+ * <CheckboxOption value="sms">SMS</CheckboxOption>
1707
+ * </CheckboxGroup>
1708
+ */
1709
+ declare function CheckboxGroup({ value, defaultValue, onValueChange, orientation, disabled, color, size, className, children, ...rest }: CheckboxGroupProps): React.JSX.Element;
1710
+ interface CheckboxOptionProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, "onChange"> {
1711
+ /** This option's value. */
1712
+ value: string;
1713
+ disabled?: boolean;
1714
+ color?: SilicaColor;
1715
+ size?: SilicaSize;
1716
+ }
1717
+ /** One labeled checkbox within a CheckboxGroup. */
1718
+ declare function CheckboxOption({ value, disabled, color, size, className, children, ...rest }: CheckboxOptionProps): React.JSX.Element;
1719
+
1720
+ type Styled$a<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1721
+ className?: string;
1722
+ };
1723
+ type SliderColor = SilicaColor;
1724
+ type SliderSize = "sm" | "md" | "lg";
1725
+ interface SliderProps extends Omit<Styled$a<typeof Slider$1.Root>, "color"> {
1726
+ /** Accent for the filled track + thumb(s). */
1727
+ color?: SilicaColor;
1728
+ /** Rail thickness + thumb diameter. */
1729
+ size?: SliderSize;
1730
+ /** Show a live numeric readout beside the track. */
1731
+ showValue?: boolean;
1732
+ }
1733
+ /**
1734
+ * Silica Slider — a rich range input (Base UI behavior). Pass a number for a
1735
+ * single thumb, or a tuple for a two-thumb range selection; the number of thumbs
1736
+ * follows the shape of `value`/`defaultValue`.
1737
+ *
1738
+ * <Slider defaultValue={40} color="primary" showValue />
1739
+ * <Slider defaultValue={[20, 60]} min={0} max={100} step={5} />
1740
+ * <Slider orientation="vertical" defaultValue={50} />
1741
+ */
1742
+ declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>>;
1743
+
1744
+ type Styled$9<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1745
+ className?: string;
1746
+ };
1747
+ type SwitchColor = SilicaColor;
1748
+ type SwitchSize = SilicaSize;
1749
+ interface SwitchProps extends Omit<Styled$9<typeof Switch$1.Root>, "color"> {
1750
+ /** Accent for the checked track. */
1751
+ color?: SilicaColor;
1752
+ /** Track height (width follows at 1.75×). */
1753
+ size?: SilicaSize;
1754
+ }
1755
+ /**
1756
+ * Silica Switch — an accessible on/off toggle (Base UI: `role="switch"` with a
1757
+ * hidden real input, so it submits in a form and pairs with `Field`). The CSS
1758
+ * cousin `Toggle` is a bare restyled checkbox; reach for `Switch` when you want
1759
+ * proper switch semantics or form integration.
1760
+ *
1761
+ * <Switch defaultChecked color="success" />
1762
+ * <Switch checked={on} onCheckedChange={setOn} />
1763
+ */
1764
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLElement>>;
1765
+
1766
+ type Styled$8<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1767
+ className?: string;
1768
+ };
1769
+ type CollapsibleProps = Styled$8<typeof Collapsible$1.Root>;
1770
+ /**
1771
+ * Silica Collapsible — a single show/hide disclosure (Base UI behavior, animated
1772
+ * height). The primitive behind `Accordion`; use it when you have just one
1773
+ * region to reveal.
1774
+ *
1775
+ * <Collapsible defaultOpen>
1776
+ * <CollapsibleTrigger>Shipping details</CollapsibleTrigger>
1777
+ * <CollapsiblePanel>Ships in 2–3 business days.</CollapsiblePanel>
1778
+ * </Collapsible>
1779
+ */
1780
+ declare function Collapsible({ className, ...rest }: CollapsibleProps): React.JSX.Element;
1781
+ interface CollapsibleTriggerProps extends Styled$8<typeof Collapsible$1.Trigger> {
1782
+ /** Set false to omit the built-in chevron. */
1783
+ chevron?: boolean;
1784
+ }
1785
+ declare function CollapsibleTrigger({ className, children, chevron, ...rest }: CollapsibleTriggerProps): React.JSX.Element;
1786
+ interface CollapsiblePanelProps extends Styled$8<typeof Collapsible$1.Panel> {
1787
+ children?: React.ReactNode;
1788
+ }
1789
+ declare function CollapsiblePanel({ className, children, ...rest }: CollapsiblePanelProps): React.JSX.Element;
1790
+
1791
+ type Styled$7<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1792
+ className?: string;
1793
+ };
1794
+ type AlertDialogProps = React.ComponentProps<typeof AlertDialog$1.Root>;
1795
+ /**
1796
+ * Silica AlertDialog — a confirmation modal from Base UI. Unlike `Dialog`, its
1797
+ * backdrop is inert: clicking outside will NOT dismiss it, so the user can't
1798
+ * lose the decision by tapping away (Escape still cancels, per the ARIA alert
1799
+ * dialog pattern). Reach for it on destructive or consequential actions; reuses
1800
+ * the Dialog surface styling.
1801
+ *
1802
+ * <AlertDialog>
1803
+ * <AlertDialogTrigger><Button color="error">Delete account</Button></AlertDialogTrigger>
1804
+ * <AlertDialogContent>
1805
+ * <AlertDialogTitle>Delete account?</AlertDialogTitle>
1806
+ * <AlertDialogDescription>This permanently removes your data.</AlertDialogDescription>
1807
+ * <div className="mt-4 flex justify-end gap-2">
1808
+ * <AlertDialogClose><Button variant="ghost">Cancel</Button></AlertDialogClose>
1809
+ * <AlertDialogClose><Button color="error" onClick={destroy}>Delete</Button></AlertDialogClose>
1810
+ * </div>
1811
+ * </AlertDialogContent>
1812
+ * </AlertDialog>
1813
+ */
1814
+ declare const AlertDialog: typeof AlertDialog$1.Root;
1815
+ /** Wraps its single child element as the element that opens the dialog. */
1816
+ declare function AlertDialogTrigger({ children, }: {
1817
+ children: React.ReactElement;
1818
+ }): React.JSX.Element;
1819
+ /** Wraps its single child element as an element that closes the dialog. */
1820
+ declare function AlertDialogClose({ children, }: {
1821
+ children: React.ReactElement;
1822
+ }): React.JSX.Element;
1823
+ interface AlertDialogContentProps extends Omit<Styled$7<typeof AlertDialog$1.Popup>, "children"> {
1824
+ children?: React.ReactNode;
1825
+ /** Class for the backdrop layer. */
1826
+ backdropClassName?: string;
1827
+ }
1828
+ /** Portals + backdrop + the centered popup surface in one (shares Dialog styles). */
1829
+ declare function AlertDialogContent({ className, backdropClassName, children, ...rest }: AlertDialogContentProps): React.JSX.Element;
1830
+ declare function AlertDialogTitle({ className, ...rest }: Styled$7<typeof AlertDialog$1.Title>): React.JSX.Element;
1831
+ declare function AlertDialogDescription({ className, ...rest }: Styled$7<typeof AlertDialog$1.Description>): React.JSX.Element;
1832
+
1833
+ interface FilterProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "color"> {
1834
+ /** Controlled selected value (`undefined` = nothing selected). */
1835
+ value?: string;
1836
+ /** Uncontrolled initial value. */
1837
+ defaultValue?: string;
1838
+ /** Fires with the new value, or `undefined` when reset. */
1839
+ onValueChange?: (value: string | undefined) => void;
1840
+ /** Accent for the selected chip. */
1841
+ color?: SilicaColor;
1842
+ /** Disable every chip + the reset. */
1843
+ disabled?: boolean;
1844
+ /** Render the reset (×) once something is selected (default true). */
1845
+ showReset?: boolean;
1846
+ /** Accessible label for the reset control. */
1847
+ resetLabel?: string;
1848
+ }
1849
+ /**
1850
+ * Silica Filter — a single-select row of chips with a reset, for faceted
1851
+ * product/category filtering. Radio semantics: one chip at a time; the reset
1852
+ * clears the choice. Pair with `FilterItem`s.
1853
+ *
1854
+ * <Filter defaultValue="all" color="primary">
1855
+ * <FilterItem value="all">All</FilterItem>
1856
+ * <FilterItem value="apparel">Apparel</FilterItem>
1857
+ * <FilterItem value="gear">Gear</FilterItem>
1858
+ * </Filter>
1859
+ */
1860
+ declare function Filter({ value, defaultValue, onValueChange, color, disabled, showReset, resetLabel, className, children, ...rest }: FilterProps): React.JSX.Element;
1861
+ interface FilterItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
1862
+ /** This chip's value. */
1863
+ value: string;
1864
+ }
1865
+ /** One selectable chip within a Filter. */
1866
+ declare const FilterItem: React.ForwardRefExoticComponent<FilterItemProps & React.RefAttributes<HTMLButtonElement>>;
1867
+
1868
+ type Styled$6<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1869
+ className?: string;
1870
+ };
1871
+ type PositionerProps$6 = React.ComponentProps<typeof Select$1.Positioner>;
1872
+ type SelectSide = NonNullable<PositionerProps$6["side"]>;
1873
+ type SelectAlign = NonNullable<PositionerProps$6["align"]>;
1874
+ type SelectColor = SilicaColor;
1875
+ type SelectSize = SilicaSize;
1876
+ interface SelectItemProps extends Omit<Styled$6<typeof Select$1.Item>, "children"> {
1877
+ /** The value stored when this item is chosen. */
1878
+ value: unknown;
1879
+ children?: React.ReactNode;
1880
+ }
1881
+ /** One option. Renders its own selected-check indicator. */
1882
+ declare function SelectItem({ className, children, ...rest }: SelectItemProps): React.JSX.Element;
1883
+ /** Groups related items; pair with a `SelectGroupLabel`. */
1884
+ declare function SelectGroup(props: React.ComponentProps<typeof Select$1.Group>): React.JSX.Element;
1885
+ /** A heading for a `SelectGroup` — MUST be rendered inside one. */
1886
+ declare function SelectGroupLabel({ className, ...rest }: Styled$6<typeof Select$1.GroupLabel>): React.JSX.Element;
1887
+ declare function SelectSeparator({ className, ...rest }: Styled$6<typeof Select$1.Separator>): React.JSX.Element;
1888
+ interface SelectOptionData {
1889
+ label: React.ReactNode;
1890
+ value: unknown;
1891
+ }
1892
+ type SelectItems = Record<string, React.ReactNode> | ReadonlyArray<SelectOptionData>;
1893
+ interface SelectProps {
1894
+ /** Controlled value (array when `multiple`). */
1895
+ value?: unknown;
1896
+ /** Uncontrolled initial value. */
1897
+ defaultValue?: unknown;
1898
+ /** Fires with the newly-selected value. */
1899
+ onValueChange?: (value: unknown, eventDetails?: unknown) => void;
1900
+ /** Allow selecting multiple items (value becomes an array). */
1901
+ multiple?: boolean;
1902
+ /**
1903
+ * Value→label map used to render the trigger's selected label (and, if no
1904
+ * children are given, to auto-render the options). A record (`{value: label}`)
1905
+ * or an array (`[{ value, label }]`).
1906
+ */
1907
+ items?: SelectItems;
1908
+ /** Field name for form submission. */
1909
+ name?: string;
1910
+ disabled?: boolean;
1911
+ required?: boolean;
1912
+ readOnly?: boolean;
1913
+ /** Shown on the trigger while nothing is selected. */
1914
+ placeholder?: React.ReactNode;
1915
+ /** Accent for the trigger border + focus ring (shares NativeSelect colors). */
1916
+ color?: SelectColor;
1917
+ /** Trigger height; matches same-size Inputs/Buttons. */
1918
+ size?: SelectSize;
1919
+ side?: SelectSide;
1920
+ align?: SelectAlign;
1921
+ sideOffset?: number;
1922
+ /** Overlay the selected item on the trigger (native-select style). Default false. */
1923
+ alignItemWithTrigger?: boolean;
1924
+ /** Class for the trigger button. */
1925
+ className?: string;
1926
+ /** Class for the popup surface. */
1927
+ popupClassName?: string;
1928
+ /** Accessible name when there's no associated visible label. */
1929
+ "aria-label"?: string;
1930
+ "aria-labelledby"?: string;
1931
+ id?: string;
1932
+ /** `SelectItem`/`SelectGroup`/`SelectSeparator`s. Omit to auto-render `items`. */
1933
+ children?: React.ReactNode;
1934
+ }
1935
+ /**
1936
+ * Silica Select — a fully-styled, keyboard-driven listbox (Base UI: typeahead,
1937
+ * roving focus, portalled popup, optional multi-select). The trigger matches
1938
+ * `NativeSelect` pixel-for-pixel; reach for `NativeSelect` only when you need a
1939
+ * bare platform `<select>`.
1940
+ *
1941
+ * // items-driven (auto-renders options, powers the trigger label):
1942
+ * <Select
1943
+ * items={{ react: "React", vue: "Vue", svelte: "Svelte" }}
1944
+ * value={fw} onValueChange={setFw} placeholder="Framework" color="primary"
1945
+ * />
1946
+ *
1947
+ * // composable:
1948
+ * <Select value={fw} onValueChange={setFw} items={labels} placeholder="Framework">
1949
+ * <SelectGroup>
1950
+ * <SelectGroupLabel>Frontend</SelectGroupLabel>
1951
+ * <SelectItem value="react">React</SelectItem>
1952
+ * <SelectItem value="vue">Vue</SelectItem>
1953
+ * </SelectGroup>
1954
+ * </Select>
1955
+ */
1956
+ declare function Select({ value, defaultValue, onValueChange, multiple, items, name, disabled, required, readOnly, placeholder, color, size, side, align, sideOffset, alignItemWithTrigger, className, popupClassName, id, children, ...aria }: SelectProps): React.JSX.Element;
1957
+
1958
+ type Styled$5<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
1959
+ className?: string;
1960
+ };
1961
+ type PositionerProps$5 = React.ComponentProps<typeof Combobox$1.Positioner>;
1962
+ type ComboboxSide = NonNullable<PositionerProps$5["side"]>;
1963
+ type ComboboxAlign = NonNullable<PositionerProps$5["align"]>;
1964
+ type ComboboxColor = SilicaColor;
1965
+ type ComboboxSize = SilicaSize;
1966
+ interface ComboboxItemProps extends Omit<Styled$5<typeof Combobox$1.Item>, "children"> {
1967
+ value: unknown;
1968
+ children?: React.ReactNode;
1969
+ /** Show the leading selected-check (default true). */
1970
+ indicator?: boolean;
1971
+ }
1972
+ /** One option row within a Combobox. */
1973
+ declare function ComboboxItem({ className, children, indicator, ...rest }: ComboboxItemProps): React.JSX.Element;
1974
+ interface ComboboxProps {
1975
+ /** The full option set (strings or `{ value, label }`); Base UI filters it. */
1976
+ items: readonly unknown[];
1977
+ /** Controlled selected value. */
1978
+ value?: unknown;
1979
+ /** Uncontrolled initial value. */
1980
+ defaultValue?: unknown;
1981
+ /** Fires with the newly-selected value. */
1982
+ onValueChange?: (value: unknown, eventDetails?: unknown) => void;
1983
+ name?: string;
1984
+ disabled?: boolean;
1985
+ required?: boolean;
1986
+ placeholder?: string;
1987
+ /** Shown in the popup when nothing matches the query. */
1988
+ emptyMessage?: React.ReactNode;
1989
+ /** Accent for the input border + focus ring (shares Input colors). */
1990
+ color?: ComboboxColor;
1991
+ /** Input height; matches same-size Inputs. */
1992
+ size?: ComboboxSize;
1993
+ /** Show the clear (×) button (default true). */
1994
+ clearable?: boolean;
1995
+ side?: ComboboxSide;
1996
+ align?: ComboboxAlign;
1997
+ sideOffset?: number;
1998
+ /** Class for the text input. */
1999
+ className?: string;
2000
+ /** Class for the popup surface. */
2001
+ popupClassName?: string;
2002
+ /** For object items, map an item to its display string (default: `.label`). */
2003
+ itemToStringLabel?: (item: unknown) => string;
2004
+ /** Override how each filtered item renders. */
2005
+ renderItem?: (item: unknown, index: number) => React.ReactNode;
2006
+ "aria-label"?: string;
2007
+ "aria-labelledby"?: string;
2008
+ id?: string;
2009
+ }
2010
+ /**
2011
+ * Silica Combobox — a searchable, filtered listbox (Base UI: typeahead filtering,
2012
+ * roving focus, portalled popup). Type to narrow `items`; pick to select. The
2013
+ * input matches the field tier like `Input`.
2014
+ *
2015
+ * <Combobox
2016
+ * items={["Alabama", "Alaska", "Arizona", "Arkansas"]}
2017
+ * value={state} onValueChange={setState}
2018
+ * placeholder="Search states…"
2019
+ * />
2020
+ *
2021
+ * // object items:
2022
+ * <Combobox
2023
+ * items={[{ value: "us", label: "United States" }, { value: "ca", label: "Canada" }]}
2024
+ * placeholder="Country" color="primary"
2025
+ * />
2026
+ */
2027
+ declare function Combobox({ items, value, defaultValue, onValueChange, name, disabled, required, placeholder, emptyMessage, color, size, clearable, side, align, sideOffset, className, popupClassName, itemToStringLabel, renderItem, id, ...aria }: ComboboxProps): React.JSX.Element;
2028
+
2029
+ type Styled$4<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
2030
+ className?: string;
2031
+ };
2032
+ type PositionerProps$4 = React.ComponentProps<typeof Autocomplete$1.Positioner>;
2033
+ type AutocompleteSide = NonNullable<PositionerProps$4["side"]>;
2034
+ type AutocompleteAlign = NonNullable<PositionerProps$4["align"]>;
2035
+ type AutocompleteColor = SilicaColor;
2036
+ type AutocompleteSize = SilicaSize;
2037
+ type AutocompleteMode = "list" | "both" | "inline" | "none";
2038
+ interface AutocompleteItemProps extends Omit<Styled$4<typeof Autocomplete$1.Item>, "children"> {
2039
+ value: unknown;
2040
+ children?: React.ReactNode;
2041
+ }
2042
+ /** One suggestion row within an Autocomplete. */
2043
+ declare function AutocompleteItem({ className, children, ...rest }: AutocompleteItemProps): React.JSX.Element;
2044
+ interface AutocompleteProps {
2045
+ /** Suggestion set; filtered by the input value (in `list`/`both` modes). */
2046
+ items: readonly string[];
2047
+ /** Controlled input value. */
2048
+ value?: string;
2049
+ /** Uncontrolled initial input value. */
2050
+ defaultValue?: string;
2051
+ /** Fires with the new input string. */
2052
+ onValueChange?: (value: string, eventDetails?: unknown) => void;
2053
+ /** Suggestion behavior; `list` (default) filters the list as you type. */
2054
+ mode?: AutocompleteMode;
2055
+ name?: string;
2056
+ disabled?: boolean;
2057
+ required?: boolean;
2058
+ placeholder?: string;
2059
+ /** Shown in the popup when nothing matches the query. */
2060
+ emptyMessage?: React.ReactNode;
2061
+ /** Accent for the input border + focus ring (shares Input colors). */
2062
+ color?: AutocompleteColor;
2063
+ /** Input height; matches same-size Inputs. */
2064
+ size?: AutocompleteSize;
2065
+ /** Show the clear (×) button (default true). */
2066
+ clearable?: boolean;
2067
+ side?: AutocompleteSide;
2068
+ align?: AutocompleteAlign;
2069
+ sideOffset?: number;
2070
+ /** Class for the text input. */
2071
+ className?: string;
2072
+ /** Class for the popup surface. */
2073
+ popupClassName?: string;
2074
+ /** Override how each filtered suggestion renders. */
2075
+ renderItem?: (item: string, index: number) => React.ReactNode;
2076
+ "aria-label"?: string;
2077
+ "aria-labelledby"?: string;
2078
+ id?: string;
2079
+ }
2080
+ /**
2081
+ * Silica Autocomplete — a free-text input with a filtered suggestion list
2082
+ * (Base UI). Unlike `Combobox` (which selects a value from a fixed set), the
2083
+ * value here IS the typed string; suggestions just help complete it.
2084
+ *
2085
+ * <Autocomplete
2086
+ * items={["React", "React Native", "Redux", "Remix"]}
2087
+ * value={q} onValueChange={setQ}
2088
+ * placeholder="Search the docs…"
2089
+ * />
2090
+ */
2091
+ declare function Autocomplete({ items, value, defaultValue, onValueChange, mode, name, disabled, required, placeholder, emptyMessage, color, size, clearable, side, align, sideOffset, className, popupClassName, renderItem, id, ...aria }: AutocompleteProps): React.JSX.Element;
2092
+
2093
+ type CalendarColor = SilicaColor;
2094
+ type CalendarMode = "single" | "range";
2095
+ type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;
2096
+ interface DateRange {
2097
+ start: Date | null;
2098
+ end: Date | null;
2099
+ }
2100
+ type CalendarValue = Date | DateRange | null;
2101
+ interface CalendarProps {
2102
+ /** `single` (default) selects one date; `range` selects a start/end pair. */
2103
+ mode?: CalendarMode;
2104
+ /** Controlled selection — a `Date` in single mode, a `DateRange` in range mode. */
2105
+ value?: CalendarValue;
2106
+ /** Uncontrolled initial selection. */
2107
+ defaultValue?: CalendarValue;
2108
+ /** Fires with the new selection. */
2109
+ onValueChange?: (value: CalendarValue) => void;
2110
+ /** Controlled visible (left-most) month. */
2111
+ month?: Date;
2112
+ /** Uncontrolled initial visible month. */
2113
+ defaultMonth?: Date;
2114
+ onMonthChange?: (month: Date) => void;
2115
+ /** How many month grids to show side by side (default 1; 2 for range). */
2116
+ numberOfMonths?: number;
2117
+ /** 0 = Sunday (default) … 6 = Saturday. */
2118
+ weekStartsOn?: Weekday;
2119
+ /** Selectable bounds (inclusive). */
2120
+ min?: Date;
2121
+ max?: Date;
2122
+ /** Per-date disable predicate. */
2123
+ isDateDisabled?: (date: Date) => boolean;
2124
+ /** BCP-47 locale for month/weekday names (default: runtime locale). */
2125
+ locale?: string;
2126
+ /** Accent for the selection. */
2127
+ color?: CalendarColor;
2128
+ className?: string;
2129
+ "aria-label"?: string;
2130
+ }
2131
+ /**
2132
+ * Silica Calendar — a from-scratch month-grid date picker (single date or a
2133
+ * range), with full keyboard navigation (arrows, PageUp/Down, Home/End,
2134
+ * Enter/Space). The primitive behind `DatePicker` / `DateRangePicker`; render it
2135
+ * inline when you want an always-visible calendar.
2136
+ *
2137
+ * <Calendar value={date} onValueChange={setDate} />
2138
+ * <Calendar mode="range" numberOfMonths={2} value={range} onValueChange={setRange} />
2139
+ */
2140
+ declare function Calendar({ mode, value, defaultValue, onValueChange, month, defaultMonth, onMonthChange, numberOfMonths, weekStartsOn, min, max, isDateDisabled, locale, color, className, ...aria }: CalendarProps): React.JSX.Element;
2141
+
2142
+ type PositionerProps$3 = React.ComponentProps<typeof Popover$1.Positioner>;
2143
+ type DatePickerSide = NonNullable<PositionerProps$3["side"]>;
2144
+ type DatePickerAlign = NonNullable<PositionerProps$3["align"]>;
2145
+ type DatePickerColor = CalendarColor;
2146
+ type DatePickerSize = SilicaSize;
2147
+ interface DatePickerProps {
2148
+ value?: Date | null;
2149
+ defaultValue?: Date | null;
2150
+ onValueChange?: (value: Date | null) => void;
2151
+ placeholder?: React.ReactNode;
2152
+ disabled?: boolean;
2153
+ weekStartsOn?: Weekday;
2154
+ min?: Date;
2155
+ max?: Date;
2156
+ isDateDisabled?: (date: Date) => boolean;
2157
+ locale?: string;
2158
+ /** Intl options for the trigger label (default `{ dateStyle: "medium" }`). */
2159
+ formatOptions?: Intl.DateTimeFormatOptions;
2160
+ color?: DatePickerColor;
2161
+ size?: DatePickerSize;
2162
+ side?: DatePickerSide;
2163
+ align?: DatePickerAlign;
2164
+ sideOffset?: number;
2165
+ className?: string;
2166
+ popupClassName?: string;
2167
+ id?: string;
2168
+ "aria-label"?: string;
2169
+ }
2170
+ /**
2171
+ * Silica DatePicker — an input that opens a `Calendar` popover to pick one date.
2172
+ *
2173
+ * <DatePicker value={date} onValueChange={setDate} placeholder="Pick a date" />
2174
+ */
2175
+ declare function DatePicker({ value, defaultValue, onValueChange, placeholder, disabled, weekStartsOn, min, max, isDateDisabled, locale, formatOptions, color, size, side, align, sideOffset, className, popupClassName, id, "aria-label": ariaLabel, }: DatePickerProps): React.JSX.Element;
2176
+ interface DateRangePickerProps {
2177
+ value?: DateRange;
2178
+ defaultValue?: DateRange;
2179
+ onValueChange?: (value: DateRange) => void;
2180
+ placeholder?: React.ReactNode;
2181
+ disabled?: boolean;
2182
+ numberOfMonths?: number;
2183
+ weekStartsOn?: Weekday;
2184
+ min?: Date;
2185
+ max?: Date;
2186
+ isDateDisabled?: (date: Date) => boolean;
2187
+ locale?: string;
2188
+ formatOptions?: Intl.DateTimeFormatOptions;
2189
+ color?: DatePickerColor;
2190
+ size?: DatePickerSize;
2191
+ side?: DatePickerSide;
2192
+ align?: DatePickerAlign;
2193
+ sideOffset?: number;
2194
+ className?: string;
2195
+ popupClassName?: string;
2196
+ id?: string;
2197
+ "aria-label"?: string;
2198
+ }
2199
+ /**
2200
+ * Silica DateRangePicker — an input that opens a two-month `Calendar` to pick a
2201
+ * start/end range. Closes once both ends are chosen.
2202
+ *
2203
+ * <DateRangePicker value={range} onValueChange={setRange} />
2204
+ */
2205
+ declare function DateRangePicker({ value, defaultValue, onValueChange, placeholder, disabled, numberOfMonths, weekStartsOn, min, max, isDateDisabled, locale, formatOptions, color, size, side, align, sideOffset, className, popupClassName, id, "aria-label": ariaLabel, }: DateRangePickerProps): React.JSX.Element;
2206
+
2207
+ type PositionerProps$2 = React.ComponentProps<typeof Tooltip$1.Positioner>;
2208
+ type TooltipSide = NonNullable<PositionerProps$2["side"]>;
2209
+ type TooltipAlign = NonNullable<PositionerProps$2["align"]>;
2210
+ interface TooltipProps {
2211
+ /** The floating content. */
2212
+ content: React.ReactNode;
2213
+ /** The trigger element — Base UI merges hover/focus behavior onto it. */
2214
+ children: React.ReactElement;
2215
+ /** Which side of the trigger to prefer. Default `top` (flips to avoid collisions). */
2216
+ side?: TooltipSide;
2217
+ /** Alignment along that side. Default `center`. */
2218
+ align?: TooltipAlign;
2219
+ /** Gap between trigger and popup, in px. Default `8`. */
2220
+ sideOffset?: number;
2221
+ /** Hover-open delay in ms. Default `600` (Base UI). */
2222
+ delay?: number;
2223
+ /** Close delay in ms. Default `0`. */
2224
+ closeDelay?: number;
2225
+ /** Controlled open state. */
2226
+ open?: boolean;
2227
+ /** Uncontrolled initial open state. */
2228
+ defaultOpen?: boolean;
2229
+ onOpenChange?: (open: boolean) => void;
2230
+ /** Disable the tooltip entirely. */
2231
+ disabled?: boolean;
2232
+ /** Show the little arrow. Default `true`. */
2233
+ arrow?: boolean;
2234
+ /** Extra class on the popup surface. */
2235
+ className?: string;
2236
+ }
2237
+ /**
2238
+ * Silica Tooltip — behavior from Base UI, look from Silica's `.tooltip` CSS.
2239
+ *
2240
+ * <Tooltip content="Copy link">
2241
+ * <Button variant="ghost">Copy</Button>
2242
+ * </Tooltip>
2243
+ *
2244
+ * Wrap a subtree in <TooltipProvider> to share a delay across many tooltips
2245
+ * (adjacent ones then open instantly).
2246
+ */
2247
+ declare function Tooltip({ content, children, side, align, sideOffset, delay, closeDelay, open, defaultOpen, onOpenChange, disabled, arrow, className, }: TooltipProps): React.JSX.Element;
2248
+ type TooltipProviderProps = React.ComponentProps<typeof Tooltip$1.Provider>;
2249
+ /** Shares a hover delay across the tooltips beneath it (adjacent open instantly). */
2250
+ declare function TooltipProvider(props: TooltipProviderProps): React.JSX.Element;
2251
+
2252
+ type Styled$3<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
2253
+ className?: string;
2254
+ };
2255
+ type DialogProps = React.ComponentProps<typeof Dialog$1.Root>;
2256
+ /**
2257
+ * Silica Dialog — a modal, from Base UI (focus trap + scroll lock + dismissal).
2258
+ *
2259
+ * <Dialog>
2260
+ * <DialogTrigger><Button>Delete…</Button></DialogTrigger>
2261
+ * <DialogContent>
2262
+ * <DialogTitle>Delete project?</DialogTitle>
2263
+ * <DialogDescription>This can't be undone.</DialogDescription>
2264
+ * <div className="mt-4 flex justify-end gap-2">
2265
+ * <DialogClose><Button variant="ghost">Cancel</Button></DialogClose>
2266
+ * <DialogClose><Button color="error">Delete</Button></DialogClose>
2267
+ * </div>
2268
+ * </DialogContent>
2269
+ * </Dialog>
2270
+ *
2271
+ * Pass `modal="trap-focus"` for a non-scroll-locking dialog, or control it with
2272
+ * `open`/`onOpenChange`.
2273
+ */
2274
+ declare const Dialog: typeof Dialog$1.Root;
2275
+ /** Wraps its single child element as the element that opens the dialog. */
2276
+ declare function DialogTrigger({ children }: {
2277
+ children: React.ReactElement;
2278
+ }): React.JSX.Element;
2279
+ /** Wraps its single child element as an element that closes the dialog. */
2280
+ declare function DialogClose({ children }: {
2281
+ children: React.ReactElement;
2282
+ }): React.JSX.Element;
2283
+ interface DialogContentProps extends Omit<Styled$3<typeof Dialog$1.Popup>, "children"> {
2284
+ children?: React.ReactNode;
2285
+ /** Class for the backdrop layer. */
2286
+ backdropClassName?: string;
2287
+ }
2288
+ /** Portals + backdrop + the centered popup surface in one. */
2289
+ declare function DialogContent({ className, backdropClassName, children, ...rest }: DialogContentProps): React.JSX.Element;
2290
+ declare function DialogTitle({ className, ...rest }: Styled$3<typeof Dialog$1.Title>): React.JSX.Element;
2291
+ declare function DialogDescription({ className, ...rest }: Styled$3<typeof Dialog$1.Description>): React.JSX.Element;
2292
+
2293
+ type Styled$2<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
2294
+ className?: string;
2295
+ };
2296
+ type PositionerProps$1 = React.ComponentProps<typeof Popover$1.Positioner>;
2297
+ type PopoverSide = NonNullable<PositionerProps$1["side"]>;
2298
+ type PopoverAlign = NonNullable<PositionerProps$1["align"]>;
2299
+ type PopoverProps = React.ComponentProps<typeof Popover$1.Root>;
2300
+ /**
2301
+ * Silica Popover — a click-triggered floating panel (Base UI).
2302
+ *
2303
+ * <Popover>
2304
+ * <PopoverTrigger><Button variant="outline">Details</Button></PopoverTrigger>
2305
+ * <PopoverContent>
2306
+ * <PopoverTitle>Storage</PopoverTitle>
2307
+ * <PopoverDescription>92% of your quota is used.</PopoverDescription>
2308
+ * </PopoverContent>
2309
+ * </Popover>
2310
+ */
2311
+ declare const Popover: typeof Popover$1.Root;
2312
+ declare function PopoverTrigger({ children }: {
2313
+ children: React.ReactElement;
2314
+ }): React.JSX.Element;
2315
+ declare function PopoverClose({ children }: {
2316
+ children: React.ReactElement;
2317
+ }): React.JSX.Element;
2318
+ interface PopoverContentProps extends Omit<Styled$2<typeof Popover$1.Popup>, "children"> {
2319
+ children?: React.ReactNode;
2320
+ side?: PopoverSide;
2321
+ align?: PopoverAlign;
2322
+ sideOffset?: number;
2323
+ /** Show the little arrow. Default `false`. */
2324
+ arrow?: boolean;
2325
+ }
2326
+ /** Portal + positioner + the popup panel. */
2327
+ declare function PopoverContent({ className, children, side, align, sideOffset, arrow, ...rest }: PopoverContentProps): React.JSX.Element;
2328
+ declare function PopoverTitle({ className, ...rest }: Styled$2<typeof Popover$1.Title>): React.JSX.Element;
2329
+ declare function PopoverDescription({ className, ...rest }: Styled$2<typeof Popover$1.Description>): React.JSX.Element;
2330
+
2331
+ type Styled$1<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
2332
+ className?: string;
2333
+ };
2334
+ type PositionerProps = React.ComponentProps<typeof Menu$1.Positioner>;
2335
+ type DropdownMenuSide = NonNullable<PositionerProps["side"]>;
2336
+ type DropdownMenuAlign = NonNullable<PositionerProps["align"]>;
2337
+ type DropdownMenuProps = React.ComponentProps<typeof Menu$1.Root>;
2338
+ /**
2339
+ * Silica Dropdown Menu — a command menu (Base UI: roving focus, typeahead,
2340
+ * dismissal). Distinct from the static `Menu` nav-list.
2341
+ *
2342
+ * <DropdownMenu>
2343
+ * <DropdownMenuTrigger><Button variant="outline">Options</Button></DropdownMenuTrigger>
2344
+ * <DropdownMenuContent>
2345
+ * <DropdownMenuLabel>Actions</DropdownMenuLabel>
2346
+ * <DropdownMenuItem onClick={…}>Edit</DropdownMenuItem>
2347
+ * <DropdownMenuItem onClick={…}>Duplicate</DropdownMenuItem>
2348
+ * <DropdownMenuSeparator />
2349
+ * <DropdownMenuItem disabled>Archive</DropdownMenuItem>
2350
+ * </DropdownMenuContent>
2351
+ * </DropdownMenu>
2352
+ */
2353
+ declare const DropdownMenu: typeof Menu$1.Root;
2354
+ declare function DropdownMenuTrigger({ children }: {
2355
+ children: React.ReactElement;
2356
+ }): React.JSX.Element;
2357
+ interface DropdownMenuContentProps extends Omit<Styled$1<typeof Menu$1.Popup>, "children"> {
2358
+ children?: React.ReactNode;
2359
+ side?: DropdownMenuSide;
2360
+ align?: DropdownMenuAlign;
2361
+ sideOffset?: number;
2362
+ }
2363
+ /** Portal + positioner + the menu popup. */
2364
+ declare function DropdownMenuContent({ className, children, side, align, sideOffset, ...rest }: DropdownMenuContentProps): React.JSX.Element;
2365
+ declare function DropdownMenuItem({ className, ...rest }: Styled$1<typeof Menu$1.Item>): React.JSX.Element;
2366
+ declare function DropdownMenuSeparator({ className, ...rest }: Styled$1<typeof Menu$1.Separator>): React.JSX.Element;
2367
+ declare function DropdownMenuGroup(props: React.ComponentProps<typeof Menu$1.Group>): React.JSX.Element;
2368
+ declare function DropdownMenuLabel({ className, ...rest }: Styled$1<typeof Menu$1.GroupLabel>): React.JSX.Element;
2369
+
2370
+ type Styled<T extends React.ElementType> = Omit<React.ComponentPropsWithoutRef<T>, "className"> & {
2371
+ className?: string;
2372
+ };
2373
+ type TabValue = React.ComponentProps<typeof Tabs$1.Tab>["value"];
2374
+ /** Visual style. `underline` (default), `boxed` (segmented), or `pills`. */
2375
+ type TabsVariant = "underline" | "boxed" | "pills";
2376
+ type TabsColor = SilicaColor;
2377
+ interface TabsProps extends Styled<typeof Tabs$1.Root> {
2378
+ variant?: TabsVariant;
2379
+ /** Accent color (underline + pills fill); maps to `tabs-<color>`. Default primary. */
2380
+ color?: TabsColor;
2381
+ }
2382
+ /**
2383
+ * Silica Tabs — Base UI selection state + roving focus + a moving indicator.
2384
+ *
2385
+ * <Tabs defaultValue="account" variant="boxed">
2386
+ * <TabsList>
2387
+ * <TabsTab value="account">Account</TabsTab>
2388
+ * <TabsTab value="password">Password</TabsTab>
2389
+ * </TabsList>
2390
+ * <TabsPanel value="account">…</TabsPanel>
2391
+ * <TabsPanel value="password">…</TabsPanel>
2392
+ * </Tabs>
2393
+ *
2394
+ * The same sliding indicator styles per variant — an underline, or a full pill.
2395
+ */
2396
+ declare function Tabs({ variant, color, className, ...rest }: TabsProps): React.JSX.Element;
2397
+ interface TabsListProps extends Omit<Styled<typeof Tabs$1.List>, "children"> {
2398
+ children?: React.ReactNode;
2399
+ /** Render the moving underline indicator. Default `true`. */
2400
+ indicator?: boolean;
2401
+ }
2402
+ declare function TabsList({ className, children, indicator, ...rest }: TabsListProps): React.JSX.Element;
2403
+ declare function TabsTab({ className, ...rest }: Styled<typeof Tabs$1.Tab>): React.JSX.Element;
2404
+ declare function TabsPanel({ className, ...rest }: Styled<typeof Tabs$1.Panel>): React.JSX.Element;
2405
+
2406
+ interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "color" | "type"> {
2407
+ /** Accent color; maps to `checkbox-<color>` (checked fill + focus ring). */
2408
+ color?: SilicaColor;
2409
+ /** Default `md`. */
2410
+ size?: SilicaSize;
2411
+ }
2412
+ /**
2413
+ * Silica Checkbox — a restyled native `<input type="checkbox">`. All native
2414
+ * attributes (`checked`, `defaultChecked`, `onChange`, `disabled`, …) pass
2415
+ * through. Pair it with your own `<label>` for a clickable caption.
2416
+ */
2417
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
2418
+
2419
+ interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "color" | "type"> {
2420
+ /** Accent color; maps to `radio-<color>` (checked dot + focus ring). */
2421
+ color?: SilicaColor;
2422
+ /** Default `md`. */
2423
+ size?: SilicaSize;
2424
+ }
2425
+ /**
2426
+ * Silica Radio — a restyled native `<input type="radio">`. Group them by giving
2427
+ * several the same `name`. All native attributes pass through.
2428
+ */
2429
+ declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>>;
2430
+
2431
+ interface ToggleProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "color" | "type"> {
2432
+ /** Accent color; maps to `toggle-<color>` (checked track fill). */
2433
+ color?: SilicaColor;
2434
+ /** Default `md`. */
2435
+ size?: SilicaSize;
2436
+ }
2437
+ /**
2438
+ * Silica Toggle — a restyled native `<input type="checkbox">` presented as a
2439
+ * switch. Adds `role="switch"` for assistive tech; all native attributes
2440
+ * (`checked`, `onChange`, `disabled`, …) pass through.
2441
+ */
2442
+ declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAttributes<HTMLInputElement>>;
2443
+
2444
+ type TagInputSize = "sm" | "md" | "lg";
2445
+ interface TagInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "color"> {
2446
+ /** Controlled tag list. */
2447
+ value?: string[];
2448
+ /** Uncontrolled initial tags. */
2449
+ defaultValue?: string[];
2450
+ /** Called with the next tag list whenever it changes. */
2451
+ onValueChange?: (tags: string[]) => void;
2452
+ /** Placeholder shown in the text field when there are no tags. */
2453
+ placeholder?: string;
2454
+ /** Disable the whole control. */
2455
+ disabled?: boolean;
2456
+ /** Chip + focus-ring accent color. */
2457
+ color?: SilicaColor;
2458
+ /** Height/type scale. Default `"md"`. */
2459
+ size?: TagInputSize;
2460
+ /** Keys that commit the current text as a tag. Default `["Enter", ","]`. */
2461
+ separators?: string[];
2462
+ /** Reject duplicate tags. Default `true`. */
2463
+ dedupe?: boolean;
2464
+ /** Maximum number of tags. */
2465
+ max?: number;
2466
+ /** Commit any pending text when the field loses focus. Default `true`. */
2467
+ addOnBlur?: boolean;
2468
+ /** Extra props for the inner `<input>`. */
2469
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
2470
+ }
2471
+ /**
2472
+ * A chip-based multi-value text field — tags for segments, recipients,
2473
+ * categories, and the like. Type and press Enter (or comma) to add; Backspace on
2474
+ * an empty field removes the last tag. Controlled via `value`/`onValueChange` or
2475
+ * uncontrolled via `defaultValue`.
2476
+ */
2477
+ declare const TagInput: React.ForwardRefExoticComponent<TagInputProps & React.RefAttributes<HTMLDivElement>>;
2478
+
2479
+ type EmptyStateSize = "sm" | "md";
2480
+ interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
2481
+ /** Icon/illustration shown in the chip above the title. */
2482
+ icon?: React.ReactNode;
2483
+ /** Headline (e.g. "No orders yet"). */
2484
+ title?: React.ReactNode;
2485
+ /** Supporting copy under the title. */
2486
+ description?: React.ReactNode;
2487
+ /** Action buttons/links rendered below the copy. */
2488
+ actions?: React.ReactNode;
2489
+ /** `"md"` (default) or the more compact `"sm"`. */
2490
+ size?: EmptyStateSize;
2491
+ }
2492
+ /**
2493
+ * The centered "nothing here yet" placeholder — icon, title, description, and an
2494
+ * action row. Drop it into an empty list, a table body, a card, or a panel.
2495
+ * Slots are optional; `children` renders between the description and the actions
2496
+ * for custom content.
2497
+ */
2498
+ declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
2499
+
2500
+ /**
2501
+ * OKLCH ↔ sRGB color math — pure, dependency-free.
2502
+ *
2503
+ * SilicaUI's whole color system is OKLCH (see the theme tokens), so the
2504
+ * `ColorPicker` is OKLCH-native: it edits L (lightness 0–1), C (chroma 0–~0.37),
2505
+ * and H (hue 0–360) directly. These helpers convert to/from sRGB so the picker
2506
+ * can show a hex readout and accept hex input, and clamp out-of-gamut colors for
2507
+ * display. The matrices are Björn Ottosson's canonical OKLab ⇄ linear-sRGB
2508
+ * transforms (https://bottosson.github.io/posts/oklab/).
2509
+ */
2510
+ interface Oklch {
2511
+ /** Lightness, 0–1. */
2512
+ l: number;
2513
+ /** Chroma, 0–~0.37 (values past the sRGB gamut get clamped on export). */
2514
+ c: number;
2515
+ /** Hue angle in degrees, 0–360. */
2516
+ h: number;
2517
+ }
2518
+ /** Largest chroma the picker exposes — a bit past sRGB's gamut for most hues. */
2519
+ declare const MAX_CHROMA = 0.37;
2520
+ /** True if the OKLCH color is representable in sRGB without clamping. */
2521
+ declare function inGamut(l: number, c: number, h: number): boolean;
2522
+ /** OKLCH → sRGB bytes (0–255), gamut-clamped per channel. */
2523
+ declare function oklchToRgb(l: number, c: number, h: number): [number, number, number];
2524
+ /** OKLCH → `#rrggbb`, gamut-clamped. */
2525
+ declare function oklchToHex(l: number, c: number, h: number): string;
2526
+ /** `#rgb`/`#rrggbb` → OKLCH, or `null` if it doesn't parse. */
2527
+ declare function hexToOklch(hex: string): Oklch | null;
2528
+ /** OKLCH → a canonical `oklch(L C H)` string with sensible rounding. */
2529
+ declare function formatOklch(l: number, c: number, h: number): string;
2530
+ /** Parse an `oklch(L C H)` string (L/C plain numbers or %) → OKLCH, or `null`. */
2531
+ declare function parseOklch(input: string): Oklch | null;
2532
+
2533
+ type ColorPickerFormat = "oklch" | "hex";
2534
+ interface ColorPickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "color"> {
2535
+ /** Controlled color (an `oklch(…)` or `#hex` string). */
2536
+ value?: string;
2537
+ /** Uncontrolled initial color. Default `oklch(0.7 0.15 250)`. */
2538
+ defaultValue?: string;
2539
+ /** Fires with the formatted string AND the raw OKLCH on every change. */
2540
+ onValueChange?: (value: string, oklch: Oklch) => void;
2541
+ /** Output format handed to `onValueChange`. Default `"oklch"`. */
2542
+ format?: ColorPickerFormat;
2543
+ /** Show the hex read/write field. Default `true`. */
2544
+ showHex?: boolean;
2545
+ disabled?: boolean;
2546
+ }
2547
+ /**
2548
+ * ColorPicker — an OKLCH-native color editor. SilicaUI's tokens are OKLCH, so
2549
+ * the picker edits Lightness / Chroma / Hue directly (each slider's track shows
2550
+ * the live ramp), previews the result, and reads/writes hex. Controlled via
2551
+ * `value`/`onValueChange` or uncontrolled via `defaultValue`.
2552
+ */
2553
+ declare const ColorPicker: React.ForwardRefExoticComponent<ColorPickerProps & React.RefAttributes<HTMLDivElement>>;
2554
+
2555
+ interface CommandItem {
2556
+ /** Stable identity (also the React key). */
2557
+ id: string;
2558
+ /** Primary text shown in the row. */
2559
+ label: string;
2560
+ /** Optional secondary line under the label. */
2561
+ description?: string;
2562
+ /** Optional leading icon (already an element, e.g. an `<svg>`). */
2563
+ icon?: React.ReactNode;
2564
+ /** Optional trailing shortcut hint, display-only (e.g. `"⌘P"`). */
2565
+ shortcut?: string;
2566
+ /** Extra terms to match against beyond the label/description. */
2567
+ keywords?: string[];
2568
+ /** Group heading this item lives under. */
2569
+ group?: string;
2570
+ disabled?: boolean;
2571
+ /** Run when the item is chosen (click or Enter). */
2572
+ onSelect?: () => void;
2573
+ }
2574
+ interface CommandPaletteProps {
2575
+ /** The commands to show and filter. */
2576
+ items: CommandItem[];
2577
+ /** Controlled open state. */
2578
+ open?: boolean;
2579
+ /** Uncontrolled initial open state. */
2580
+ defaultOpen?: boolean;
2581
+ onOpenChange?: (open: boolean) => void;
2582
+ /** Search box placeholder. */
2583
+ placeholder?: string;
2584
+ /** Shown when nothing matches. */
2585
+ emptyMessage?: string;
2586
+ /**
2587
+ * Global toggle hotkey. `true` (default) binds ⌘K / Ctrl+K; pass a single
2588
+ * letter to rebind (still combined with ⌘/Ctrl); `false` disables it.
2589
+ */
2590
+ hotkey?: boolean | string;
2591
+ className?: string;
2592
+ }
2593
+ /**
2594
+ * CommandPalette — a ⌘K launcher. Feed it a flat `items` list (optionally
2595
+ * grouped); it filters as you type, moves the highlight with ↑/↓, runs the
2596
+ * active command on Enter, and closes on Escape or backdrop click. Opens on
2597
+ * ⌘K/Ctrl+K by default, or drive it with `open`/`onOpenChange`.
2598
+ */
2599
+ declare function CommandPalette({ items, open, defaultOpen, onOpenChange, placeholder, emptyMessage, hotkey, className, }: CommandPaletteProps): React.JSX.Element;
2600
+
2601
+ interface TreeNode {
2602
+ /** Stable identity (React key + selection/expansion id). */
2603
+ id: string;
2604
+ /** Row label. */
2605
+ label: React.ReactNode;
2606
+ /** Optional leading icon element. */
2607
+ icon?: React.ReactNode;
2608
+ /** Child nodes; presence makes the node expandable. */
2609
+ children?: TreeNode[];
2610
+ disabled?: boolean;
2611
+ }
2612
+ interface TreeViewProps extends Omit<React.HTMLAttributes<HTMLUListElement>, "onSelect"> {
2613
+ /** The node forest. */
2614
+ items: TreeNode[];
2615
+ /** Controlled set of expanded node ids. */
2616
+ expanded?: string[];
2617
+ /** Uncontrolled initial expanded ids. */
2618
+ defaultExpanded?: string[];
2619
+ onExpandedChange?: (expanded: string[]) => void;
2620
+ /** Controlled selected node id. */
2621
+ selected?: string;
2622
+ /** Uncontrolled initial selected id. */
2623
+ defaultSelected?: string;
2624
+ onSelectedChange?: (id: string) => void;
2625
+ /** Fires with the full node when one is selected. */
2626
+ onSelect?: (node: TreeNode) => void;
2627
+ }
2628
+ /**
2629
+ * TreeView — a hierarchical tree with full keyboard support (↑/↓ move,
2630
+ * →/← expand-or-descend / collapse-or-ascend, Home/End, Enter selects, Space
2631
+ * toggles). Feed it a `TreeNode[]` forest; control expansion via
2632
+ * `expanded`/`onExpandedChange` and selection via `selected`/`onSelectedChange`,
2633
+ * or run uncontrolled with the `default*` props.
2634
+ */
2635
+ declare const TreeView: React.ForwardRefExoticComponent<TreeViewProps & React.RefAttributes<HTMLUListElement>>;
2636
+
2637
+ interface DropzoneRejection {
2638
+ file: File;
2639
+ reason: "type" | "size";
2640
+ }
2641
+ interface DropzoneProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onDrop" | "title"> {
2642
+ /** Called with the accepted files (from a drop or the picker). */
2643
+ onFiles?: (files: File[]) => void;
2644
+ /** Called with files rejected by `accept` / `maxSize`. */
2645
+ onReject?: (rejections: DropzoneRejection[]) => void;
2646
+ /** Native-style accept list, e.g. `"image/*,.pdf"`. */
2647
+ accept?: string;
2648
+ /** Allow selecting/dropping more than one file. Default `true`. */
2649
+ multiple?: boolean;
2650
+ /** Max size per file, in bytes. */
2651
+ maxSize?: number;
2652
+ disabled?: boolean;
2653
+ /** Primary line. Default `"Drop files here, or click to browse"`. */
2654
+ title?: React.ReactNode;
2655
+ /** Secondary hint line (e.g. accepted types). */
2656
+ hint?: React.ReactNode;
2657
+ /** Override the default upload icon. */
2658
+ icon?: React.ReactNode;
2659
+ /** Extra props for the underlying `<input type=file>`. */
2660
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
2661
+ }
2662
+ /**
2663
+ * Dropzone — drag files onto it or click to open the picker. Emits accepted
2664
+ * files via `onFiles` and anything filtered out by `accept`/`maxSize` via
2665
+ * `onReject`. Purely presentational about the *result* — render your own file
2666
+ * list from what `onFiles` hands you.
2667
+ */
2668
+ declare const Dropzone: React.ForwardRefExoticComponent<DropzoneProps & React.RefAttributes<HTMLDivElement>>;
2669
+
2670
+ interface WizardStep {
2671
+ /** Stable identity + React key. */
2672
+ id: string;
2673
+ /** Step label under the marker. */
2674
+ title: React.ReactNode;
2675
+ /** Content shown when this step is active (unless `children` is provided). */
2676
+ content?: React.ReactNode;
2677
+ /** Marks the step "Optional" under its label. */
2678
+ optional?: boolean;
2679
+ /** Can't be navigated to. */
2680
+ disabled?: boolean;
2681
+ }
2682
+ interface WizardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
2683
+ steps: WizardStep[];
2684
+ /** Controlled active step index. */
2685
+ activeStep?: number;
2686
+ /** Uncontrolled initial step index. Default `0`. */
2687
+ defaultStep?: number;
2688
+ onStepChange?: (index: number) => void;
2689
+ /** Accent color for markers + rail. */
2690
+ color?: SilicaColor;
2691
+ /**
2692
+ * Linear flow: markers can only jump backward (revisit) or stay; forward is via
2693
+ * Next. `false` lets any enabled step be clicked. Default `true`.
2694
+ */
2695
+ linear?: boolean;
2696
+ /** Gate the Next button (e.g. until the active step validates). Default `true`. */
2697
+ canGoNext?: boolean;
2698
+ /** Called when Next is pressed on the last step. */
2699
+ onFinish?: () => void;
2700
+ backLabel?: string;
2701
+ nextLabel?: string;
2702
+ finishLabel?: string;
2703
+ /** Hide the built-in Back / Next footer. */
2704
+ hideFooter?: boolean;
2705
+ /** Render your own content instead of the active step's `content`. */
2706
+ children?: React.ReactNode;
2707
+ }
2708
+ /**
2709
+ * Wizard — a multi-step flow with a numbered indicator, per-step content, and a
2710
+ * Back / Next-or-Finish footer. Control the step via `activeStep`/`onStepChange`
2711
+ * or run uncontrolled with `defaultStep`. Steps carry their own `content`, or
2712
+ * pass `children` to render the body yourself. `canGoNext` gates advancing so you
2713
+ * can require the current step to validate first.
2714
+ */
2715
+ declare const Wizard: React.ForwardRefExoticComponent<WizardProps & React.RefAttributes<HTMLDivElement>>;
2716
+
2717
+ /**
2718
+ * Runtime configuration shared by all Silica React components.
2719
+ *
2720
+ * `prefix` MUST match the `prefix` you set on `@plugin "silicaui"` in your CSS.
2721
+ * The CSS plugin emits `.<prefix>btn`; these components rebuild those class
2722
+ * names at runtime, so both sides have to agree on the prefix.
2723
+ */
2724
+ interface SilicaConfig {
2725
+ /** Prepended verbatim to every Silica class (e.g. `"sx-"` → `sx-btn`). */
2726
+ prefix: string;
2727
+ }
2728
+ interface SilicaProviderProps extends Partial<SilicaConfig> {
2729
+ children: React.ReactNode;
2730
+ }
2731
+ /**
2732
+ * Provides Silica config to the components beneath it. Providers may be nested —
2733
+ * a client-site subtree can run under `prefix="st-"` inside a platform shell on
2734
+ * `prefix="sx-"`, and each Silica component picks up its nearest provider.
2735
+ *
2736
+ * <SilicaProvider prefix="sx-">
2737
+ * <App />
2738
+ * </SilicaProvider>
2739
+ */
2740
+ declare function SilicaProvider({ prefix, children }: SilicaProviderProps): React.JSX.Element;
2741
+ /** Read the full Silica config from context (defaults to `{ prefix: "" }`). */
2742
+ declare function useSilicaConfig(): SilicaConfig;
2743
+ /**
2744
+ * Returns a class-name builder bound to the active prefix. `cn("btn")` →
2745
+ * `"sx-btn"` when a `prefix="sx-"` provider is in scope, or `"btn"` otherwise.
2746
+ * Passing a nullish/false value returns it unchanged, so it composes with the
2747
+ * same conditional style the components already use.
2748
+ */
2749
+ declare function useSilicaClass(): (name: string | false | null | undefined) => string | false | null | undefined;
2750
+
2751
+ /** Tiny className joiner. Falsy parts are dropped. */
2752
+ declare function cx(...parts: Array<string | false | null | undefined>): string;
2753
+
2754
+ export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, type AccordionTriggerProps, Alert, AlertActions, type AlertColor, AlertContent, AlertDescription, AlertDialog, AlertDialogClose, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertProps, type AlertSize, AlertTitle, type AlertVariant, Autocomplete, type AutocompleteAlign, type AutocompleteColor, AutocompleteItem, type AutocompleteItemProps, type AutocompleteMode, type AutocompleteProps, type AutocompleteSide, type AutocompleteSize, Avatar, type AvatarColor, AvatarGroup, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Badge, type BadgeColor, type BadgeProps, type BadgeSize, type BadgeVariant, Breadcrumb, type BreadcrumbProps, Button, type ButtonColor, type ButtonProps, type ButtonSize, type ButtonVariant, Calendar, type CalendarColor, type CalendarMode, type CalendarProps, type CalendarValue, Card, CardActions, CardBody, type CardProps, CardTitle, Carousel, CarouselItem, type CarouselItemProps, type CarouselOrientation, type CarouselProps, type CarouselSnap, Chat, ChatBubble, type ChatBubbleColor, type ChatBubbleProps, ChatFooter, type ChatFooterProps, ChatHeader, type ChatHeaderProps, ChatImage, type ChatImageProps, type ChatProps, type ChatSide, Checkbox, CheckboxGroup, type CheckboxGroupOrientation, type CheckboxGroupProps, CheckboxOption, type CheckboxOptionProps, type CheckboxProps, Collapse, CollapseContent, type CollapseProps, CollapseTitle, Collapsible, CollapsiblePanel, type CollapsiblePanelProps, type CollapsibleProps, CollapsibleTrigger, type CollapsibleTriggerProps, ColorPicker, type ColorPickerFormat, type ColorPickerProps, Combobox, type ComboboxAlign, type ComboboxColor, ComboboxItem, type ComboboxItemProps, type ComboboxProps, type ComboboxSide, type ComboboxSize, type CommandItem, CommandPalette, type CommandPaletteProps, ContextMenu, ContextMenuContent, type ContextMenuContentProps, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, type ContextMenuProps, ContextMenuSeparator, ContextMenuTrigger, type ContextMenuTriggerProps, Countdown, type CountdownProps, type CountdownUnit, DatePicker, type DatePickerAlign, type DatePickerColor, type DatePickerProps, type DatePickerSide, type DatePickerSize, type DateRange, DateRangePicker, type DateRangePickerProps, Dialog, DialogClose, DialogContent, type DialogContentProps, DialogDescription, type DialogProps, DialogTitle, DialogTrigger, Diff, type DiffProps, Display, type DisplayProps, Divider, type DividerOrientation, type DividerProps, Dock, type DockColor, DockItem, type DockItemProps, DockLabel, type DockLabelProps, type DockProps, Drawer, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, type DrawerProps, type DrawerSide, DrawerTitle, DrawerTrigger, DropdownMenu, type DropdownMenuAlign, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, type DropdownMenuProps, DropdownMenuSeparator, type DropdownMenuSide, DropdownMenuTrigger, Dropzone, type DropzoneProps, type DropzoneRejection, EmptyState, type EmptyStateProps, type EmptyStateSize, Field, FieldControl, type FieldControlProps, FieldDescription, type FieldDescriptionProps, FieldError, type FieldErrorProps, FieldLabel, type FieldLabelProps, type FieldProps, Fieldset, FieldsetLabel, type FieldsetLabelProps, FieldsetLegend, type FieldsetLegendProps, type FieldsetProps, FileInput, type FileInputProps, type FileInputSize, Filter, FilterItem, type FilterItemProps, type FilterProps, FloatingLabel, type FloatingLabelProps, Footer, type FooterProps, FooterTitle, type FooterTitleProps, Form, type FormProps, Heading, type HeadingLevel, type HeadingProps, Hero, HeroContent, HeroOverlay, type HeroProps, Indicator, IndicatorItem, type IndicatorItemProps, type IndicatorPlacement, type IndicatorProps, Input, type InputColor, type InputProps, type InputSize, Join, type JoinOrientation, type JoinProps, Kbd, type KbdProps, type KbdSize, Label, type LabelProps, Link, type LinkColor, type LinkProps, List, ListColGrow, type ListColGrowProps, type ListProps, ListRow, type ListRowProps, ListTitle, type ListTitleProps, Loading, type LoadingProps, type LoadingSize, MAX_CHROMA, Mask, type MaskProps, type MaskVariant, Menu, MenuItem, type MenuProps, MenuTitle, Menubar, type MenubarAlign, MenubarContent, type MenubarContentProps, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, type MenubarProps, MenubarSeparator, type MenubarSide, MenubarTrigger, type MenubarTriggerProps, Meter, type MeterColor, type MeterProps, type MeterSize, MockupBrowser, type MockupBrowserProps, MockupCode, MockupCodeLine, type MockupCodeLineProps, type MockupCodeProps, MockupPhone, type MockupPhoneProps, MockupWindow, type MockupWindowProps, NativeSelect, type NativeSelectColor, type NativeSelectProps, type NativeSelectSize, Navbar, NavbarCenter, NavbarEnd, type NavbarProps, NavbarStart, NavigationMenu, type NavigationMenuAlign, NavigationMenuContent, type NavigationMenuContentProps, NavigationMenuItem, type NavigationMenuItemProps, NavigationMenuLink, type NavigationMenuLinkProps, type NavigationMenuProps, type NavigationMenuSide, NavigationMenuTrigger, type NavigationMenuTriggerProps, NumberField, type NumberFieldProps, type Oklch, Pagination, type PaginationColor, type PaginationProps, type PaginationSize, Popover, type PopoverAlign, PopoverClose, PopoverContent, type PopoverContentProps, PopoverDescription, type PopoverProps, type PopoverSide, PopoverTitle, PopoverTrigger, PreviewCard, type PreviewCardAlign, type PreviewCardProps, type PreviewCardSide, Progress, type ProgressColor, type ProgressProps, type ProgressSize, Prose, type ProseProps, type ProseSize, RadialProgress, type RadialProgressColor, type RadialProgressProps, Radio, RadioGroup, type RadioGroupOrientation, type RadioGroupProps, RadioOption, type RadioOptionProps, type RadioProps, Range, type RangeColor, type RangeProps, Rating, type RatingColor, type RatingProps, type RatingSize, ScrollArea, type ScrollAreaOrientation, type ScrollAreaProps, Select, type SelectAlign, type SelectColor, SelectGroup, SelectGroupLabel, SelectItem, type SelectItemProps, type SelectItems, type SelectOptionData, type SelectProps, SelectSeparator, type SelectSide, type SelectSize, type SilicaColor, type SilicaConfig, SilicaProvider, type SilicaProviderProps, type SilicaSize, Skeleton, type SkeletonProps, type SkeletonShape, Slider, type SliderColor, type SliderProps, type SliderSize, Stack, type StackPeek, type StackProps, Stat, StatDesc, StatFigure, type StatProps, StatTitle, StatValue, Stats, type StatsProps, Status, type StatusColor, type StatusProps, type StatusSize, Step, type StepColor, type StepProps, Steps, type StepsProps, Swap, type SwapProps, type SwapVariant, Switch, type SwitchColor, type SwitchProps, type SwitchSize, type TabValue, Table, type TableProps, type TableSize, Tabs, type TabsColor, TabsList, type TabsListProps, TabsPanel, type TabsProps, TabsTab, type TabsVariant, TagInput, type TagInputProps, type TagInputSize, Text, type TextProps, type TextVariant, Textarea, type TextareaColor, type TextareaProps, type TextareaSize, ThemeController, type ThemeControllerProps, Timeline, TimelineEnd, type TimelineEndProps, TimelineItem, type TimelineItemProps, TimelineMiddle, type TimelineMiddleProps, type TimelineOrientation, type TimelineProps, TimelineStart, type TimelineStartProps, ToastProvider, type ToastProviderProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, type TooltipAlign, type TooltipProps, TooltipProvider, type TooltipProviderProps, type TooltipSide, type TreeNode, TreeView, type TreeViewProps, Validator, ValidatorHint, type ValidatorHintProps, type ValidatorProps, type Weekday, Wizard, type WizardProps, type WizardStep, cx, formatOklch, hexToOklch, inGamut, oklchToHex, oklchToRgb, parseOklch, useSilicaClass, useSilicaConfig, useToast };