cetec-design-system 2.2.2-next.0 → 2.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/{cetec-preset-CcvrY8wh.js → cetec-preset-CZJA5UR0.js} +1696 -1331
  2. package/dist/cetec-preset-CZJA5UR0.js.map +1 -0
  3. package/dist/index.js +12655 -9360
  4. package/dist/index.js.map +1 -1
  5. package/dist/panda.buildinfo.json +461 -365
  6. package/dist/playroom-static.css +68887 -180258
  7. package/dist/preset.js +1 -1
  8. package/dist/specs/recipes.json +126 -25
  9. package/dist/styles.css +1315 -642
  10. package/dist/types/index.d.ts +3001 -273
  11. package/dist/types/preset.d.ts +15 -0
  12. package/package.json +6 -1
  13. package/src/recipes/autocomplete.ts +266 -0
  14. package/src/recipes/calendar.ts +92 -0
  15. package/src/recipes/chip.ts +6 -0
  16. package/src/recipes/dateMenus.ts +40 -0
  17. package/src/recipes/dateTimeMenus.ts +43 -0
  18. package/src/recipes/menu.ts +13 -1
  19. package/src/recipes/modal.ts +1 -1
  20. package/src/recipes/recipes-slot.ts +7 -2
  21. package/src/recipes/segmentedFields.ts +192 -0
  22. package/src/recipes/segmentedInputs.ts +106 -0
  23. package/src/recipes/text.ts +32 -28
  24. package/src/recipes/timeMenus.ts +110 -0
  25. package/src/styles/primitives/zIndex.ts +1 -0
  26. package/src/styles/semantics/colors.ts +44 -0
  27. package/src/styles/semantics/zIndex.ts +2 -0
  28. package/src/styles/utilities/conditions.ts +1 -0
  29. package/src/styles/utilities/transitions.ts +2 -1
  30. package/src/utils/dsChain.ts +113 -0
  31. package/src/utils/dsComponent.ts +44 -0
  32. package/src/utils/dsPart.ts +41 -0
  33. package/src/utils/splitProps.ts +15 -0
  34. package/dist/cetec-preset-CcvrY8wh.js.map +0 -1
  35. package/src/recipes/datePicker.ts +0 -230
  36. package/src/recipes/timePicker.ts +0 -206
@@ -7,14 +7,14 @@ import { ElementType } from 'react';
7
7
  import { HTMLProps } from 'react';
8
8
  import { JSX } from 'react/jsx-runtime';
9
9
  import { JSX as JSX_2 } from 'react';
10
- import { JSXElementConstructor } from 'react';
10
+ import { KeyboardEventHandler } from 'react';
11
11
  import { MouseEvent as MouseEvent_2 } from 'react';
12
12
  import { Placement } from '@floating-ui/react';
13
13
  import { Preset } from '@pandacss/dev';
14
14
  import { ReactElement } from 'react';
15
15
  import { ReactNode } from 'react';
16
+ import { Ref } from 'react';
16
17
  import { RefObject } from 'react';
17
- import { SVGAttributes } from 'react';
18
18
 
19
19
  declare type AdvancedPseudos =
20
20
  | ":-moz-any()"
@@ -42,6 +42,12 @@ declare type AdvancedPseudos =
42
42
  | ":nth-of-type"
43
43
  | ":where";
44
44
 
45
+ /**
46
+ * Numeric design-token sizes supported by the icon recipe. Non-numeric sizes
47
+ * do not have corresponding recipe variants.
48
+ */
49
+ export declare type AllowedIconSizes = keyof typeof numericSizes;
50
+
45
51
  declare type AnimationToken = "spin" | "ping" | "pulse" | "bounce" | "skeletonWave"
46
52
 
47
53
  declare type AnySelector = `${string}&` | `&${string}` | `@${AtRuleType}${string}`
@@ -65,6 +71,8 @@ declare type AriaAttributes =
65
71
  declare type AspectRatioToken = "square" | "landscape" | "portrait" | "wide" | "ultrawide" | "golden"
66
72
 
67
73
  declare type AsProp<T extends ElementType> = {
74
+ /** Element or component rendered by the polymorphic component. */
75
+ /** @default "div" */
68
76
  as?: T;
69
77
  };
70
78
 
@@ -84,38 +92,199 @@ declare type AtRuleType = 'media' | 'layer' | 'container' | 'supports' | 'page'
84
92
  declare type AttributeSelector = `&${Pseudos | DataAttributes | AriaAttributes}`
85
93
 
86
94
  /**
87
- * Avatar component for displaying user or entity images with optional
88
- * presence and status indicators.
95
+ * Filters and selects one or more metadata-only `Option` values.
96
+ *
97
+ * Use controlled `value` and `onValueChange`, or initialize uncontrolled state
98
+ * with `defaultValue`. The input uses combobox semantics; arrow keys navigate,
99
+ * Enter selects, and Escape closes the listbox. Supply `aria-label` or
100
+ * `aria-labelledby` when no external label is associated with the input.
101
+ *
102
+ * @example
103
+ * ```tsx
104
+ * <Autocomplete defaultValue="active" aria-label="Status">
105
+ * <Option value="active" label="Active" />
106
+ * <Option value="archived" label="Archived" />
107
+ * </Autocomplete>
108
+ * ```
109
+ */
110
+ export declare const Autocomplete: (props: AutocompleteProps) => JSX.Element;
111
+
112
+ declare type AutocompleteBaseProps = Omit<BoxProps, keyof AutocompleteVariantProps | 'children' | 'defaultValue' | 'onChange' | 'value'> & AutocompleteVariantProps & {
113
+ /** Controlled text displayed in the input. */
114
+ inputValue?: string;
115
+ /** Initial input text when `inputValue` is not provided. */
116
+ defaultInputValue?: string;
117
+ /** Runs when typing, selection, or clearing changes the input text. */
118
+ onInputValueChange?: (value: string, reason: AutocompleteInputChangeReason) => void;
119
+ /**
120
+ * Runs when the input text changes.
121
+ *
122
+ * @deprecated Use `onInputValueChange`.
123
+ */
124
+ onInputChange?: (value: string, reason: AutocompleteInputChangeReason) => void;
125
+ /** Controlled listbox visibility. Pair with `onOpenChange`. */
126
+ open?: boolean;
127
+ /**
128
+ * Initial listbox visibility when `open` is not provided.
129
+ *
130
+ * @default false
131
+ */
132
+ defaultOpen?: boolean;
133
+ /** Runs when interaction requests that the listbox open or close. */
134
+ onOpenChange?: (open: boolean, reason: AutocompleteOpenChangeReason) => void;
135
+ /**
136
+ * Offers the current input as a selectable option when it has no exact
137
+ * match.
138
+ *
139
+ * @default false
140
+ */
141
+ allowCustomValue?: boolean;
142
+ /** Creates the visible label for a custom-value option. */
143
+ getCreateOptionLabel?: (inputValue: string) => string;
144
+ /**
145
+ * Maximum selected tokens shown while an unfocused multiple Autocomplete
146
+ * is collapsed. Negative values and `undefined` show every token.
147
+ */
148
+ limitTags?: number;
149
+ /**
150
+ * Input hint shown while no value is selected.
151
+ *
152
+ * @default 'Select...'
153
+ */
154
+ placeholder?: string;
155
+ /**
156
+ * Floating UI placement of the listbox relative to the control.
157
+ *
158
+ * @default 'bottom-start'
159
+ */
160
+ placement?: Placement;
161
+ /**
162
+ * Gap between the control and listbox, in pixels.
163
+ *
164
+ * @default 4
165
+ */
166
+ offset?: number;
167
+ /** Metadata-only `Option` children used to populate the listbox. */
168
+ children?: ReactNode;
169
+ /** Identifier for the combobox input. A generated identifier is used when omitted. */
170
+ id?: string;
171
+ /** Form field name used by hidden inputs for selected values. */
172
+ name?: string;
173
+ /** Prevents focus and interaction. Overrides field context when provided. */
174
+ disabled?: boolean;
175
+ /** Allows focus and text selection while preventing value changes. */
176
+ readOnly?: boolean;
177
+ /** Applies error styling and `aria-invalid`. Overrides field context when provided. */
178
+ error?: boolean;
179
+ /** Applies valid styling to the control. */
180
+ valid?: boolean;
181
+ /** Applies invalid styling and `aria-invalid`. Overrides field context when provided. */
182
+ invalid?: boolean;
183
+ /** Spacing density used by listbox options. */
184
+ density?: MenuDensity;
185
+ /**
186
+ * Shows a loading indicator and replaces an empty list with `loadingText`.
187
+ *
188
+ * @default false
189
+ */
190
+ loading?: boolean;
191
+ /**
192
+ * Shows `loadingText` after the current options during incremental loading.
193
+ *
194
+ * @default false
195
+ */
196
+ loadingMore?: boolean;
197
+ /** Indicates that scrolling can request another page of options. */
198
+ hasMore?: boolean;
199
+ /** Runs near the end of the list when more options are available. */
200
+ onLoadMore?: () => void;
201
+ /**
202
+ * Status content shown while options are loading.
203
+ *
204
+ * @default 'Loading options…'
205
+ */
206
+ loadingText?: ReactNode;
207
+ /**
208
+ * Status content shown when filtering produces no options.
209
+ *
210
+ * @default 'No options'
211
+ */
212
+ noOptionsText?: ReactNode;
213
+ };
214
+
215
+ /** User actions that can change the selected Autocomplete value. */
216
+ export declare type AutocompleteChangeReason = 'select-option' | 'remove-option' | 'clear' | 'create-option';
217
+
218
+ /** Actions that can change the text displayed in the Autocomplete input. */
219
+ export declare type AutocompleteInputChangeReason = 'input' | 'selection' | 'clear';
220
+
221
+ /** Interactions that can request an Autocomplete listbox visibility change. */
222
+ export declare type AutocompleteOpenChangeReason = 'input' | 'focus' | 'keyboard' | 'selection' | 'escape' | 'outside-press';
223
+
224
+ /** Props accepted by {@link Autocomplete}, discriminated by `multiple`. */
225
+ export declare type AutocompleteProps<Multiple extends boolean = boolean> = Multiple extends true ? MultipleAutocompleteProps : Multiple extends false ? SingleAutocompleteProps : SingleAutocompleteProps | MultipleAutocompleteProps;
226
+
227
+ /** Selected value shape for single- or multiple-selection `Autocomplete`. */
228
+ export declare type AutocompleteValue<Multiple extends boolean = false> = Multiple extends true ? string[] : Multiple extends false ? string | null : string | string[] | null;
229
+
230
+ declare interface AutocompleteVariant {
231
+ /**
232
+ * @default "md"
233
+ */
234
+ size: "sm" | "md" | "lg" | "xl"
235
+ }
236
+
237
+ declare type AutocompleteVariantProps = {
238
+ [key in keyof AutocompleteVariant]?: ConditionalValue<AutocompleteVariant[key]> | undefined
239
+ }
240
+
241
+ /**
242
+ * Represents a person or entity with an image and deterministic fallback.
243
+ *
244
+ * Presence and status indicators are visual only. Supply equivalent text when
245
+ * either state is meaningful to assistive technology.
246
+ *
247
+ * @example
248
+ * ```tsx
249
+ * <Avatar src="/people/ada.jpg" alt="Ada Lovelace" name="Ada Lovelace" />
250
+ * ```
89
251
  */
90
252
  export declare const Avatar: (props: AvatarProps) => JSX.Element;
91
253
 
254
+ /** Presence states displayed at the bottom-right of an avatar. */
92
255
  declare type AvatarPresence = 'online' | 'busy' | 'offline' | 'focus';
93
256
 
94
- declare type AvatarProps = Omit<BoxProps, keyof AvatarVariantProps> & Omit<AvatarVariantProps, 'size' | 'shape'> & {
95
- /** Image source URL */
257
+ /** Props accepted by {@link Avatar}. */
258
+ export declare type AvatarProps = Omit<BoxProps, keyof AvatarVariantProps> & Omit<AvatarVariantProps, 'size' | 'shape'> & {
259
+ /** Image URL. A failed or missing image falls back to custom content, initials, or a user icon. */
96
260
  src?: string;
97
- /** Alt text for image */
261
+ /** Alternative text for the image. Use an empty string when nearby text already identifies the entity. */
262
+ /** @default "" */
98
263
  alt?: string;
99
- /** Name for generating initials fallback */
264
+ /** Name used to generate first-and-last initials when no image is available. */
100
265
  name?: string;
101
- /** Size of the avatar */
266
+ /** Visual size. An explicit value takes precedence over slot context. */
102
267
  size?: AvatarSize;
103
- /** Shape of the avatar */
268
+ /** Outline shape of the avatar. */
269
+ /** @default "circle" */
104
270
  shape?: AvatarShape;
105
- /** Presence indicator (bottom-right) */
271
+ /** Decorative presence indicator shown at the bottom-right. Provide equivalent text elsewhere when the state matters. */
106
272
  presence?: AvatarPresence;
107
- /** Status indicator (top-right) */
273
+ /** Decorative status indicator shown at the top-right. Provide equivalent text elsewhere when the state matters. */
108
274
  status?: AvatarStatus;
109
- /** Custom fallback content (overrides initials) */
275
+ /** Fallback content that takes precedence over generated initials and the default user icon. */
110
276
  fallback?: ReactNode;
111
- /** Border color for the avatar */
277
+ /** CSS border color applied to the avatar root. */
112
278
  borderColor?: string;
113
279
  };
114
280
 
281
+ /** Supported outline shapes for {@link Avatar}. */
115
282
  declare type AvatarShape = AvatarVariantProps['shape'];
116
283
 
284
+ /** Supported visual sizes for {@link Avatar}. */
117
285
  declare type AvatarSize = NonNullable<AvatarVariantProps['size']>;
118
286
 
287
+ /** Status states displayed at the top-right of an avatar. */
119
288
  declare type AvatarStatus = 'approved' | 'declined' | 'locked';
120
289
 
121
290
  declare interface AvatarVariant {
@@ -134,26 +303,36 @@ declare type AvatarVariantProps = {
134
303
  }
135
304
 
136
305
  /**
137
- * Badge component for displaying notification counts or status indicators.
306
+ * Displays a notification count or compact status indicator.
307
+ *
308
+ * Without `children`, the badge is standalone. With children, it positions the
309
+ * indicator at the anchor's top-right. Omitting `count` renders a dot. The
310
+ * badge does not announce updates by itself; add an accessible label or live
311
+ * region when the value conveys essential information.
138
312
  *
139
- * - Without children: renders as standalone badge
140
- * - With children: wraps content and positions badge at top-right
141
- * - Without count prop: shows as dot
142
- * - With count prop: shows the number (or "99+" if exceeds overflowCount)
313
+ * @example
314
+ * ```tsx
315
+ * <Badge count={3}><Icon name="bell" aria-label="Notifications" /></Badge>
316
+ * ```
143
317
  */
144
318
  export declare const Badge: (props: BadgeProps) => JSX.Element | null;
145
319
 
146
- declare type BadgeProps = Omit<BoxProps, keyof BadgeVariantProps> & Omit<BadgeVariantProps, 'standalone' | 'dot'> & {
147
- /** Number to show in badge. If provided, switches to count mode. */
320
+ /** Props accepted by {@link Badge}. */
321
+ export declare type BadgeProps = Omit<BoxProps, keyof BadgeVariantProps> & Omit<BadgeVariantProps, 'standalone' | 'dot'> & {
322
+ /** Numeric content. Providing a value switches the badge from dot mode to count mode. */
148
323
  count?: number;
149
- /** Show badge when count is zero. Default: false */
324
+ /** Keeps the indicator visible when `count` is zero. */
325
+ /** @default false */
150
326
  showZero?: boolean;
151
- /** Max count to show. Displays "99+" when exceeded. Default: 99 */
327
+ /** Largest count shown directly; larger values render as `{overflowCount}+`. */
328
+ /** @default 99 */
152
329
  overflowCount?: number;
153
- /** Color scheme of the badge. Default: 'danger' */
330
+ /** Semantic color treatment of the indicator. */
331
+ /** @default "danger" */
154
332
  variant?: BadgeVariantProps['variant'];
155
- /** Content to wrap with the badge */
333
+ /** Content used as the positioning anchor. Without children, the badge is standalone. */
156
334
  children?: ReactNode;
335
+ /** Visual indicator size. An explicit value takes precedence over slot context. */
157
336
  size?: BadgeVariantProps['size'];
158
337
  };
159
338
 
@@ -199,13 +378,25 @@ declare type BorderToken = "default" | "bold" | "inverse" | "disabled" | "input"
199
378
  declare type BorderWidthToken = "0" | "1" | "2" | "4" | "8" | "16"
200
379
 
201
380
  /**
202
- * Our base polymorphic component, which provides the correct default props based on the rendered element type.
203
- * Note: in React 19+, ref is passed through as a prop, and onClick is inherited based on the element type.
381
+ * Renders a token-aware polymorphic foundation for design-system components.
382
+ *
383
+ * `Box` renders a `div` by default. Set `as` to use another semantic element or
384
+ * component; compatible native props and the React 19 `ref` prop follow that
385
+ * selection. Prefer a semantic component when one already expresses the
386
+ * intended behavior.
387
+ *
388
+ * @example
389
+ * ```tsx
390
+ * <Box as="section" p="16" aria-labelledby="summary-heading">
391
+ * Summary content
392
+ * </Box>
393
+ * ```
204
394
  */
205
- export declare const Box: <T extends ElementType = "div">(props: BoxProps<T>) => ReactElement<any, string | JSXElementConstructor<any>>;
395
+ export declare const Box: <T extends ElementType = "div">(props: BoxProps<T>) => JSX.Element;
206
396
 
207
397
  declare type BoxOwnProps = SystemStyleObject_2 & BoxVariantProps;
208
398
 
399
+ /** Props accepted by {@link Box}, including Panda style and native element props. */
209
400
  export declare type BoxProps<T extends ElementType = ElementType> = PolymorphicComponentProps<T, BoxOwnProps>;
210
401
 
211
402
  declare interface BoxVariant {
@@ -216,9 +407,32 @@ declare type BoxVariantProps = {
216
407
  [key in keyof BoxVariant]?: ConditionalValue<BoxVariant[key]> | undefined
217
408
  }
218
409
 
410
+ /**
411
+ * Displays the current navigation path as a semantic unordered list.
412
+ *
413
+ * Linked segments use {@link Link}; segments without `href` are rendered as
414
+ * plain text. Use page navigation instead when the hierarchy is not a path to
415
+ * the current location.
416
+ *
417
+ * @example
418
+ * ```tsx
419
+ * <Breadcrumbs
420
+ * items={[
421
+ * { id: 'home', label: 'Home', href: '/' },
422
+ * { id: 'invoices', label: 'Invoices' },
423
+ * ]}
424
+ * />
425
+ * ```
426
+ */
219
427
  export declare const Breadcrumbs: (props: BreadcrumbsProps) => JSX.Element;
220
428
 
221
- declare type BreadcrumbsProps = Omit<BoxProps, keyof BreadcrumbsVariantProps> & BreadcrumbsVariantProps & {
429
+ /** Props for {@link Breadcrumbs}. */
430
+ export declare type BreadcrumbsProps = Omit<BoxProps, keyof BreadcrumbsVariantProps> & BreadcrumbsVariantProps & {
431
+ /**
432
+ * Ordered path segments. A segment with `href` renders as a link; a segment
433
+ * without it renders as plain text, which is normally the current page.
434
+ * Keep the final segment non-linked when it represents the current page.
435
+ */
222
436
  items: {
223
437
  id: string;
224
438
  label: string;
@@ -234,9 +448,23 @@ declare type BreadcrumbsVariantProps = {
234
448
  [key in keyof BreadcrumbsVariant]?: ConditionalValue<BreadcrumbsVariant[key]> | undefined
235
449
  }
236
450
 
451
+ /**
452
+ * Displays the largest currently matching design-system breakpoint.
453
+ *
454
+ * This is a development aid, not user-facing application content. It renders a
455
+ * colored `Tag` from `@media/base` through `@media/2xl` based on media-query
456
+ * hooks.
457
+ *
458
+ * @example
459
+ * ```tsx
460
+ * <BreakpointIndicator />
461
+ * ```
462
+ */
237
463
  export declare const BreakpointIndicator: (props: BreakpointIndicatorProps) => JSX.Element;
238
464
 
239
- declare type BreakpointIndicatorProps = Omit<BoxProps, keyof BreakpointIndicatorVariantProps> & BreakpointIndicatorVariantProps & {
465
+ /** Props for {@link BreakpointIndicator}, a development breakpoint readout. */
466
+ export declare type BreakpointIndicatorProps = Omit<BoxProps, keyof BreakpointIndicatorVariantProps> & BreakpointIndicatorVariantProps & {
467
+ /** Recipe variant for the indicator's visual treatment. */
240
468
  variant?: BreakpointIndicatorVariantProps['variant'];
241
469
  };
242
470
 
@@ -251,6 +479,7 @@ declare type BreakpointIndicatorVariantProps = {
251
479
  [key in keyof BreakpointIndicatorVariant]?: ConditionalValue<BreakpointIndicatorVariant[key]> | undefined
252
480
  }
253
481
 
482
+ /** Key of a Cetec viewport breakpoint token. */
254
483
  declare type BreakpointKey = keyof typeof breakpoints;
255
484
 
256
485
  declare const breakpoints: {
@@ -264,20 +493,78 @@ declare const breakpoints: {
264
493
 
265
494
  declare type BreakpointToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl"
266
495
 
496
+ /**
497
+ * Performs an action or navigates to a location.
498
+ *
499
+ * Renders a native `button` by default, or an anchor when `href` is supplied.
500
+ * Use {@link IconButton} for actions represented only by an icon. In a
501
+ * `FormField` or slot context, explicitly supplied `size`, `error`, `invalid`,
502
+ * and `disabled` values take precedence over slot context, which takes
503
+ * precedence over field context. Its recipe defaults to the `standard` variant
504
+ * and `md` size.
505
+ *
506
+ * @example
507
+ * ```tsx
508
+ * <Button onClick={saveInvoice}>Save invoice</Button>
509
+ * ```
510
+ */
267
511
  export declare const Button: (props: ButtonProps) => JSX.Element;
268
512
 
269
- declare type ButtonProps = Omit<BoxProps, keyof ButtonVariantProps> & Omit<ButtonVariantProps, 'before' | 'after' | 'iconBefore' | 'iconAfter'> & {
513
+ /**
514
+ * Props for {@link Button}. Extends {@link BoxProps} for layout and native
515
+ * element attributes while reserving the button recipe's visual variants.
516
+ */
517
+ export declare type ButtonProps = Omit<BoxProps, keyof ButtonVariantProps | 'fontSize' | 'fontVariant'> & Omit<ButtonVariantProps, 'before' | 'after' | 'iconBefore' | 'iconAfter'> & {
518
+ /** Content rendered before the button label. Takes precedence over `iconBefore`. */
270
519
  before?: ReactNode;
520
+ /** Content rendered after the button label. Takes precedence over `iconAfter`. */
271
521
  after?: ReactNode;
522
+ /**
523
+ * Legacy icon name rendered before the label when `before` is not provided.
524
+ *
525
+ * @deprecated Use `before={<Icon name="..." aria-hidden />}`. This alias
526
+ * will be removed in a future major release.
527
+ */
272
528
  iconBefore?: IconNamesList;
529
+ /**
530
+ * Legacy icon name rendered after the label when `after` is not provided.
531
+ *
532
+ * @deprecated Use `after={<Icon name="..." aria-hidden />}`. This alias
533
+ * will be removed in a future major release.
534
+ */
273
535
  iconAfter?: IconNamesList;
536
+ /** When provided, renders an anchor instead of a native button. */
274
537
  href?: string;
538
+ /**
539
+ * Shows a centered spinner, hides the visible content, and sets
540
+ * `aria-busy`. Loading does not disable the control; set `disabled` when
541
+ * the action must not be available.
542
+ *
543
+ * @default false
544
+ */
275
545
  loading?: boolean;
546
+ /** Visible label and optional inline content for the action. */
276
547
  children: string | ReactNode;
548
+ /** Marks the control as having an error for styling and descendant slots. */
277
549
  error?: boolean;
550
+ /** Sets `aria-invalid` and marks the control invalid for styling and slots. */
278
551
  invalid?: boolean;
552
+ /**
553
+ * Disables a native button. For links, marks the anchor `aria-disabled` and
554
+ * prevents its default click navigation.
555
+ */
279
556
  disabled?: boolean;
557
+ /**
558
+ * Native button type; ignored when `href` causes the component to render an
559
+ * anchor.
560
+ *
561
+ * @default 'button'
562
+ */
280
563
  type?: 'submit' | 'reset' | 'button';
564
+ /** Font size forwarded to the button's text treatment. */
565
+ fontSize?: BoxProps['fontSize'];
566
+ /** Font variant forwarded to the button's text treatment. */
567
+ fontVariant?: BoxProps['fontVariant'];
281
568
  };
282
569
 
283
570
  declare interface ButtonVariant {
@@ -297,13 +584,91 @@ declare type ButtonVariantProps = {
297
584
  [key in keyof ButtonVariant]?: ConditionalValue<ButtonVariant[key]> | undefined
298
585
  }
299
586
 
587
+ /**
588
+ * Displays an accessible day, month, and year selection grid.
589
+ *
590
+ * Use `value` and `onChange` for date selection. `viewDate` separately controls
591
+ * the visible month; omit it to let Calendar manage navigation internally.
592
+ * Dates outside `minDate` and `maxDate` remain visible but unavailable.
593
+ *
594
+ * @example
595
+ * ```tsx
596
+ * <Calendar value={date} onChange={setDate} label="Choose invoice date" />
597
+ * ```
598
+ */
599
+ export declare const Calendar: (props: CalendarProps) => JSX.Element;
600
+
601
+ /** Props for {@link Calendar}, including selection, bounds, and visible-month state. */
602
+ export declare type CalendarProps = Omit<BoxProps, keyof CalendarVariantProps | 'children'> & Omit<CalendarVariantProps, 'type'> & {
603
+ /** Controlled selected date. */
604
+ value?: DateValue | null;
605
+ /** Runs when a selectable day is chosen. Calendar never clears its own value. */
606
+ onChange?: (value: DateValue) => void;
607
+ /**
608
+ * Range-selection endpoints, for DateRangeMenu. Independent of `value` —
609
+ * a Calendar can show a range highlight (start/end fill + in-between
610
+ * tint) regardless of which month it's currently displaying, since a
611
+ * range's two endpoints may fall in months neither calendar is showing.
612
+ */
613
+ rangeStart?: DateValue | null;
614
+ /** End of the optional visual range highlight. */
615
+ rangeEnd?: DateValue | null;
616
+ /** Earliest selectable date. */
617
+ minDate?: DateValue;
618
+ /** Latest selectable date. */
619
+ maxDate?: DateValue;
620
+ /** Controlled visible month and year. */
621
+ viewDate?: ViewDate;
622
+ /** Initial visible month and year when `viewDate` is not provided. Defaults to `value`, then today. */
623
+ defaultViewDate?: ViewDate;
624
+ /** Runs when month or year navigation requests a new visible month. */
625
+ onViewDateChange?: (viewDate: ViewDate) => void;
626
+ /** Prevents navigation and date selection. */
627
+ disabled?: boolean;
628
+ /** Accessible label prefix for the calendar grid. */
629
+ label?: string;
630
+ };
631
+
632
+ declare interface CalendarVariant {
633
+ /**
634
+ * @default "days"
635
+ */
636
+ type: "days" | "months" | "years"
637
+ }
638
+
639
+ declare type CalendarVariantProps = {
640
+ [key in keyof CalendarVariant]?: ConditionalValue<CalendarVariant[key]> | undefined
641
+ }
642
+
643
+ /**
644
+ * Groups related content in a visual container that can optionally navigate or
645
+ * act as a control.
646
+ *
647
+ * A card with `href` renders an anchor. A card that is otherwise interactive
648
+ * renders a button; a non-interactive card renders a `div`. Avoid nesting other
649
+ * interactive elements inside an interactive card.
650
+ *
651
+ * @example
652
+ * ```tsx
653
+ * <Card href="/orders/123">Order 123</Card>
654
+ * ```
655
+ */
300
656
  export declare const Card: (props: CardProps) => JSX.Element;
301
657
 
302
- declare type CardProps = Omit<BoxProps, keyof CardVariantProps> & CardVariantProps & {
658
+ /** Props accepted by {@link Card}. */
659
+ export declare type CardProps = Omit<BoxProps, keyof CardVariantProps> & CardVariantProps & {
660
+ /** Destination that makes the entire card render as a link. */
303
661
  href?: string;
662
+ /** Card content. */
304
663
  children?: string | ReactNode;
664
+ /** Marks the card as currently grabbed by a drag interaction. */
665
+ /** @default false */
305
666
  grabbed?: boolean;
667
+ /** Disables the rendered button or prevents link navigation. */
668
+ /** @default false */
306
669
  disabled?: boolean;
670
+ /** Forces button semantics and interactive styling without an `href`. */
671
+ /** @default false */
307
672
  interactive?: boolean;
308
673
  };
309
674
 
@@ -319,46 +684,89 @@ declare type CardVariantProps = {
319
684
  [key in keyof CardVariant]?: ConditionalValue<CardVariant[key]> | undefined
320
685
  }
321
686
 
687
+ /**
688
+ * Panda CSS preset containing Cetec tokens, semantic tokens, recipes,
689
+ * utilities, patterns, global CSS, and conditions.
690
+ *
691
+ * Add this preset to a Panda configuration to generate styles that match the
692
+ * design system. It extends Panda's base preset while replacing its
693
+ * `dropShadow` utility and omitting the base `box` and `divider` patterns.
694
+ *
695
+ * @example
696
+ * ```ts
697
+ * import { cetecPreset } from 'cetec-design-system';
698
+ *
699
+ * export default defineConfig({ presets: [cetecPreset] });
700
+ * ```
701
+ */
322
702
  export declare const cetecPreset: Preset;
323
703
 
324
704
  /**
325
- * Checkbox supports both controlled and uncontrolled usage.
705
+ * A native checkbox control without a visible label.
706
+ *
707
+ * Use {@link CheckboxInput} when the checkbox needs a text label. Supply
708
+ * `checked` with `onChange` for controlled state, or `defaultChecked` for
709
+ * uncontrolled state. The primitive renders an `<input type="checkbox">`, so
710
+ * its `name` participates in native form submission. Associate it with a
711
+ * visible label using `id`; `indeterminate` is a visual mixed state only.
326
712
  *
327
713
  * @example
328
- * <Checkbox defaultChecked />
714
+ * ```tsx
715
+ * <Checkbox name="notifications" defaultChecked />
716
+ * ```
329
717
  *
330
718
  * @example
719
+ * ```tsx
331
720
  * const [checked, setChecked] = useState(false);
332
- * <Checkbox checked={checked} onChange={(e) => setChecked(e.target.checked)} />
721
+ * <Checkbox name="notifications" checked={checked} onChange={(event) => setChecked(event.target.checked)} />
722
+ * ```
333
723
  */
334
724
  export declare const Checkbox: (props: CheckboxProps) => JSX.Element;
335
725
 
336
726
  /**
337
- * Helper type for checkbox change events
727
+ * Native change event emitted by {@link Checkbox}.
338
728
  * @example
339
729
  * const handleChange: CheckboxChangeHandler = (e) => setChecked(e.target.checked);
340
730
  */
341
- declare type CheckboxChangeEvent = ChangeEvent<HTMLInputElement>;
731
+ export declare type CheckboxChangeEvent = ChangeEvent<HTMLInputElement>;
342
732
 
343
733
  /**
344
- * Helper type for checkbox change handler functions
734
+ * Handler for a {@link Checkbox} native change event.
345
735
  * @example
346
736
  * const handleChange: CheckboxChangeHandler = (e) => setChecked(e.target.checked);
347
737
  */
348
- declare type CheckboxChangeHandler = (e: CheckboxChangeEvent) => void;
738
+ export declare type CheckboxChangeHandler = (e: CheckboxChangeEvent) => void;
349
739
 
740
+ /**
741
+ * A checkbox paired with a clickable label.
742
+ *
743
+ * Use this instead of {@link Checkbox} for ordinary labelled form controls.
744
+ * It generates an input ID when needed and connects it to the rendered label.
745
+ * Its checked-state and field-context behavior match `Checkbox`; explicit
746
+ * `disabled`, `error`, and `invalid` props override field context.
747
+ *
748
+ * @example
749
+ * ```tsx
750
+ * <CheckboxInput name="terms" defaultChecked>
751
+ * I agree to the terms
752
+ * </CheckboxInput>
753
+ * ```
754
+ */
350
755
  export declare const CheckboxInput: (props: CheckboxInputProps) => JSX.Element;
351
756
 
352
- declare type CheckboxInputProps = Omit<BoxProps, keyof CheckboxInputVariantProps> & CheckboxInputVariantProps & {
353
- name: string;
354
- checked?: boolean;
757
+ /** Props for {@link CheckboxInput}, a labelled {@link Checkbox}. */
758
+ export declare type CheckboxInputProps = Omit<BoxProps, keyof CheckboxInputVariantProps> & CheckboxInputVariantProps & {
759
+ /** Form field name submitted when checked. */ name: string;
760
+ /** Controlled checked state. Pair with `onChange`; do not combine with `defaultChecked`. */ checked?: boolean;
761
+ /** Initial uncontrolled checked state; updates after mount are ignored. */
762
+ /** @default false */
355
763
  defaultChecked?: boolean;
356
- onChange?: CheckboxChangeHandler;
357
- id?: string;
358
- error?: boolean;
359
- invalid?: boolean;
360
- children?: string | ReactNode;
361
- disabled?: boolean;
764
+ /** Runs when the contained native checkbox changes. */ onChange?: CheckboxChangeHandler;
765
+ /** Input ID. When omitted, a stable React ID is generated for the label association. */ id?: string;
766
+ /** Applies error styling to the checkbox and overrides field context. */ error?: boolean;
767
+ /** Marks the checkbox invalid and overrides field context. */ invalid?: boolean;
768
+ /** Visible label content. Provide text or an accessible label element; this wrapper supplies `htmlFor`. */ children?: string | ReactNode;
769
+ /** Disables the label and checkbox, overriding field context. */ disabled?: boolean;
362
770
  };
363
771
 
364
772
  declare interface CheckboxInputVariant {
@@ -369,16 +777,19 @@ declare type CheckboxInputVariantProps = {
369
777
  [key in keyof CheckboxInputVariant]?: ConditionalValue<CheckboxInputVariant[key]> | undefined
370
778
  }
371
779
 
372
- declare type CheckboxProps = Omit<BoxProps, 'checked' | 'defaultChecked' | 'onChange' | keyof CheckboxVariantProps> & CheckboxVariantProps & {
373
- name: string;
374
- checked?: boolean;
780
+ /** Props for {@link Checkbox}, the unlabelled native checkbox primitive. */
781
+ export declare type CheckboxProps = Omit<BoxProps, 'checked' | 'defaultChecked' | 'onChange' | keyof CheckboxVariantProps> & CheckboxVariantProps & {
782
+ /** Form field name submitted when the checkbox is checked. */ name: string;
783
+ /** Controlled checked state. Pair with `onChange`; do not combine with `defaultChecked`. */ checked?: boolean;
784
+ /** Initial uncontrolled checked state; later updates are ignored. */
785
+ /** @default false */
375
786
  defaultChecked?: boolean;
376
- onChange?: CheckboxChangeHandler;
377
- id?: string;
378
- error?: boolean;
379
- invalid?: boolean;
380
- disabled?: boolean;
381
- indeterminate?: boolean;
787
+ /** Runs for the native input change event; read the next state from `event.target.checked`. */ onChange?: CheckboxChangeHandler;
788
+ /** Native input ID. Use it to associate an external `<label>` with the checkbox. */ id?: string;
789
+ /** Applies error styling, taking precedence over field context. */ error?: boolean;
790
+ /** Marks the native input invalid with `aria-invalid` and takes precedence over field context. */ invalid?: boolean;
791
+ /** Disables interaction and takes precedence over field context. */ disabled?: boolean;
792
+ /** Displays the mixed state and sets the native `indeterminate` property. This does not change `checked`. */ indeterminate?: boolean;
382
793
  };
383
794
 
384
795
  declare interface CheckboxVariant {
@@ -389,51 +800,135 @@ declare type CheckboxVariantProps = {
389
800
  [key in keyof CheckboxVariant]?: ConditionalValue<CheckboxVariant[key]> | undefined
390
801
  }
391
802
 
803
+ /**
804
+ * Renders a compact label, optionally with an action or dismissal control.
805
+ *
806
+ * A chip is static unless it has `onClick` or both a `value` and a parent
807
+ * `ChipGroup`. Grouped single-select chips use radio behavior and arrow-key
808
+ * roving focus; grouped multi-select chips use checkbox behavior. `before` and
809
+ * `after` slots inherit state through slot context.
810
+ *
811
+ * @example
812
+ * ```tsx
813
+ * <Chip dismissable onDismiss={() => remove('design')}>Design</Chip>
814
+ * ```
815
+ */
392
816
  export declare const Chip: (props: ChipProps) => JSX.Element;
393
817
 
818
+ /**
819
+ * Coordinates the selection and keyboard behavior of child {@link Chip} values.
820
+ *
821
+ * Use `value` with `onChange` for controlled selection, or `defaultValue` for
822
+ * initialization only. In a single-select group, arrow keys move focus and
823
+ * select the newly focused chip. Label the group with `label` when it needs an
824
+ * accessible name.
825
+ *
826
+ * @example
827
+ * ```tsx
828
+ * <ChipGroup type="single" defaultValue="all" label="Status">
829
+ * <Chip value="all">All</Chip>
830
+ * <Chip value="open">Open</Chip>
831
+ * </ChipGroup>
832
+ * ```
833
+ */
394
834
  export declare const ChipGroup: (props: ChipGroupProps) => JSX.Element;
395
835
 
836
+ /** Shared selection and keyboard-navigation state for a {@link ChipGroup}. */
396
837
  declare type ChipGroupContextValue = {
838
+ /** The group's single- or multi-select behavior. */
397
839
  type: ChipGroupType;
840
+ /** Optional size inherited by child chips. */
398
841
  size?: ChipGroupSize;
842
+ /** Current selected value or values. */
399
843
  value: string | string[];
844
+ /** Updates the group's selected value or values. */
400
845
  onChange: (value: string | string[]) => void;
846
+ /** Optional shared form metadata supplied by the group. */
401
847
  name?: string;
848
+ /** Registers a selectable child chip for keyboard navigation. */
402
849
  registerChip: (value: string, ref: RefObject<HTMLButtonElement | null>) => void;
850
+ /** Removes a child chip from keyboard navigation. */
403
851
  unregisterChip: (value: string) => void;
852
+ /** Moves focus to the next or previous registered chip. */
404
853
  focusChip: (direction: 'next' | 'prev', currentValue: string) => void;
854
+ /** Registered selectable chip values in DOM registration order. */
405
855
  chipValues: string[];
406
856
  };
407
857
 
408
- declare type ChipGroupProps = Omit<WrapProps, 'role'> & Omit<BoxProps, keyof WrapProps> & {
858
+ declare type ChipGroupOwnProps = {
859
+ /** Required selection model. `'single'` uses radio semantics; `'multi'` uses checkbox semantics. */
409
860
  type: ChipGroupType;
861
+ /** Controlled selected value. Use a string for `'single'` or a string array for `'multi'`, with `onChange` to accept updates. */
410
862
  value?: string | string[];
863
+ /**
864
+ * Initial selected value for an uncontrolled group. It is used only on first render.
865
+ * @default '' for `'single'`; [] for `'multi'`
866
+ */
411
867
  defaultValue?: string | string[];
868
+ /** Called with the next selection when a child chip is activated. */
412
869
  onChange?: (value: string | string[]) => void;
870
+ /** `Chip` children. Chips require a unique `value` to participate in selection. */
413
871
  children: ReactNode;
872
+ /** Size inherited by child chips unless a child supplies its own size. */
414
873
  size?: ChipGroupSize;
874
+ /** Accessible name applied to the group container. */
415
875
  label?: string;
876
+ /** Container identifier. When supplied, the container references `${id}-label`, which consumers must render themselves. */
416
877
  id?: string;
878
+ /** Shared form metadata exposed to child-chip context; it does not create native form inputs. */
417
879
  name?: string;
418
880
  };
419
881
 
882
+ /** Props for {@link ChipGroup}, which coordinates selectable child chips. */
883
+ export declare type ChipGroupProps = Omit<BoxProps, keyof ChipGroupWrapProps | keyof ChipGroupOwnProps | 'role'> & ChipGroupWrapProps & ChipGroupOwnProps;
884
+
885
+ /** Chip recipe size inherited by `Chip` descendants of a group. */
420
886
  declare type ChipGroupSize = ChipVariantProps['size'];
421
887
 
888
+ /** Selection model used by {@link ChipGroup}. */
422
889
  declare type ChipGroupType = 'single' | 'multi';
423
890
 
424
- declare type ChipProps = Omit<BoxProps, keyof ChipVariantProps> & Omit<ChipVariantProps, 'before' | 'after' | 'dismissable'> & {
891
+ declare type ChipGroupWrapProps = Pick<WrapProps, 'align' | 'columnGap' | 'gap' | 'justify' | 'rowGap'>;
892
+
893
+ /** Props for {@link Chip}, a compact label that can be static, actionable, selectable, or dismissible. */
894
+ export declare type ChipProps = Omit<BoxProps, keyof ChipVariantProps> & Omit<ChipVariantProps, 'before' | 'after' | 'dismissable'> & {
895
+ /** Visible chip label, also used in the default dismissal label. */
425
896
  children: string;
897
+ /** Content displayed before the chip label. */
426
898
  before?: ReactNode;
899
+ /** Content displayed after the chip label and before the dismiss control. */
427
900
  after?: ReactNode;
901
+ /** Disables the primary action and dismiss button. The local value takes precedence over slot and field context. */
428
902
  disabled?: boolean;
903
+ /** Shows a spinner and disables chip interaction. */
429
904
  loading?: boolean;
905
+ /** Applies deleted styling without removing the chip from the DOM. */
430
906
  deleted?: boolean;
907
+ /** Adds a dismiss button after the chip content. */
431
908
  dismissable?: boolean;
909
+ /**
910
+ * Accessible name for the dismiss button.
911
+ * @default `Remove ${children}`
912
+ */
432
913
  dismissLabel?: string;
914
+ /** Ref forwarded to the dismiss button. */
915
+ dismissButtonRef?: Ref<HTMLButtonElement>;
916
+ /** Tab order override for the dismiss button. */
917
+ dismissButtonTabIndex?: number;
918
+ /** Applies error styling. The local value takes precedence over slot and field context. */
433
919
  error?: boolean;
920
+ /** Marks the chip invalid with `aria-invalid`. The local value takes precedence over slot and field context. */
434
921
  invalid?: boolean;
922
+ /** Called when the dismiss button is activated. The button is disabled when this callback is absent. */
435
923
  onDismiss?: () => void;
924
+ /** Keyboard handler composed onto the dismiss button. */
925
+ onDismissKeyDown?: KeyboardEventHandler<HTMLButtonElement>;
926
+ /**
927
+ * Native type for the chip's primary button when it is selectable or has `onClick`.
928
+ * @default 'button'
929
+ */
436
930
  type?: 'button' | 'submit' | 'reset';
931
+ /** Value used by a parent `ChipGroup` to identify and select this chip. */
437
932
  value?: string;
438
933
  };
439
934
 
@@ -451,10 +946,24 @@ declare type ChipVariantProps = {
451
946
  [key in keyof ChipVariant]?: ConditionalValue<ChipVariant[key]> | undefined
452
947
  }
453
948
 
949
+ /**
950
+ * Renders code content in a native `code` element.
951
+ *
952
+ * Use `Pre` for a preformatted code block. `lang` supplies element language
953
+ * metadata; it does not perform syntax highlighting.
954
+ *
955
+ * @example
956
+ * ```tsx
957
+ * <Code>npm run build</Code>
958
+ * ```
959
+ */
454
960
  export declare const Code: (props: CodeProps) => JSX.Element;
455
961
 
456
- declare type CodeProps = Omit<BoxProps, keyof CodeVariantProps | keyof TextProps> & CodeVariantProps & TextProps & {
962
+ /** Props accepted by {@link Code}. */
963
+ export declare type CodeProps = Omit<BoxProps, keyof CodeVariantProps | keyof TextProps> & CodeVariantProps & TextProps & {
964
+ /** Source code or inline content to render. */
457
965
  children?: string | ReactNode;
966
+ /** Language metadata forwarded to the native `code` element. */
458
967
  lang?: string;
459
968
  };
460
969
 
@@ -808,6 +1317,7 @@ declare interface Conditions {
808
1317
  "base": string
809
1318
  }
810
1319
 
1320
+ /** Key of a Cetec container-size token. */
811
1321
  declare type ContainerSizeKey = keyof typeof containerSizes;
812
1322
 
813
1323
  declare const containerSizes: {
@@ -1236,90 +1746,512 @@ declare namespace DataType {
1236
1746
  type VisualBox = "border-box" | "content-box" | "padding-box";
1237
1747
  }
1238
1748
 
1239
- export declare const DatePicker: (props: DatePickerProps) => JSX.Element;
1749
+ /** Segment order and separator convention used to display a date. */
1750
+ export declare type DateFormat = 'MM/DD/YYYY' | 'YYYY-MM-DD';
1751
+
1752
+ /**
1753
+ * Renders a segmented date field with optional leading and trailing content.
1754
+ *
1755
+ * The field accepts keyboard entry and stepping through year, month, and day
1756
+ * segments. Use `DatePicker` when a calendar menu is also needed.
1757
+ *
1758
+ * @example
1759
+ * ```tsx
1760
+ * <DateInput label="Invoice date" defaultValue={{ year: 2026, month: 8, day: 3 }} />
1761
+ * ```
1762
+ */
1763
+ export declare const DateInput: (props: DateInputProps) => JSX.Element;
1240
1764
 
1241
- declare type DatePickerProps = Omit<BoxProps, keyof DatePickerVariantProps | 'children'> & DatePickerVariantProps & {
1242
- /** Controlled value */
1765
+ /** Props for {@link DateInput}, including segmented date state and field slots. */
1766
+ export declare type DateInputProps = Omit<BoxProps, keyof SegmentedFieldsVariantProps | 'children'> & Omit<SegmentedFieldsVariantProps, 'field' | 'range' | 'before' | 'after'> & {
1767
+ /** Identifier forwarded to the segmented date group. */
1768
+ id?: string;
1769
+ /** Controlled date. Pair with `onChange`. */
1243
1770
  value?: DateValue | null;
1244
- /** Initial uncontrolled value */
1771
+ /** Initial date when `value` is not provided. */
1245
1772
  defaultValue?: DateValue | null;
1246
- /** Called when the date changes */
1773
+ /** Runs when the segmented date becomes complete or is cleared. */
1247
1774
  onChange?: (value: DateValue | null) => void;
1248
- /** Earliest selectable date */
1249
- minDate?: DateValue;
1250
- /** Latest selectable date */
1251
- maxDate?: DateValue;
1252
- /** Accessible label for the input group */
1775
+ /** Segment order and separator convention. */
1776
+ dateFormat?: DateFormat;
1777
+ /** Accessible name for the segmented date group. */
1253
1778
  label?: string;
1254
- disabled?: boolean;
1779
+ /** Content before the date field. Takes precedence over `iconBefore`. */
1780
+ before?: ReactNode;
1781
+ /** Content after the date field. Takes precedence over `iconAfter`. */
1782
+ after?: ReactNode;
1783
+ /** Legacy icon rendered before the field when `before` is absent. */
1784
+ iconBefore?: IconNamesList;
1785
+ /** Legacy icon rendered after the field when `after` is absent. */
1786
+ iconAfter?: IconNamesList;
1787
+ /** Applies error styling. Overrides field context when provided. */
1255
1788
  error?: boolean;
1789
+ /** Prevents editing. Overrides field context when provided. */
1790
+ disabled?: boolean;
1791
+ /** Applies invalid styling. Overrides field context when provided. */
1256
1792
  invalid?: boolean;
1257
- id?: string;
1258
- name?: string;
1259
- /** Controlled popover open state */
1793
+ /** Reflected through to the segmented field — lets a wrapping Menu/Picker show "active anchor" styling */
1260
1794
  open?: boolean;
1261
- /** Initial uncontrolled popover state */
1262
- defaultOpen?: boolean;
1263
- onOpenChange?: (open: boolean) => void;
1264
- size?: DatePickerVariantProps['size'];
1795
+ /** Forwarded to the segmented field — see SegmentedDate's onFocusWithin */
1796
+ onFocusWithin?: () => void;
1797
+ /** Forwarded to the segmented field — see SegmentedDate's onBlurWithin */
1798
+ onBlurWithin?: (relatedTarget: Node | null) => void;
1265
1799
  };
1266
1800
 
1267
- declare interface DatePickerVariant {
1268
- /**
1269
- * @default "md"
1270
- */
1271
- size: "sm" | "md" | "lg" | "xl"
1272
- }
1273
-
1274
- declare type DatePickerVariantProps = {
1275
- [key in keyof DatePickerVariant]?: ConditionalValue<DatePickerVariant[key]> | undefined
1276
- }
1277
-
1278
- export declare const DateRangePicker: (props: DateRangePickerProps) => JSX.Element;
1801
+ /**
1802
+ * Presents a calendar in a Menu and commits a selected day immediately.
1803
+ *
1804
+ * Supply a `trigger`, or set inherited `inline` to render the calendar in
1805
+ * normal flow. Selecting an enabled date calls `onChange` and closes a
1806
+ * triggered menu.
1807
+ *
1808
+ * @example
1809
+ * ```tsx
1810
+ * <DateMenu trigger={<Button>Choose date</Button>} onChange={setDate} />
1811
+ * ```
1812
+ */
1813
+ export declare const DateMenu: (props: DateMenuProps) => any;
1279
1814
 
1280
- declare type DateRangePickerProps = {
1281
- /** Start date value */
1282
- startValue?: DateValue | null;
1283
- /** End date value */
1284
- endValue?: DateValue | null;
1285
- /** Called when start date changes */
1286
- onStartChange?: (value: DateValue | null) => void;
1287
- /** Called when end date changes */
1288
- onEndChange?: (value: DateValue | null) => void;
1289
- /** Earliest selectable date (applies to both pickers) */
1815
+ /** Props for {@link DateMenu}, a Calendar presented through Menu behavior. */
1816
+ export declare type DateMenuProps = Omit<MenuProps, 'children' | 'onChange' | 'value'> & {
1817
+ /** Selected date shown by the calendar. */
1818
+ value?: DateValue | null;
1819
+ /** Commits immediately on day selection, then closes the menu. */
1820
+ onChange?: (value: DateValue | null) => void;
1821
+ /** Earliest selectable date. */
1290
1822
  minDate?: DateValue;
1291
- /** Latest selectable date (applies to both pickers) */
1823
+ /** Latest selectable date. */
1292
1824
  maxDate?: DateValue;
1825
+ /** Controlled visible calendar month. */
1826
+ viewDate?: ViewDate_2;
1827
+ /** Initial visible month when `viewDate` is not provided. */
1828
+ defaultViewDate?: ViewDate_2;
1829
+ /** Runs when calendar navigation requests a new visible month. */
1830
+ onViewDateChange?: (viewDate: ViewDate_2) => void;
1831
+ /** Prevents opening or selection and returns only the trigger. */
1293
1832
  disabled?: boolean;
1294
- error?: boolean;
1295
- /** Size passed to both DatePickers */
1296
- size?: DatePickerVariantProps['size'];
1297
- /** Accessible label prefix — used to build "Start date" and "End date" labels */
1833
+ /** Accessible label passed to the calendar grid. */
1298
1834
  label?: string;
1299
1835
  };
1300
1836
 
1301
- declare interface DateValue {
1302
- year: number;
1303
- month: number;
1304
- day: number;
1305
- }
1837
+ /**
1838
+ * Combines keyboard date entry with a calendar selection menu.
1839
+ *
1840
+ * Focusing the segmented input opens the menu. Typed dates and calendar
1841
+ * selections update the same controlled or uncontrolled value.
1842
+ *
1843
+ * @example
1844
+ * ```tsx
1845
+ * <DatePicker label="Due date" value={date} onChange={setDate} />
1846
+ * ```
1847
+ */
1848
+ export declare const DatePicker: (props: DatePickerProps) => JSX.Element;
1306
1849
 
1307
- export declare const deriveItemTextValue: ({ textValue, label, description, getItemText, }: {
1308
- textValue?: string;
1309
- label?: string;
1310
- description?: string;
1311
- getItemText: (item: {
1312
- label?: string;
1313
- description?: string;
1314
- }) => string;
1315
- }) => string;
1850
+ /** Props for {@link DatePicker}, combining a segmented input and calendar menu. */
1851
+ export declare type DatePickerProps = Pick<DateInputProps, 'id' | 'label' | 'before' | 'after' | 'iconBefore' | 'iconAfter' | 'error' | 'disabled' | 'invalid' | 'dateFormat' | 'size'> & {
1852
+ /** Controlled selected date. Pair with `onChange`. */
1853
+ value?: DateValue | null;
1854
+ /** Initial selected date when `value` is not provided. */
1855
+ defaultValue?: DateValue | null;
1856
+ /** Runs when typing or calendar selection commits a date. */
1857
+ onChange?: (value: DateValue | null) => void;
1858
+ /** Earliest selectable calendar date. */
1859
+ minDate?: DateValue;
1860
+ /** Latest selectable calendar date. */
1861
+ maxDate?: DateValue;
1862
+ /** Controlled visible calendar month. */
1863
+ viewDate?: ViewDate_4;
1864
+ /** Initial visible month when `viewDate` is not provided. */
1865
+ defaultViewDate?: ViewDate_4;
1866
+ /** Runs when calendar navigation requests a new visible month. */
1867
+ onViewDateChange?: (viewDate: ViewDate_4) => void;
1868
+ /** Floating UI placement of the calendar menu. */
1869
+ placement?: Placement;
1870
+ /** Controlled menu visibility. Pair with `onOpenChange`. */
1871
+ open?: boolean;
1872
+ /**
1873
+ * Initial menu visibility when `open` is not provided.
1874
+ *
1875
+ * @default false
1876
+ */
1877
+ defaultOpen?: boolean;
1878
+ /** Runs when interaction requests that the menu open or close. */
1879
+ onOpenChange?: (open: boolean) => void;
1880
+ };
1881
+
1882
+ /**
1883
+ * Renders start and end dates as two coordinated segmented fields.
1884
+ *
1885
+ * Each endpoint commits independently while the component preserves the other
1886
+ * endpoint. Use `DateRangePicker` when a calendar menu and Apply/Cancel flow
1887
+ * are also needed.
1888
+ *
1889
+ * @example
1890
+ * ```tsx
1891
+ * <DateRangeInput startLabel="Arrival" endLabel="Departure" />
1892
+ * ```
1893
+ */
1894
+ export declare const DateRangeInput: (props: DateRangeInputProps) => JSX.Element;
1895
+
1896
+ /** Props for {@link DateRangeInput}, including range state and field slots. */
1897
+ export declare type DateRangeInputProps = Omit<BoxProps, keyof SegmentedFieldsVariantProps | 'children'> & Omit<SegmentedFieldsVariantProps, 'field' | 'range' | 'before' | 'after'> & {
1898
+ /** Identifier applied to the range container. */
1899
+ id?: string;
1900
+ /** Controlled start and end dates. Pair with `onChange`. */
1901
+ value?: DateRangeValue | null;
1902
+ /** Initial range when `value` is not provided. */
1903
+ defaultValue?: DateRangeValue | null;
1904
+ /** Runs whenever either endpoint becomes complete or is cleared. */
1905
+ onChange?: (value: DateRangeValue | null) => void;
1906
+ /** Segment order and separator convention shared by both endpoints. */
1907
+ dateFormat?: DateFormat;
1908
+ /** Accessible name for the start-date segments. */
1909
+ startLabel?: string;
1910
+ /** Accessible name for the end-date segments. */
1911
+ endLabel?: string;
1912
+ /** Content before the range. Takes precedence over `iconBefore`. */
1913
+ before?: ReactNode;
1914
+ /** Content after the range. Takes precedence over `iconAfter`. */
1915
+ after?: ReactNode;
1916
+ /** Legacy icon rendered before the range when `before` is absent. */
1917
+ iconBefore?: IconNamesList;
1918
+ /** Legacy icon rendered after the range when `after` is absent. */
1919
+ iconAfter?: IconNamesList;
1920
+ /** Applies error styling. Overrides field context when provided. */
1921
+ error?: boolean;
1922
+ /** Prevents editing both endpoints. Overrides field context when provided. */
1923
+ disabled?: boolean;
1924
+ /** Applies invalid styling. Overrides field context when provided. */
1925
+ invalid?: boolean;
1926
+ /** Reflected through to the segmented fields — lets a wrapping Menu/Picker show "active anchor" styling */
1927
+ open?: boolean;
1928
+ /** Forwarded to both segmented fields — see SegmentedDate's onFocusWithin */
1929
+ onFocusWithin?: () => void;
1930
+ /** Forwarded to both segmented fields — see SegmentedDate's onBlurWithin */
1931
+ onBlurWithin?: (relatedTarget: Node | null) => void;
1932
+ };
1933
+
1934
+ /**
1935
+ * Selects a date range from two independently navigable calendars.
1936
+ *
1937
+ * Selection is held as a draft until Apply is pressed. Cancel restores the
1938
+ * committed `value`. Apply is unavailable until both endpoints are selected.
1939
+ *
1940
+ * @example
1941
+ * ```tsx
1942
+ * <DateRangeMenu
1943
+ * trigger={<Button>Choose dates</Button>}
1944
+ * value={range}
1945
+ * onChange={setRange}
1946
+ * />
1947
+ * ```
1948
+ */
1949
+ export declare const DateRangeMenu: (props: DateRangeMenuProps) => any;
1950
+
1951
+ /** Props for {@link DateRangeMenu}, including committed range and bounds. */
1952
+ export declare type DateRangeMenuProps = Omit<MenuProps, 'children' | 'onChange' | 'value'> & {
1953
+ /** Committed start and end dates used to initialize the menu draft. */
1954
+ value?: DateRangeValue | null;
1955
+ /** Commits the complete draft when Apply is pressed; Cancel discards it. */
1956
+ onChange?: (value: DateRangeValue | null) => void;
1957
+ /** Earliest selectable date for both calendars. */
1958
+ minDate?: DateValue;
1959
+ /** Latest selectable date for both calendars. */
1960
+ maxDate?: DateValue;
1961
+ /** Prevents opening or selection and returns only the trigger. */
1962
+ disabled?: boolean;
1963
+ /** Accessible label for the first calendar. */
1964
+ startLabel?: string;
1965
+ /** Accessible label for the second calendar. */
1966
+ endLabel?: string;
1967
+ };
1968
+
1969
+ /**
1970
+ * Combines segmented range entry with a two-calendar selection menu.
1971
+ *
1972
+ * Typed endpoints commit immediately. Calendar choices remain a draft until
1973
+ * Apply is pressed; Cancel restores the currently committed range.
1974
+ *
1975
+ * @example
1976
+ * ```tsx
1977
+ * <DateRangePicker startLabel="Arrival" endLabel="Departure" />
1978
+ * ```
1979
+ */
1980
+ export declare const DateRangePicker: (props: DateRangePickerProps) => JSX.Element;
1981
+
1982
+ /** Props for {@link DateRangePicker}, combining range input and calendar menu. */
1983
+ export declare type DateRangePickerProps = Pick<DateRangeInputProps, 'id' | 'startLabel' | 'endLabel' | 'before' | 'after' | 'iconBefore' | 'iconAfter' | 'error' | 'disabled' | 'invalid' | 'dateFormat' | 'size'> & {
1984
+ /** Controlled start and end dates. Pair with `onChange`. */
1985
+ value?: DateRangeValue | null;
1986
+ /** Initial range when `value` is not provided. */
1987
+ defaultValue?: DateRangeValue | null;
1988
+ /** Runs for typed endpoint changes and applied calendar drafts. */
1989
+ onChange?: (value: DateRangeValue | null) => void;
1990
+ /** Earliest selectable date for both calendars. */
1991
+ minDate?: DateValue;
1992
+ /** Latest selectable date for both calendars. */
1993
+ maxDate?: DateValue;
1994
+ /** Floating UI placement of the calendar menu. */
1995
+ placement?: Placement;
1996
+ /** Controlled menu visibility. Pair with `onOpenChange`. */
1997
+ open?: boolean;
1998
+ /**
1999
+ * Initial menu visibility when `open` is not provided.
2000
+ *
2001
+ * @default false
2002
+ */
2003
+ defaultOpen?: boolean;
2004
+ /** Runs when interaction requests that the menu open or close. */
2005
+ onOpenChange?: (open: boolean) => void;
2006
+ };
2007
+
2008
+ /** A committed date range — either endpoint may be null while only partially filled in. */
2009
+ export declare interface DateRangeValue {
2010
+ start: DateValue | null;
2011
+ end: DateValue | null;
2012
+ }
2013
+
2014
+ /**
2015
+ * Renders coordinated segmented date and time fields in one control.
2016
+ *
2017
+ * Each complete portion is preserved while the other changes. Use
2018
+ * `DateTimePicker` when calendar and time-selection menus are also needed.
2019
+ *
2020
+ * @example
2021
+ * ```tsx
2022
+ * <DateTimeInput dateLabel="Due date" timeLabel="Due time" />
2023
+ * ```
2024
+ */
2025
+ export declare const DateTimeInput: (props: DateTimeInputProps) => JSX.Element;
2026
+
2027
+ /** Props for {@link DateTimeInput}, including combined state and field slots. */
2028
+ export declare type DateTimeInputProps = Omit<BoxProps, keyof SegmentedFieldsVariantProps | 'children'> & Omit<SegmentedFieldsVariantProps, 'field' | 'range' | 'before' | 'after'> & {
2029
+ /** Identifier applied to the combined field container. */
2030
+ id?: string;
2031
+ /** Controlled date and time. Pair with `onChange`. */
2032
+ value?: DateTimeValue | null;
2033
+ /** Initial date and time when `value` is not provided. */
2034
+ defaultValue?: DateTimeValue | null;
2035
+ /** Runs whenever the date or time portion changes. */
2036
+ onChange?: (value: DateTimeValue | null) => void;
2037
+ /** Segment order and separator convention for the date portion. */
2038
+ dateFormat?: DateFormat;
2039
+ /** Display cycle for the time portion. */
2040
+ timeFormat?: TimeFormat;
2041
+ /** Minute increment used by keyboard stepping. */
2042
+ minuteStep?: number;
2043
+ /** Accessible name for the date segments. */
2044
+ dateLabel?: string;
2045
+ /** Accessible name for the time segments. */
2046
+ timeLabel?: string;
2047
+ /** Content before the combined field. Takes precedence over `iconBefore`. */
2048
+ before?: ReactNode;
2049
+ /** Content after the combined field. Takes precedence over `iconAfter`. */
2050
+ after?: ReactNode;
2051
+ /** Legacy icon rendered before the field when `before` is absent. */
2052
+ iconBefore?: IconNamesList;
2053
+ /** Legacy icon rendered after the field when `after` is absent. */
2054
+ iconAfter?: IconNamesList;
2055
+ /** Applies error styling. Overrides field context when provided. */
2056
+ error?: boolean;
2057
+ /** Prevents editing both portions. Overrides field context when provided. */
2058
+ disabled?: boolean;
2059
+ /** Applies invalid styling. Overrides field context when provided. */
2060
+ invalid?: boolean;
2061
+ /** Reflected through to the segmented fields — lets a wrapping Menu/Picker show "active anchor" styling */
2062
+ open?: boolean;
2063
+ /** Forwarded to both segmented fields — see SegmentedDate/SegmentedTime's onFocusWithin */
2064
+ onFocusWithin?: () => void;
2065
+ /** Forwarded to both segmented fields — see SegmentedDate/SegmentedTime's onBlurWithin */
2066
+ onBlurWithin?: (relatedTarget: Node | null) => void;
2067
+ };
2068
+
2069
+ /**
2070
+ * Selects a date and time from a calendar and aligned time columns.
2071
+ *
2072
+ * Changes remain a draft until Apply is pressed. Cancel restores `value`, and
2073
+ * Apply is unavailable until both the date and time portions are complete.
2074
+ *
2075
+ * @example
2076
+ * ```tsx
2077
+ * <DateTimeMenu
2078
+ * trigger={<Button>Schedule</Button>}
2079
+ * value={scheduledAt}
2080
+ * onChange={setScheduledAt}
2081
+ * />
2082
+ * ```
2083
+ */
2084
+ export declare const DateTimeMenu: (props: DateTimeMenuProps) => any;
2085
+
2086
+ /** Props for {@link DateTimeMenu}, including committed value and constraints. */
2087
+ export declare type DateTimeMenuProps = Omit<MenuProps, 'children' | 'onChange' | 'value'> & {
2088
+ /** Committed date and time used to initialize the menu draft. */
2089
+ value?: DateTimeValue | null;
2090
+ /** Commits the complete draft when Apply is pressed; Cancel discards it. */
2091
+ onChange?: (value: DateTimeValue | null) => void;
2092
+ /** Earliest selectable calendar date. */
2093
+ minDate?: DateValue;
2094
+ /** Latest selectable calendar date. */
2095
+ maxDate?: DateValue;
2096
+ /** Controlled visible calendar month. */
2097
+ viewDate?: ViewDate_3;
2098
+ /** Initial visible calendar month when `viewDate` is not provided. */
2099
+ defaultViewDate?: ViewDate_3;
2100
+ /** Runs when calendar navigation requests a new visible month. */
2101
+ onViewDateChange?: (viewDate: ViewDate_3) => void;
2102
+ /** Display cycle for the time columns. */
2103
+ timeFormat?: TimeFormat;
2104
+ /** Interval used to generate minute choices. */
2105
+ minuteStep?: number;
2106
+ /** Prevents opening or selection and returns only the trigger. */
2107
+ disabled?: boolean;
2108
+ /** Accessible label passed to the calendar grid. */
2109
+ dateLabel?: string;
2110
+ };
2111
+
2112
+ /**
2113
+ * Combines segmented date-time entry with a calendar and time menu.
2114
+ *
2115
+ * Typed portions commit immediately. Menu choices remain a draft until Apply
2116
+ * is pressed; Cancel restores the currently committed value.
2117
+ *
2118
+ * @example
2119
+ * ```tsx
2120
+ * <DateTimePicker dateLabel="Due date" timeLabel="Due time" />
2121
+ * ```
2122
+ */
2123
+ export declare const DateTimePicker: (props: DateTimePickerProps) => JSX.Element;
2124
+
2125
+ /** Props for {@link DateTimePicker}, combining segmented entry and menu. */
2126
+ export declare type DateTimePickerProps = Pick<DateTimeInputProps, 'id' | 'dateLabel' | 'timeLabel' | 'before' | 'after' | 'iconBefore' | 'iconAfter' | 'error' | 'disabled' | 'invalid' | 'dateFormat' | 'timeFormat' | 'size'> & {
2127
+ /** Controlled combined date and time. Pair with `onChange`. */
2128
+ value?: DateTimeValue | null;
2129
+ /** Initial combined value when `value` is not provided. */
2130
+ defaultValue?: DateTimeValue | null;
2131
+ /** Runs for typed changes and applied menu drafts. */
2132
+ onChange?: (value: DateTimeValue | null) => void;
2133
+ /** Minute interval used by segmented stepping and menu choices. */
2134
+ minuteStep?: number;
2135
+ /** Earliest selectable calendar date. */
2136
+ minDate?: DateValue;
2137
+ /** Latest selectable calendar date. */
2138
+ maxDate?: DateValue;
2139
+ /** Controlled visible calendar month. */
2140
+ viewDate?: ViewDate_5;
2141
+ /** Initial visible month when `viewDate` is not provided. */
2142
+ defaultViewDate?: ViewDate_5;
2143
+ /** Runs when calendar navigation requests a new visible month. */
2144
+ onViewDateChange?: (viewDate: ViewDate_5) => void;
2145
+ /** Floating UI placement of the date-time menu. */
2146
+ placement?: Placement;
2147
+ /** Controlled menu visibility. Pair with `onOpenChange`. */
2148
+ open?: boolean;
2149
+ /**
2150
+ * Initial menu visibility when `open` is not provided.
2151
+ *
2152
+ * @default false
2153
+ */
2154
+ defaultOpen?: boolean;
2155
+ /** Runs when interaction requests that the menu open or close. */
2156
+ onOpenChange?: (open: boolean) => void;
2157
+ };
2158
+
2159
+ /**
2160
+ * Coordinates independent start and end `DateTimePicker` controls.
2161
+ *
2162
+ * The controls render side by side when space allows and stack at narrow
2163
+ * widths. Each endpoint has its own menu and commits independently.
2164
+ *
2165
+ * @example
2166
+ * ```tsx
2167
+ * <DateTimeRangePicker
2168
+ * startDateLabel="Starts on"
2169
+ * startTimeLabel="Starts at"
2170
+ * endDateLabel="Ends on"
2171
+ * endTimeLabel="Ends at"
2172
+ * />
2173
+ * ```
2174
+ */
2175
+ export declare const DateTimeRangePicker: (props: DateTimeRangePickerProps) => JSX.Element;
2176
+
2177
+ /** Props for {@link DateTimeRangePicker}, which coordinates two pickers. */
2178
+ export declare type DateTimeRangePickerProps = Pick<DateTimeInputProps, 'before' | 'after' | 'iconBefore' | 'iconAfter' | 'error' | 'disabled' | 'invalid' | 'dateFormat' | 'timeFormat' | 'size'> & {
2179
+ /** Controlled start and end date-times. Pair with `onChange`. */
2180
+ value?: DateTimeRangeValue | null;
2181
+ /** Initial range when `value` is not provided. */
2182
+ defaultValue?: DateTimeRangeValue | null;
2183
+ /** Runs whenever either endpoint commits a new value. */
2184
+ onChange?: (value: DateTimeRangeValue | null) => void;
2185
+ /** Minute interval shared by both endpoint pickers. */
2186
+ minuteStep?: number;
2187
+ /** Earliest selectable date for both endpoints. */
2188
+ minDate?: DateValue;
2189
+ /** Latest selectable date for both endpoints. */
2190
+ maxDate?: DateValue;
2191
+ /** Accessible date label for the start picker. */
2192
+ startDateLabel?: string;
2193
+ /** Accessible time label for the start picker. */
2194
+ startTimeLabel?: string;
2195
+ /** Accessible date label for the end picker. */
2196
+ endDateLabel?: string;
2197
+ /** Accessible time label for the end picker. */
2198
+ endTimeLabel?: string;
2199
+ /** Floating UI placement shared by both endpoint menus. */
2200
+ placement?: Placement;
2201
+ };
2202
+
2203
+ /** A committed date+time range — either endpoint may be null while only partially filled in. */
2204
+ export declare interface DateTimeRangeValue {
2205
+ start: DateTimeValue | null;
2206
+ end: DateTimeValue | null;
2207
+ }
2208
+
2209
+ /** A combined date+time value — either half may be null while only partially filled in. */
2210
+ export declare interface DateTimeValue {
2211
+ date: DateValue | null;
2212
+ time: TimeValue | null;
2213
+ }
2214
+
2215
+ /** A calendar date. Month is 1-indexed (1 = January) to match human-readable input. */
2216
+ export declare interface DateValue {
2217
+ year: number;
2218
+ month: number;
2219
+ day: number;
2220
+ }
2221
+
2222
+ /** Returns explicit `textValue` when present, otherwise derives searchable text from item metadata. */
2223
+ export declare const deriveItemTextValue: ({ textValue, label, description, getItemText, }: {
2224
+ textValue?: string;
2225
+ label?: string;
2226
+ description?: string;
2227
+ getItemText: (item: {
2228
+ label?: string;
2229
+ description?: string;
2230
+ }) => string;
2231
+ }) => string;
1316
2232
 
1317
2233
  declare type DistributiveOmit<T, K extends keyof any> = T extends unknown ? Omit<T, K> : never
1318
2234
 
2235
+ /**
2236
+ * Draws a visual separator between adjacent regions.
2237
+ *
2238
+ * `Divider` is decorative and renders a `div`; use semantic sectioning and
2239
+ * headings when the separation must also be conveyed to assistive technology.
2240
+ *
2241
+ * @example
2242
+ * ```tsx
2243
+ * <Divider />
2244
+ * ```
2245
+ */
1319
2246
  export declare const Divider: (props: DividerProps) => JSX.Element;
1320
2247
 
1321
- declare type DividerProps = Omit<BoxProps, keyof DividerVariantProps> & DividerVariantProps & {
2248
+ /** Props accepted by {@link Divider}. */
2249
+ export declare type DividerProps = Omit<BoxProps, keyof DividerVariantProps> & DividerVariantProps & {
2250
+ /** Axis along which the visual divider extends. */
2251
+ /** @default "horizontal" */
1322
2252
  direction?: DividerVariantProps['direction'];
2253
+ /** Visual thickness of the divider. */
2254
+ /** @default "thin" */
1323
2255
  weight?: DividerVariantProps['weight'];
1324
2256
  };
1325
2257
 
@@ -1338,6 +2270,43 @@ declare type DividerVariantProps = {
1338
2270
  [key in keyof DividerVariant]?: ConditionalValue<DividerVariant[key]> | undefined
1339
2271
  }
1340
2272
 
2273
+ /**
2274
+ * Adds a test id to the interaction chain shared with a subtree.
2275
+ *
2276
+ * Design-system components pick this up automatically: `Box` opens a scope
2277
+ * whenever it receives a `data-testid`, so anything rendered through the
2278
+ * library already contributes. Reach for `DsChainScope` only around raw DOM
2279
+ * that does not render through `Box` and still needs to appear in the chain,
2280
+ * such as an application-owned wrapper element.
2281
+ *
2282
+ * The chain exists so portaled content can be attributed back to the subtree
2283
+ * that opened it. A menu, modal, or tooltip renders into `document.body` and
2284
+ * has no DOM ancestry to its opener, but React context follows the React tree
2285
+ * through a portal, so the chain resolves correctly on either side.
2286
+ *
2287
+ * Renders no DOM of its own. The chain keeps the five nearest ids.
2288
+ *
2289
+ * @example
2290
+ * ```tsx
2291
+ * <DsChainScope testId="order-row">
2292
+ * <tr data-testid="order-row">{cells}</tr>
2293
+ * </DsChainScope>
2294
+ * ```
2295
+ */
2296
+ export declare const DsChainScope: ({ testId, children }: DsChainScopeProps) => JSX.Element;
2297
+
2298
+ /** Props accepted by {@link DsChainScope}. */
2299
+ export declare type DsChainScopeProps = {
2300
+ /**
2301
+ * `data-testid` value appended to the chain inherited by `children`. Match it
2302
+ * to the `data-testid` written on the element this scope describes so the
2303
+ * chain and the DOM agree.
2304
+ */
2305
+ testId: string;
2306
+ /** Subtree that resolves the extended chain. */
2307
+ children?: ReactNode;
2308
+ };
2309
+
1341
2310
  declare type DurationToken = "fastest" | "faster" | "fast" | "normal" | "slow" | "slower" | "slowest"
1342
2311
 
1343
2312
  declare type EasingToken = "default" | "linear" | "in" | "out" | "in-out"
@@ -1350,24 +2319,81 @@ declare type FontToken = "heading" | "body" | "mono"
1350
2319
 
1351
2320
  declare type FontWeightToken = "light" | "normal" | "medium" | "bold" | "black"
1352
2321
 
2322
+ /**
2323
+ * Groups a label, control, help text, and validation message into one field.
2324
+ *
2325
+ * `labelFor` must match the `id` of the nested input. The component provides
2326
+ * `size`, `error`, `invalid`, and `disabled` through field context to
2327
+ * compatible descendants, but it does not add native input attributes for
2328
+ * them. If `success` and an error state are both true, success messaging wins.
2329
+ *
2330
+ * @example
2331
+ * ```tsx
2332
+ * <FormField label="Email" labelFor="email" required>
2333
+ * <TextInput id="email" type="email" required />
2334
+ * </FormField>
2335
+ * ```
2336
+ */
1353
2337
  export declare const FormField: (props: FormFieldProps) => JSX.Element;
1354
2338
 
1355
- declare type FormFieldProps = Omit<BoxProps, keyof FormFieldVariantProps | 'gap'> & FormFieldVariantProps & {
2339
+ /**
2340
+ * Props for {@link FormField}. It supplies field state to compatible
2341
+ * descendants through `FieldContext`.
2342
+ */
2343
+ export declare type FormFieldProps = Omit<BoxProps, keyof FormFieldVariantProps | 'gap'> & FormFieldVariantProps & {
2344
+ /** Visible label text for the field. */
1356
2345
  label: string;
2346
+ /**
2347
+ * The `id` of the labeled input. The child input must use this exact `id`
2348
+ * for the rendered label's `htmlFor` relationship to work.
2349
+ */
1357
2350
  labelFor: string;
2351
+ /** Input or control content associated with this field. */
1358
2352
  children: ReactNode;
2353
+ /** Supporting guidance displayed near the input. */
1359
2354
  helpText?: string;
2355
+ /**
2356
+ * Displays a visual required indicator. Also set `required` on the native
2357
+ * input when browser validation or required semantics are needed.
2358
+ */
1360
2359
  required?: boolean;
2360
+ /** Marks the field and compatible descendants as having an error. */
1361
2361
  error?: boolean;
2362
+ /** Marks the field invalid and supplies invalid state to compatible descendants. */
1362
2363
  invalid?: boolean;
2364
+ /** Marks the field successful. Success text takes precedence over error text. */
1363
2365
  success?: boolean;
2366
+ /** Message displayed when `error` or `invalid` is true and `success` is false. */
1364
2367
  errorText?: string;
2368
+ /** Message displayed when `success` is true, including when error state is also set. */
1365
2369
  successText?: string;
2370
+ /**
2371
+ * Marks the field `aria-disabled`, applies disabled styling, and supplies
2372
+ * disabled state to compatible descendants. Native child controls must
2373
+ * still receive `disabled` themselves.
2374
+ */
1366
2375
  disabled?: boolean;
2376
+ /** Optional title shown by the label-help tooltip when `tooltipText` is provided. */
1367
2377
  tooltipTitle?: string;
2378
+ /**
2379
+ * Help text that enables the informational tooltip beside the label. The
2380
+ * tooltip is not rendered without this value.
2381
+ */
1368
2382
  tooltipText?: string;
2383
+ /**
2384
+ * Field size passed to compatible descendants and used by the field recipe.
2385
+ *
2386
+ * @default 'md'
2387
+ */
1369
2388
  size?: FormFieldVariantProps['size'];
2389
+ /**
2390
+ * Uses a stacked field by default; `inline` places label and control in a
2391
+ * two-column layout.
2392
+ *
2393
+ * @default 'default'
2394
+ */
1370
2395
  layout?: FormFieldVariantProps['layout'];
2396
+ /** Spacing token applied between controls in the field's input container. */
1371
2397
  gap?: SpacingToken;
1372
2398
  };
1373
2399
 
@@ -1386,8 +2412,10 @@ declare type FormFieldVariantProps = {
1386
2412
  [key in keyof FormFieldVariant]?: ConditionalValue<FormFieldVariant[key]> | undefined
1387
2413
  }
1388
2414
 
2415
+ /** Returns the internal menu compound-component marker for a React element, or `null` for other values. */
1389
2416
  export declare const getComponentType: (node: unknown) => string | null;
1390
2417
 
2418
+ /** Splits text into case-insensitive query-match parts for highlight rendering. */
1391
2419
  export declare const getHighlightedTextParts: (value: string, query: string) => {
1392
2420
  text: string;
1393
2421
  match: boolean;
@@ -1397,12 +2425,27 @@ declare type Globals = "-moz-initial" | "inherit" | "initial" | "revert" | "reve
1397
2425
 
1398
2426
  export declare type GlobalStyleObject = Record<string, unknown>;
1399
2427
 
2428
+ /** Returns whether a child tree contains any visible menu item, subgroup, or submenu for a filter. */
1400
2429
  export declare const hasMatchingItems: (children: ReactNode, filterContext: MenuFilterContextValue) => boolean;
1401
2430
 
2431
+ /**
2432
+ * Renders a semantic document heading with the matching typography.
2433
+ *
2434
+ * Choose `level` from the page outline rather than for visual size alone.
2435
+ *
2436
+ * @example
2437
+ * ```tsx
2438
+ * <Heading level="h2">Shipping details</Heading>
2439
+ * ```
2440
+ */
1402
2441
  export declare const Heading: (props: HeadingProps) => JSX.Element;
1403
2442
 
1404
- declare type HeadingProps = Omit<TextProps, keyof HeadingVariantProps> & HeadingVariantProps & {
2443
+ /** Props accepted by {@link Heading}. */
2444
+ export declare type HeadingProps = Omit<TextProps, keyof HeadingVariantProps> & HeadingVariantProps & {
2445
+ /** Heading content. */
1405
2446
  children?: string | ReactNode;
2447
+ /** Semantic heading level and matching visual treatment. */
2448
+ /** @default "h2" */
1406
2449
  level?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
1407
2450
  };
1408
2451
 
@@ -1418,11 +2461,33 @@ declare type HeadingVariantProps = {
1418
2461
  [key in keyof HeadingVariant]?: ConditionalValue<HeadingVariant[key]> | undefined
1419
2462
  }
1420
2463
 
2464
+ /**
2465
+ * Renders case-insensitive literal matches in text using semantic `mark`
2466
+ * elements.
2467
+ *
2468
+ * Empty or whitespace-only queries, and `enabled={false}`, render the original
2469
+ * string without wrapper markup. Use it directly for custom content; default
2470
+ * {@link ListItem} content uses it automatically when highlighting is enabled.
2471
+ *
2472
+ * @example
2473
+ * ```tsx
2474
+ * <HighlightText value="Account settings" query="account" />
2475
+ * ```
2476
+ */
1421
2477
  export declare const HighlightText: (props: HighlightTextProps) => JSX.Element;
1422
2478
 
1423
- declare type HighlightTextProps = Omit<BoxProps, keyof HighlightTextVariantProps> & HighlightTextVariantProps & {
2479
+ /** Props for {@link HighlightText}. */
2480
+ export declare type HighlightTextProps = Omit<BoxProps, keyof HighlightTextVariantProps> & HighlightTextVariantProps & {
2481
+ /** Text to render and search within. */
1424
2482
  value: string;
2483
+ /** Case-insensitive literal text to mark within `value`. */
1425
2484
  query: string;
2485
+ /**
2486
+ * When false, returns `value` without creating highlight markup or applying
2487
+ * styling props.
2488
+ *
2489
+ * @default true
2490
+ */
1426
2491
  enabled?: boolean;
1427
2492
  };
1428
2493
 
@@ -1434,22 +2499,74 @@ declare type HighlightTextVariantProps = {
1434
2499
  [key in keyof HighlightTextVariant]?: ConditionalValue<HighlightTextVariant[key]> | undefined
1435
2500
  }
1436
2501
 
1437
- declare type HourCycle = '12' | '24';
1438
-
1439
2502
  declare type HTMLStyledProps<T extends ElementType> = JsxHTMLProps<ComponentProps<T> & UnstyledProps & AsProps, JsxStyleProps>
1440
2503
 
2504
+ /**
2505
+ * Renders an SVG symbol from the configured icon sprite.
2506
+ *
2507
+ * Icons are visual content, not automatically hidden or named. Pass
2508
+ * `aria-hidden` for decorative icons; give meaningful standalone icons an
2509
+ * accessible name such as `aria-label`. Wrap meaningful actions in
2510
+ * {@link IconButton} rather than using a bare clickable SVG.
2511
+ *
2512
+ * @example
2513
+ * ```tsx
2514
+ * <Icon name="info" aria-label="More information" />
2515
+ * ```
2516
+ */
1441
2517
  export declare const Icon: (props: IconProps) => JSX.Element;
1442
2518
 
2519
+ /**
2520
+ * Performs an icon-only action or navigation with a required accessible label.
2521
+ *
2522
+ * Renders a native `button` by default, or an anchor when `href` is supplied.
2523
+ * Its explicit `size`, `error`, `invalid`, and `disabled` values take
2524
+ * precedence over slot context, which takes precedence over field context.
2525
+ * Its recipe defaults to the `standard` variant and `md` size.
2526
+ *
2527
+ * @example
2528
+ * ```tsx
2529
+ * <IconButton iconName="edit" altText="Edit invoice" onClick={editInvoice} />
2530
+ * ```
2531
+ */
1443
2532
  export declare const IconButton: (props: IconButtonProps) => JSX.Element;
1444
2533
 
1445
- declare type IconButtonProps = Omit<BoxProps, keyof IconButtonVariantProps> & IconButtonVariantProps & {
2534
+ /**
2535
+ * Props for {@link IconButton}. Extends {@link BoxProps} for layout and native
2536
+ * element attributes while reserving its visual recipe variants.
2537
+ */
2538
+ export declare type IconButtonProps = Omit<BoxProps, keyof IconButtonVariantProps> & IconButtonVariantProps & {
2539
+ /** Icon symbol rendered for the action. */
1446
2540
  iconName: IconNamesList;
2541
+ /**
2542
+ * Required accessible label for the button and text used by its tooltip.
2543
+ * Describe the action, not the icon's shape.
2544
+ */
1447
2545
  altText: string;
2546
+ /** When provided, renders an anchor instead of a native button. */
1448
2547
  href?: string;
2548
+ /**
2549
+ * Shows a centered spinner, hides the icon, and sets `aria-busy`. Loading
2550
+ * does not disable the control; set `disabled` when the action is unavailable.
2551
+ *
2552
+ * @default false
2553
+ */
1449
2554
  loading?: boolean;
2555
+ /** Marks the control as having an error for styling. */
1450
2556
  error?: boolean;
2557
+ /** Sets `aria-invalid` and marks the control invalid for styling. */
1451
2558
  invalid?: boolean;
2559
+ /**
2560
+ * Disables a native button. For links, marks the anchor `aria-disabled` and
2561
+ * prevents its default click navigation.
2562
+ */
1452
2563
  disabled?: boolean;
2564
+ /**
2565
+ * Native button type; ignored when `href` causes the component to render an
2566
+ * anchor.
2567
+ *
2568
+ * @default 'button'
2569
+ */
1453
2570
  type?: 'submit' | 'reset' | 'button';
1454
2571
  };
1455
2572
 
@@ -1468,10 +2585,12 @@ declare type IconButtonVariantProps = {
1468
2585
  [key in keyof IconButtonVariant]?: ConditionalValue<IconButtonVariant[key]> | undefined
1469
2586
  }
1470
2587
 
2588
+ /** Resolved SVG sprite configuration shared by {@link IconProvider}. */
1471
2589
  declare type IconConfigContextValue = {
1472
2590
  spritePath: string;
1473
2591
  };
1474
2592
 
2593
+ /** Runtime catalog of icon names accepted by `Icon`. */
1475
2594
  export declare const IconNames: {
1476
2595
  readonly 'aa-placeholder': "aa-placeholder";
1477
2596
  readonly alarm: "alarm";
@@ -2099,16 +3218,57 @@ declare type IconNamesList =
2099
3218
  | 'zoom-in'
2100
3219
  | 'zoom-out';
2101
3220
 
2102
- declare type IconProps = Omit<BoxProps, IconNamesList | 'size'> & SVGAttributes<SVGElement> & IconVariantProps & {
3221
+ declare type IconOwnProps = {
3222
+ /** Symbol identifier from the configured SVG sprite. */
2103
3223
  name: IconNamesList;
3224
+ /**
3225
+ * Icon size recipe variant. Responsive/conditional recipe values are
3226
+ * supported. An explicit value takes precedence over slot context.
3227
+ *
3228
+ * @default 24px when no size is supplied by the icon or its slot context
3229
+ */
2104
3230
  size?: IconVariantProps['size'];
3231
+ /**
3232
+ * Design-token fill color. An explicit value takes precedence over slot
3233
+ * context; otherwise the recipe uses the decorative icon color.
3234
+ *
3235
+ * @default 'icon.decorative'
3236
+ */
2105
3237
  fill?: ColorToken;
2106
3238
  };
2107
3239
 
3240
+ /**
3241
+ * Props for {@link Icon}. Extends SVG and Box props for presentation and
3242
+ * accessibility attributes.
3243
+ */
3244
+ export declare type IconProps = Omit<BoxProps, keyof IconVariantProps | keyof IconOwnProps> & Omit<IconVariantProps, keyof IconOwnProps> & IconOwnProps;
3245
+
3246
+ /**
3247
+ * Configures the SVG sprite used by descendant {@link Icon} components.
3248
+ *
3249
+ * Use it at an application or embedded-library boundary when the default
3250
+ * `/sprite.svg` location is not available. Nested providers override the
3251
+ * sprite path for their own descendants.
3252
+ *
3253
+ * @example
3254
+ * ```tsx
3255
+ * <IconProvider spritePath="/assets/icons.svg">
3256
+ * <App />
3257
+ * </IconProvider>
3258
+ * ```
3259
+ */
2108
3260
  export declare const IconProvider: ({ children, spritePath }: IconProviderProps) => JSX.Element;
2109
3261
 
3262
+ /** Props for {@link IconProvider}. */
2110
3263
  export declare type IconProviderProps = {
3264
+ /** Components that should resolve sprite symbols from this provider. */
2111
3265
  children: ReactNode;
3266
+ /**
3267
+ * URL or path to the SVG sprite file. This provider value applies to all
3268
+ * descendant `Icon` components.
3269
+ *
3270
+ * @default '/sprite.svg'
3271
+ */
2112
3272
  spritePath?: string;
2113
3273
  };
2114
3274
 
@@ -2125,6 +3285,7 @@ declare type Important = ImportantMark | WhitespaceImportant
2125
3285
 
2126
3286
  declare type ImportantMark = "!" | "!important"
2127
3287
 
3288
+ /** Returns whether text is visible for the supplied filtering mode and query. */
2128
3289
  export declare const isItemMatch: ({ textValue, query, filterMode, }: {
2129
3290
  textValue: string;
2130
3291
  query: string;
@@ -2139,23 +3300,46 @@ P
2139
3300
  declare type JsxStyleProps = SystemStyleObject_2 & WithCss
2140
3301
 
2141
3302
  /**
2142
- * Used to display keyboard shortcuts.
2143
- * Supported special symbols: ⌘ command, ⌥ option, ⌃ control, ⇪ shift,
2144
- * ⎋ escape, ⌫ delete, ↩ return, ⇥ tab, ← left, → right, ↑ up, ↓ down.
2145
- * Example: <Kbd keys={['⌘', 'K']} />
3303
+ * Displays a keyboard shortcut as a group of native `kbd` elements.
3304
+ *
3305
+ * Known symbols receive readable tooltip labels: ⌘ command, ⌥ option,
3306
+ * ⌃ control, ⇪ shift, ⎋ escape, ⌫ delete, ↩ return, ⇥ tab, and the four arrow
3307
+ * symbols. `Kbd` describes a shortcut; it is not an interactive control.
3308
+ *
3309
+ * @example
3310
+ * ```tsx
3311
+ * <Kbd keys={['⌘', 'K']} />
3312
+ * ```
2146
3313
  */
2147
3314
  export declare const Kbd: (props: KbdProps) => JSX.Element;
2148
3315
 
3316
+ /** Props accepted by {@link Kbd}. */
2149
3317
  export declare type KbdProps = Omit<BoxProps, 'children'> & {
3318
+ /** Ordered key labels that make up the shortcut. */
2150
3319
  keys: KbdValue[];
2151
3320
  };
2152
3321
 
3322
+ /** A visible key label accepted by `Kbd`. */
2153
3323
  declare type KbdValue = string;
2154
3324
 
3325
+ /**
3326
+ * Renders a native label for a form control.
3327
+ *
3328
+ * `htmlFor` must match the target control's `id`. Use `FormField` when the
3329
+ * control also needs help text, validation messaging, or shared field state.
3330
+ *
3331
+ * @example
3332
+ * ```tsx
3333
+ * <Label htmlFor="email">Email address</Label>
3334
+ * ```
3335
+ */
2155
3336
  export declare const Label: (props: LabelProps) => JSX.Element;
2156
3337
 
2157
- declare type LabelProps = Omit<BoxProps, keyof LabelVariantProps> & LabelVariantProps & {
3338
+ /** Props accepted by {@link Label}. */
3339
+ export declare type LabelProps = Omit<BoxProps, keyof LabelVariantProps> & LabelVariantProps & {
3340
+ /** ID of the form control labeled by this element. */
2158
3341
  htmlFor: string;
3342
+ /** Visible label content. */
2159
3343
  children?: string | ReactNode;
2160
3344
  };
2161
3345
 
@@ -2182,18 +3366,45 @@ declare type LetterSpacingToken = "tighter" | "tight" | "normal" | "wide" | "wid
2182
3366
 
2183
3367
  declare type LineHeightToken = "none" | "tight" | "default" | "loose"
2184
3368
 
3369
+ /**
3370
+ * Navigates to another location using a native anchor.
3371
+ *
3372
+ * Set `external` for destinations that should open in a new tab. Use `Button`
3373
+ * for actions that do not navigate.
3374
+ *
3375
+ * @example
3376
+ * ```tsx
3377
+ * <Link href="/orders">View orders</Link>
3378
+ * ```
3379
+ */
2185
3380
  export declare const Link: (props: LinkProps) => JSX.Element;
2186
3381
 
2187
- declare type LinkProps = Omit<BoxProps, keyof LinkVariantProps> & LinkVariantProps & {
3382
+ /** Props accepted by {@link Link}. */
3383
+ export declare type LinkProps = Omit<BoxProps, keyof LinkVariantProps> & LinkVariantProps & {
3384
+ /** Destination URL for the native anchor. */
2188
3385
  href: string;
3386
+ /** Opens the destination in a new tab and displays an external-link icon. */
3387
+ /** @default false */
2189
3388
  external?: boolean;
3389
+ /** Prevents navigation and removes the link from sequential keyboard focus. */
3390
+ /** @default false */
2190
3391
  disabled?: boolean;
3392
+ /** Visual text size. */
2191
3393
  size?: LinkVariantProps['size'];
3394
+ /** Font family token used for the link text. */
3395
+ /** @default "body" */
2192
3396
  family?: FontToken;
3397
+ /** Applies italic styling to the link text. */
3398
+ /** @default false */
2193
3399
  italic?: boolean;
3400
+ /** Applies the recipe's bold link treatment. */
3401
+ /** @default false */
2194
3402
  bold?: boolean;
3403
+ /** Explicit font-weight token. */
2195
3404
  weight?: FontWeightToken;
3405
+ /** Additional class name merged with the link recipe class. */
2196
3406
  className?: string;
3407
+ /** Link label and inline content. */
2197
3408
  children?: ReactNode;
2198
3409
  };
2199
3410
 
@@ -2216,27 +3427,88 @@ declare type LinkVariantProps = {
2216
3427
  [key in keyof LinkVariant]?: ConditionalValue<LinkVariant[key]> | undefined
2217
3428
  }
2218
3429
 
3430
+ /**
3431
+ * Lays out related {@link ListItem} controls and shares density and search
3432
+ * highlighting settings with its descendants.
3433
+ *
3434
+ * The component renders a `div` and does not assign an ARIA role. When its
3435
+ * children are interactive options, provide the appropriate role and label
3436
+ * (for example, `role="listbox"` and `aria-label`).
3437
+ *
3438
+ * @example
3439
+ * ```tsx
3440
+ * <List role="listbox" aria-label="Account settings">
3441
+ * <ListItem label="Profile" />
3442
+ * </List>
3443
+ * ```
3444
+ */
2219
3445
  export declare const List: (props: ListProps) => JSX.Element;
2220
3446
 
3447
+ /** Values inherited by descendants of a {@link ListProvider}. */
2221
3448
  declare type ListContextValue = {
3449
+ /** Resolved list spacing density. */
2222
3450
  density: ListDensity;
3451
+ /** Search text for default list-item content. */
2223
3452
  query: string;
3453
+ /** Whether default list-item text should mark query matches. */
2224
3454
  highlightMatches: boolean;
3455
+ /** Reserved list-item variant metadata for custom list composition. */
2225
3456
  variant?: ListItemVariantProps['variant'];
3457
+ /** Reserved leading icon metadata for custom list composition. */
2226
3458
  iconBefore?: IconNamesList;
3459
+ /** Reserved trailing icon metadata for custom list composition. */
2227
3460
  iconAfter?: IconNamesList;
2228
3461
  };
2229
3462
 
3463
+ /** Responsive density value shared by List primitives. */
2230
3464
  declare type ListDensity = ListItemVariantProps['density'];
2231
3465
 
3466
+ /**
3467
+ * Renders an interactive option, link, selection control, or visual divider.
3468
+ *
3469
+ * Except for the `divider` variant, it renders a native `button` with
3470
+ * `type="button"` by default, or an anchor when `href` is provided, and sets
3471
+ * `role="option"`. Place interactive items in a suitably labeled parent such
3472
+ * as `<List role="listbox">`. Pass custom `children` for fully custom item
3473
+ * content; doing so replaces the label, description, controls, icons, and
3474
+ * match highlighting.
3475
+ *
3476
+ * @example
3477
+ * ```tsx
3478
+ * <ListItem label="Profile" description="Manage your account" />
3479
+ * ```
3480
+ */
2232
3481
  export declare const ListItem: (props: ListItemProps) => JSX.Element;
2233
3482
 
3483
+ /**
3484
+ * Groups related list items under an optional label and can add a trailing
3485
+ * separator.
3486
+ *
3487
+ * The group inherits search settings from its parent list and provides its
3488
+ * resolved density to descendants. Use {@link List} as the parent when items
3489
+ * should share list semantics and configuration.
3490
+ *
3491
+ * @example
3492
+ * ```tsx
3493
+ * <ListItemGroup label="Account">
3494
+ * <ListItem label="Profile" />
3495
+ * </ListItemGroup>
3496
+ * ```
3497
+ */
2234
3498
  export declare const ListItemGroup: (props: ListItemGroupProps) => JSX.Element;
2235
3499
 
2236
- declare type ListItemGroupProps = Omit<BoxProps, keyof ListItemGroupVariantProps | 'children'> & ListItemGroupVariantProps & {
3500
+ /** Props for {@link ListItemGroup}. */
3501
+ export declare type ListItemGroupProps = Omit<BoxProps, keyof ListItemGroupVariantProps | 'children'> & ListItemGroupVariantProps & {
3502
+ /** Optional heading displayed above the group's children. */
2237
3503
  label?: string;
3504
+ /** Items or other content belonging to this group. */
2238
3505
  children: BoxProps['children'];
3506
+ /** Displays a separator after the group. */
2239
3507
  divider?: boolean;
3508
+ /**
3509
+ * Density inherited by descendant list items unless they provide their own
3510
+ * value. Responsive recipe values are supported.
3511
+ */
2240
3512
  density?: ListDensity;
2241
3513
  };
2242
3514
 
@@ -2251,20 +3523,64 @@ declare type ListItemGroupVariantProps = {
2251
3523
  [key in keyof ListItemGroupVariant]?: ConditionalValue<ListItemGroupVariant[key]> | undefined
2252
3524
  }
2253
3525
 
2254
- declare type ListItemProps = Omit<BoxProps<'button'>, keyof ListItemVariantProps | 'as' | 'type' | 'href'> & Omit<ListItemVariantProps, 'selected' | 'iconBefore' | 'iconAfter'> & {
3526
+ /**
3527
+ * Props for {@link ListItem}. It extends button-like Box props, except its
3528
+ * semantic element and button type are controlled by the component.
3529
+ */
3530
+ export declare type ListItemProps = Omit<BoxProps, keyof ListItemVariantProps | 'as' | 'type' | 'href'> & Omit<ListItemVariantProps, 'selected' | 'iconBefore' | 'iconAfter'> & {
3531
+ /** When provided, renders an anchor instead of the default native button. */
2255
3532
  href?: string;
3533
+ /** Content rendered before the default label and description. */
3534
+ before?: ReactNode;
3535
+ /** Primary text rendered when custom `children` are not supplied. */
2256
3536
  label?: string;
3537
+ /** Secondary text rendered below `label` when custom `children` are not supplied. */
2257
3538
  description?: string;
3539
+ /** Search text used to highlight this item's default `label` and `description`. */
2258
3540
  query?: string;
3541
+ /**
3542
+ * Enables highlighting for this item's default text. When omitted, inherits
3543
+ * the nearest {@link List} setting.
3544
+ */
2259
3545
  highlightMatches?: boolean;
3546
+ /**
3547
+ * Native `name` passed to the checkbox or toggle created by the matching
3548
+ * `variant`.
3549
+ *
3550
+ * @default 'list-item'
3551
+ */
2260
3552
  controlName?: string;
3553
+ /**
3554
+ * Runs for the native change event from a checkbox or toggle variant. It
3555
+ * does not update `selected`; update that prop from the owning state.
3556
+ */
2261
3557
  onControlChange?: ChangeEventHandler<HTMLInputElement>;
3558
+ /**
3559
+ * Sets `aria-selected` and selected styling. This is controlled state and
3560
+ * does not change when the item is clicked.
3561
+ *
3562
+ * @default false
3563
+ */
2262
3564
  selected?: boolean;
3565
+ /**
3566
+ * Chooses default content, a checkbox, a toggle, or a noninteractive
3567
+ * divider. The `divider` variant ignores item content and other Box props.
3568
+ *
3569
+ * @default 'default'
3570
+ */
2263
3571
  variant?: ListItemVariantProps['variant'];
3572
+ /**
3573
+ * Overrides the nearest {@link List} or {@link ListItemGroup} density.
3574
+ * Responsive recipe values are supported.
3575
+ */
2264
3576
  density?: ListDensity;
3577
+ /** Icon symbol rendered before the default text content. */
2265
3578
  iconBefore?: IconNamesList;
3579
+ /** Icon symbol rendered after the default text content. */
2266
3580
  iconAfter?: IconNamesList;
3581
+ /** Fill token for `iconBefore`. */
2267
3582
  iconBeforeFill?: IconProps['fill'];
3583
+ /** Fill token for `iconAfter`. */
2268
3584
  iconAfterFill?: IconProps['fill'];
2269
3585
  };
2270
3586
 
@@ -2286,10 +3602,33 @@ declare type ListItemVariantProps = {
2286
3602
  [key in keyof ListItemVariant]?: ConditionalValue<ListItemVariant[key]> | undefined
2287
3603
  }
2288
3604
 
2289
- declare type ListProps = Omit<BoxProps, keyof ListVariantProps | 'children'> & ListVariantProps & {
3605
+ /**
3606
+ * Props for {@link List}. Its values are provided to nested list primitives
3607
+ * through list context.
3608
+ */
3609
+ export declare type ListProps = Omit<BoxProps, keyof ListVariantProps | 'children'> & ListVariantProps & {
3610
+ /** List items and optional {@link ListItemGroup} sections. */
2290
3611
  children: ReactNode;
3612
+ /**
3613
+ * Shared spacing density for descendants that do not set their own density.
3614
+ * Responsive recipe values are supported.
3615
+ *
3616
+ * @default 'compact'
3617
+ */
2291
3618
  density?: ListDensity;
3619
+ /**
3620
+ * Search text inherited by descendants that do not provide their own
3621
+ * `query`. It is used only when highlighting is enabled.
3622
+ *
3623
+ * @default ''
3624
+ */
2292
3625
  query?: string;
3626
+ /**
3627
+ * Enables highlighting of inherited `query` matches in default
3628
+ * `ListItem` labels and descriptions. Child items can override it.
3629
+ *
3630
+ * @default false
3631
+ */
2293
3632
  highlightMatches?: boolean;
2294
3633
  };
2295
3634
 
@@ -2304,10 +3643,27 @@ declare type ListVariantProps = {
2304
3643
  [key in keyof ListVariant]?: ConditionalValue<ListVariant[key]> | undefined
2305
3644
  }
2306
3645
 
3646
+ /**
3647
+ * Displays a keyboard-navigable action list from a trigger or inline in a layout.
3648
+ *
3649
+ * Use `MenuItem`, `MenuGroup`, and `SubMenu` as children. A triggered menu
3650
+ * restores the trigger relationship through Floating UI and dismisses on Escape
3651
+ * or outside press. Use an inline menu when the list should always be visible.
3652
+ *
3653
+ * @example
3654
+ * ```tsx
3655
+ * <Menu trigger={<Button>Actions</Button>}>
3656
+ * <MenuItem label="Edit" onClick={edit} />
3657
+ * <MenuItem label="Archive" onClick={archive} />
3658
+ * </Menu>
3659
+ * ```
3660
+ */
2307
3661
  export declare const Menu: (props: MenuProps) => JSX.Element;
2308
3662
 
3663
+ /** Spacing density shared by a menu panel and its rows. */
2309
3664
  export declare type MenuDensity = ListDensity;
2310
3665
 
3666
+ /** Filtering state consumed by menu compound components. */
2311
3667
  declare type MenuFilterContextValue = {
2312
3668
  query: string;
2313
3669
  filterMode: MenuFilterMode;
@@ -2318,37 +3674,89 @@ declare type MenuFilterContextValue = {
2318
3674
  }) => string;
2319
3675
  };
2320
3676
 
3677
+ /** Determines whether `query` hides non-matching menu items. */
2321
3678
  declare type MenuFilterMode = 'none' | 'contains';
2322
3679
 
3680
+ /**
3681
+ * Groups related menu rows under an optional label.
3682
+ *
3683
+ * A group is hidden when none of its supported menu children match the parent
3684
+ * menu's active filter.
3685
+ *
3686
+ * @example
3687
+ * ```tsx
3688
+ * <MenuGroup label="File">
3689
+ * <MenuItem label="Download" />
3690
+ * </MenuGroup>
3691
+ * ```
3692
+ */
2323
3693
  export declare const MenuGroup: (props: MenuGroupProps) => JSX.Element | null;
2324
3694
 
2325
- export declare type MenuGroupProps = BoxProps & {
3695
+ declare type MenuGroupOwnProps = {
3696
+ /** Optional group heading. */
2326
3697
  label?: string;
3698
+ /** Menu children shown only when at least one child matches the current filter. */
2327
3699
  children: ReactNode;
3700
+ /** Adds a divider before the group. */
2328
3701
  divider?: boolean;
2329
3702
  };
2330
3703
 
3704
+ /** Props for {@link MenuGroup}, a labeled group of related menu children. */
3705
+ export declare type MenuGroupProps = Omit<BoxProps, keyof MenuGroupOwnProps> & MenuGroupOwnProps;
3706
+
3707
+ /**
3708
+ * Renders an actionable row within a {@link Menu}.
3709
+ *
3710
+ * It renders a button by default, or an anchor when `href` is supplied. Arrow
3711
+ * keys and typeahead participate in the parent menu's roving focus behavior.
3712
+ * Use `variant="checkbox"` or `"toggle"` when `selected` is meaningful.
3713
+ *
3714
+ * @example
3715
+ * ```tsx
3716
+ * <MenuItem label="Duplicate" iconBefore="copy" onClick={duplicate} />
3717
+ * ```
3718
+ */
2331
3719
  export declare const MenuItem: (props: MenuItemProps) => JSX.Element | null;
2332
3720
 
2333
- export declare type MenuItemProps = Omit<BoxProps<'button'>, 'as' | 'ref' | 'onClick' | 'type'> & Omit<MenuVariantProps, 'iconBefore' | 'iconAfter'> & {
3721
+ /** Props for {@link MenuItem}, a selectable row inside a {@link Menu}. */
3722
+ export declare type MenuItemProps = Omit<BoxProps, 'as' | 'ref' | 'onClick' | 'type'> & Omit<MenuVariantProps, 'iconBefore' | 'iconAfter'> & {
3723
+ /** Primary visible text, also used for typeahead and filtering unless `textValue` is supplied. */
2334
3724
  label?: string;
3725
+ /** Secondary visible text included in filtering by default. */
2335
3726
  description?: string;
3727
+ /**
3728
+ * Chooses a regular item, checkable item, toggle item, or divider.
3729
+ * @default 'default'
3730
+ */
2336
3731
  variant?: MenuItemVariant;
3732
+ /** Prevents activation and marks the row unavailable to assistive technology. */
2337
3733
  disabled?: boolean;
3734
+ /** Sets selected styling and `aria-checked` for checkbox and toggle variants. */
2338
3735
  selected?: boolean;
3736
+ /** Icon displayed before the item text. */
2339
3737
  iconBefore?: IconNamesList;
3738
+ /** Icon displayed after the item text. */
2340
3739
  iconAfter?: IconNamesList;
3740
+ /** Renders the item as an anchor instead of a button. */
2341
3741
  href?: string;
3742
+ /** Browsing context for an anchor item. */
2342
3743
  target?: string;
3744
+ /** Relationship attribute for an anchor item, such as `noopener` for a new tab. */
2343
3745
  rel?: string;
3746
+ /** Overrides the parent menu's `closeOnSelect` behavior for this item. */
2344
3747
  closeOnSelect?: boolean;
3748
+ /** Overrides the parent menu's row density for this item. */
2345
3749
  density?: MenuDensity;
3750
+ /** Explicit text used for typeahead and filtering instead of label and description. */
2346
3751
  textValue?: string;
3752
+ /** Called for pointer selection before the menu closes. Call `event.preventDefault()` to prevent the automatic close and tree click event. */
2347
3753
  onClick?: (event: MouseEvent_2<HTMLElement>) => void;
2348
3754
  };
2349
3755
 
3756
+ /** Visual and ARIA role variants supported by {@link MenuItem}. */
2350
3757
  export declare type MenuItemVariant = 'default' | 'checkbox' | 'toggle' | 'divider';
2351
3758
 
3759
+ /** Roving-focus state for one menu level. */
2352
3760
  declare type MenuListContextValue = {
2353
3761
  activeIndex: number | null;
2354
3762
  getItemProps: (userProps?: HTMLProps<HTMLElement>) => HTMLProps<HTMLElement>;
@@ -2360,30 +3768,96 @@ declare type MenuListContextValue = {
2360
3768
  closeParentSubMenuFlyout?: () => void;
2361
3769
  };
2362
3770
 
2363
- export declare type MenuProps = {
3771
+ declare type MenuOwnProps = {
3772
+ /** Trigger element cloned with the menu's event handlers and ARIA attributes. Omit it, or use `inline`, to render the menu in place. */
2364
3773
  trigger?: ReactElement;
3774
+ /** `MenuItem`, `MenuGroup`, and `SubMenu` children that make up the menu. */
2365
3775
  children: ReactNode;
3776
+ /** Controlled popup state. Pair with `onOpenChange`; omit it to use `defaultOpen`. */
2366
3777
  open?: boolean;
3778
+ /**
3779
+ * Initial popup state for an uncontrolled triggered menu. It is used only on first render.
3780
+ * @default false
3781
+ */
2367
3782
  defaultOpen?: boolean;
3783
+ /** Called when interaction requests that a triggered menu open or close. */
2368
3784
  onOpenChange?: (open: boolean) => void;
3785
+ /**
3786
+ * Floating UI placement of a triggered menu relative to its trigger.
3787
+ * @default 'bottom-start'
3788
+ */
2369
3789
  placement?: Placement;
3790
+ /**
3791
+ * Positioning strategy for a triggered menu.
3792
+ * @default 'absolute'
3793
+ */
2370
3794
  strategy?: 'absolute' | 'fixed';
3795
+ /**
3796
+ * Closes the root menu after a `MenuItem` is selected unless that item overrides it.
3797
+ * @default true
3798
+ */
2371
3799
  closeOnSelect?: boolean;
3800
+ /**
3801
+ * Renders the panel in normal document flow without requiring a trigger.
3802
+ * @default false
3803
+ */
2372
3804
  inline?: boolean;
3805
+ /**
3806
+ * Pointer interactions that open the trigger.
3807
+ * @default 'click'
3808
+ */
2373
3809
  triggerInteraction?: MenuTriggerInteraction;
3810
+ /**
3811
+ * Delay before hover interaction opens the menu, in milliseconds.
3812
+ * @default 75
3813
+ */
2374
3814
  triggerOpenDelay?: number;
3815
+ /**
3816
+ * Delay before hover interaction closes the menu, in milliseconds.
3817
+ * @default 100
3818
+ */
2375
3819
  triggerCloseDelay?: number;
3820
+ /**
3821
+ * Default presentation for descendant `SubMenu` components.
3822
+ * @default 'hover'
3823
+ */
2376
3824
  subMenuInteraction?: SubMenuInteraction;
3825
+ /**
3826
+ * Spacing density for menu rows.
3827
+ * @default 'compact'
3828
+ */
2377
3829
  density?: MenuDensity;
3830
+ /**
3831
+ * Text used to filter `MenuItem` and `SubMenu` labels when `filterMode` is `'contains'`.
3832
+ * @default ''
3833
+ */
2378
3834
  query?: string;
3835
+ /** Reserved for external filtering controls; this component does not call it. */
2379
3836
  onQueryChange?: (query: string) => void;
3837
+ /**
3838
+ * Enables case-insensitive substring filtering when set to `'contains'`.
3839
+ * @default 'none'
3840
+ */
2380
3841
  filterMode?: MenuFilterMode;
3842
+ /**
3843
+ * Content rendered when filtering leaves no visible menu children.
3844
+ * @default 'No results found'
3845
+ */
2381
3846
  renderNoResults?: ReactNode;
3847
+ /**
3848
+ * Highlights case-insensitive query matches in visible labels and descriptions.
3849
+ * @default Boolean(query)
3850
+ */
2382
3851
  highlightMatches?: boolean;
3852
+ /**
3853
+ * Derives searchable text when an item does not provide `textValue`. It receives the item's label and description.
3854
+ * @default joins label and description with a space
3855
+ */
2383
3856
  getItemText?: (item: {
2384
3857
  label?: string;
2385
3858
  description?: string;
2386
3859
  }) => string;
3860
+ /** Applies the recipe's panel visual treatment. */
2387
3861
  panel?: MenuVariantProps['panel'];
2388
3862
  /**
2389
3863
  * When this `Menu` is used as one section of a horizontal menubar, pass a
@@ -2396,16 +3870,37 @@ export declare type MenuProps = {
2396
3870
  * row and horizontal menubar keys would not run on the trigger).
2397
3871
  */
2398
3872
  onMenubarEdgeNavigate?: (direction: 1 | -1) => void;
2399
- } & BoxProps;
3873
+ };
2400
3874
 
3875
+ /** Props for {@link Menu}, including popup state, filtering, and nested-menu behavior. */
3876
+ export declare type MenuProps = Omit<BoxProps, keyof MenuOwnProps> & MenuOwnProps;
3877
+
3878
+ /**
3879
+ * Provides menu root and filter context for custom compound-menu composition.
3880
+ *
3881
+ * Normal menus provide this context automatically. Use this provider only when
3882
+ * composing `MenuItem`, `MenuGroup`, or `SubMenu` outside a `Menu`.
3883
+ *
3884
+ * @example
3885
+ * ```tsx
3886
+ * <MenuProvider>
3887
+ * <MenuItem label="Refresh" />
3888
+ * </MenuProvider>
3889
+ * ```
3890
+ */
2401
3891
  export declare const MenuProvider: ({ children, root, filter }: MenuProviderProps) => JSX.Element;
2402
3892
 
3893
+ /** Props for {@link MenuProvider}, an escape hatch for custom menu composition. */
2403
3894
  export declare type MenuProviderProps = {
3895
+ /** Descendants that consume the supplied menu contexts. */
2404
3896
  children: ReactNode;
3897
+ /** Partial root behavior merged with the normal menu defaults. */
2405
3898
  root?: Partial<MenuRootContextValue>;
3899
+ /** Partial filtering behavior merged with the normal menu defaults. */
2406
3900
  filter?: Partial<MenuFilterContextValue>;
2407
3901
  };
2408
3902
 
3903
+ /** Shared root behavior consumed by menu compound components. */
2409
3904
  declare type MenuRootContextValue = {
2410
3905
  density: MenuDensity;
2411
3906
  panel?: MenuVariantProps['panel'];
@@ -2420,7 +3915,8 @@ declare type MenuRootContextValue = {
2420
3915
  onMenubarEdgeNavigate?: (direction: 1 | -1) => void;
2421
3916
  };
2422
3917
 
2423
- declare type MenuTriggerInteraction = 'click' | 'hover' | 'click-and-hover';
3918
+ /** Pointer or focus interactions that can open a menu trigger. */
3919
+ declare type MenuTriggerInteraction = 'click' | 'hover' | 'focus' | 'click-and-hover';
2424
3920
 
2425
3921
  declare interface MenuVariant {
2426
3922
  /**
@@ -2434,54 +3930,119 @@ declare type MenuVariantProps = {
2434
3930
  [key in keyof MenuVariant]?: ConditionalValue<MenuVariant[key]> | undefined
2435
3931
  }
2436
3932
 
3933
+ /**
3934
+ * Renders a controlled modal dialog in a portal with focus management and a
3935
+ * scroll-locking overlay.
3936
+ *
3937
+ * Escape always calls `onOpenChange(false)`. By default, pressing the overlay
3938
+ * does too. The dialog remains mounted for a 150 ms closing animation. Supply
3939
+ * an accessible name through `aria-label` or `aria-labelledby`; a visible
3940
+ * `ModalHeader` title alone is not linked automatically.
3941
+ *
3942
+ * @example
3943
+ * ```tsx
3944
+ * <Modal open={open} onOpenChange={setOpen} aria-label="Delete project">
3945
+ * <ModalHeader title="Delete project" />
3946
+ * <ModalBody>This cannot be undone.</ModalBody>
3947
+ * <ModalFooter><Button onClick={remove}>Delete</Button></ModalFooter>
3948
+ * </Modal>
3949
+ * ```
3950
+ */
2437
3951
  export declare const Modal: (props: ModalProps) => JSX.Element | null;
2438
3952
 
3953
+ /**
3954
+ * Renders the main content region of a {@link Modal}.
3955
+ *
3956
+ * @example
3957
+ * ```tsx
3958
+ * <ModalBody>Changes are saved automatically.</ModalBody>
3959
+ * ```
3960
+ */
2439
3961
  export declare const ModalBody: (props: ModalBodyProps) => JSX.Element;
2440
3962
 
2441
- declare type ModalBodyProps = Omit<BoxProps, 'children'> & {
2442
- /** Body content */
3963
+ /** Props for {@link ModalBody}, the main content region of a modal. */
3964
+ export declare type ModalBodyProps = Omit<BoxProps, 'children'> & {
3965
+ /** Content displayed in the modal's body region. */
2443
3966
  children: ReactNode;
2444
3967
  };
2445
3968
 
3969
+ /** State and close behavior shared with descendants of {@link Modal}. */
2446
3970
  declare interface ModalContextValue {
2447
- /** Whether the modal is open */
3971
+ /** Whether the modal is currently in its open phase. */
2448
3972
  open: boolean;
2449
- /** Callback to close the modal */
3973
+ /** Requests closing through the parent modal's `onOpenChange(false)`. */
2450
3974
  onClose: () => void;
2451
- /** Whether overlay clicks should close the modal */
3975
+ /** Whether the parent modal blocks overlay-triggered closing. */
2452
3976
  preventOverlayClose?: boolean;
2453
3977
  }
2454
3978
 
3979
+ /**
3980
+ * Renders the action region of a {@link Modal}.
3981
+ *
3982
+ * @example
3983
+ * ```tsx
3984
+ * <ModalFooter><Button>Save</Button></ModalFooter>
3985
+ * ```
3986
+ */
2455
3987
  export declare const ModalFooter: (props: ModalFooterProps) => JSX.Element;
2456
3988
 
2457
- declare type ModalFooterProps = Omit<BoxProps, 'children'> & {
2458
- /** Footer content (typically action buttons) */
3989
+ /** Props for {@link ModalFooter}, the action region of a modal. */
3990
+ export declare type ModalFooterProps = Omit<BoxProps, 'children'> & {
3991
+ /** Content displayed in the footer, typically dialog action buttons. */
2459
3992
  children: ReactNode;
2460
3993
  };
2461
3994
 
3995
+ /**
3996
+ * Renders the optional header region of a parent {@link Modal}.
3997
+ *
3998
+ * Use `title` for the standard heading or provide `children` for custom header
3999
+ * content. It must be rendered inside `Modal` because it uses modal context to
4000
+ * close the dialog.
4001
+ *
4002
+ * @example
4003
+ * ```tsx
4004
+ * <ModalHeader title="Edit profile" />
4005
+ * ```
4006
+ */
2462
4007
  export declare const ModalHeader: (props: ModalHeaderProps) => JSX.Element;
2463
4008
 
2464
- declare type ModalHeaderProps = Omit<BoxProps, 'children'> & {
2465
- /** Title text */
4009
+ /** Props for {@link ModalHeader}, the optional heading and close-control region. */
4010
+ export declare type ModalHeaderProps = Omit<BoxProps, 'children'> & {
4011
+ /** Text rendered as the default level-three heading when `children` is omitted. */
2466
4012
  title?: string;
2467
- /** Whether to show the close button */
4013
+ /**
4014
+ * Shows the built-in button that calls the parent modal's `onOpenChange(false)`.
4015
+ * @default true
4016
+ */
2468
4017
  showCloseButton?: boolean;
2469
- /** Children (custom header content) */
4018
+ /** Custom header content. When supplied, it replaces both `title` and the built-in close button. */
2470
4019
  children?: ReactNode;
2471
4020
  };
2472
4021
 
2473
- declare type ModalProps = Omit<BoxProps, keyof ModalVariantProps> & ModalVariantProps & {
2474
- /** Controlled open state (REQUIRED) */
4022
+ /** Props for {@link Modal}, a controlled, portalled dialog. */
4023
+ export declare type ModalProps = Omit<BoxProps, keyof ModalVariantProps> & ModalVariantProps & {
4024
+ /** Controlled dialog state. Render state changes by updating this value after `onOpenChange`. */
2475
4025
  open: boolean;
2476
- /** Callback when open state should change (REQUIRED) */
4026
+ /** Called when Escape, overlay interaction, or a descendant close control requests closing. */
2477
4027
  onOpenChange: (open: boolean) => void;
2478
- /** Whether clicking the overlay should close the modal */
4028
+ /**
4029
+ * Prevents overlay clicks from requesting close. Escape still requests close.
4030
+ * @default false
4031
+ */
2479
4032
  preventOverlayClose?: boolean;
2480
- /** Children (ModalHeader, ModalBody, ModalFooter) */
4033
+ /** Dialog content, typically composed from `ModalHeader`, `ModalBody`, and `ModalFooter`. */
2481
4034
  children: ReactNode;
2482
- /** Optional ID for ARIA attributes */
4035
+ /** Identifier applied to the dialog element. Provide accessible naming with `aria-label` or `aria-labelledby`. */
2483
4036
  id?: string;
4037
+ /**
4038
+ * Recipe size for the dialog panel.
4039
+ * @default 'md'
4040
+ */
2484
4041
  size?: ModalVariantProps['size'];
4042
+ /**
4043
+ * Recipe position for the dialog panel.
4044
+ * @default 'centered'
4045
+ */
2485
4046
  position?: ModalVariantProps['position'];
2486
4047
  };
2487
4048
 
@@ -2592,6 +4153,24 @@ declare interface ModernCssProperties {
2592
4153
  WebkitTextSecurity?: Globals | 'none' | 'circle' | 'disc' | 'square'
2593
4154
  }
2594
4155
 
4156
+ /** Props for a multiple-selection {@link Autocomplete}. */
4157
+ declare type MultipleAutocompleteProps = AutocompleteBaseProps & {
4158
+ /** Enables multiple selection and renders selected values as tokens. */
4159
+ multiple: true;
4160
+ /** Controlled selected values. Pair with `onValueChange`. */
4161
+ value?: AutocompleteValue<true>;
4162
+ /** Initial selected values when `value` is not provided. */
4163
+ defaultValue?: AutocompleteValue<true>;
4164
+ /** Runs when selection, removal, clearing, or creation requests new values. */
4165
+ onValueChange?: (value: AutocompleteValue<true>, reason: AutocompleteChangeReason) => void;
4166
+ /**
4167
+ * Runs when the selected values change.
4168
+ *
4169
+ * @deprecated Use `onValueChange`.
4170
+ */
4171
+ onChange?: (value: AutocompleteValue<true>, reason: AutocompleteChangeReason) => void;
4172
+ };
4173
+
2595
4174
  declare type Nested<P> = P & {
2596
4175
  [K in Selectors]?: Nested<P>
2597
4176
  } & {
@@ -2602,6 +4181,162 @@ declare type Nested<P> = P & {
2602
4181
 
2603
4182
  declare type Number_2 = number & {}
2604
4183
 
4184
+ declare const numericSizes: {
4185
+ '0': {
4186
+ value: string;
4187
+ };
4188
+ '1': {
4189
+ value: string;
4190
+ };
4191
+ '2': {
4192
+ value: string;
4193
+ };
4194
+ '3': {
4195
+ value: string;
4196
+ };
4197
+ '4': {
4198
+ value: string;
4199
+ };
4200
+ '5': {
4201
+ value: string;
4202
+ };
4203
+ '6': {
4204
+ value: string;
4205
+ };
4206
+ '7': {
4207
+ value: string;
4208
+ };
4209
+ '8': {
4210
+ value: string;
4211
+ };
4212
+ '9': {
4213
+ value: string;
4214
+ };
4215
+ '10': {
4216
+ value: string;
4217
+ };
4218
+ '12': {
4219
+ value: string;
4220
+ };
4221
+ '14': {
4222
+ value: string;
4223
+ };
4224
+ '16': {
4225
+ value: string;
4226
+ };
4227
+ '18': {
4228
+ value: string;
4229
+ };
4230
+ '20': {
4231
+ value: string;
4232
+ };
4233
+ '22': {
4234
+ value: string;
4235
+ };
4236
+ '24': {
4237
+ value: string;
4238
+ };
4239
+ '28': {
4240
+ value: string;
4241
+ };
4242
+ '32': {
4243
+ value: string;
4244
+ };
4245
+ '40': {
4246
+ value: string;
4247
+ };
4248
+ '48': {
4249
+ value: string;
4250
+ };
4251
+ '56': {
4252
+ value: string;
4253
+ };
4254
+ '64': {
4255
+ value: string;
4256
+ };
4257
+ '72': {
4258
+ value: string;
4259
+ };
4260
+ '80': {
4261
+ value: string;
4262
+ };
4263
+ '88': {
4264
+ value: string;
4265
+ };
4266
+ '96': {
4267
+ value: string;
4268
+ };
4269
+ '104': {
4270
+ value: string;
4271
+ };
4272
+ '112': {
4273
+ value: string;
4274
+ };
4275
+ '120': {
4276
+ value: string;
4277
+ };
4278
+ '128': {
4279
+ value: string;
4280
+ };
4281
+ '136': {
4282
+ value: string;
4283
+ };
4284
+ '144': {
4285
+ value: string;
4286
+ };
4287
+ '152': {
4288
+ value: string;
4289
+ };
4290
+ '160': {
4291
+ value: string;
4292
+ };
4293
+ '168': {
4294
+ value: string;
4295
+ };
4296
+ '176': {
4297
+ value: string;
4298
+ };
4299
+ '184': {
4300
+ value: string;
4301
+ };
4302
+ '192': {
4303
+ value: string;
4304
+ };
4305
+ '200': {
4306
+ value: string;
4307
+ };
4308
+ '208': {
4309
+ value: string;
4310
+ };
4311
+ '216': {
4312
+ value: string;
4313
+ };
4314
+ '224': {
4315
+ value: string;
4316
+ };
4317
+ '232': {
4318
+ value: string;
4319
+ };
4320
+ '240': {
4321
+ value: string;
4322
+ };
4323
+ '248': {
4324
+ value: string;
4325
+ };
4326
+ '256': {
4327
+ value: string;
4328
+ };
4329
+ '264': {
4330
+ value: string;
4331
+ };
4332
+ '272': {
4333
+ value: string;
4334
+ };
4335
+ '280': {
4336
+ value: string;
4337
+ };
4338
+ };
4339
+
2605
4340
  declare type NumericSizeToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "12" | "14" | "16" | "18" | "20" | "22" | "24" | "28" | "32" | "40" | "48" | "56" | "64" | "72" | "80" | "88" | "96" | "104" | "112" | "120" | "128" | "136" | "144" | "152" | "160" | "168" | "176" | "184" | "192" | "200" | "208" | "216" | "224" | "232" | "240" | "248" | "256" | "264" | "272" | "280"
2606
4341
 
2607
4342
  declare interface ObsoleteProperties<TLength = (string & {}) | 0, TTime = string & {}> {
@@ -3663,6 +5398,38 @@ declare type ObsoletePropertiesFallback<TLength = (string & {}) | 0, TTime = str
3663
5398
 
3664
5399
  declare type OmittedHTMLProps = 'color' | 'translate' | 'transition' | 'width' | 'height' | 'content'
3665
5400
 
5401
+ /**
5402
+ * Declares selectable metadata for a parent `Autocomplete`.
5403
+ *
5404
+ * `Option` renders no DOM by itself. Place it directly inside `Autocomplete`;
5405
+ * the parent builds the visible listbox and selection behavior.
5406
+ *
5407
+ * @example
5408
+ * ```tsx
5409
+ * <Autocomplete aria-label="Assignee">
5410
+ * <Option value="ada" label="Ada Lovelace" />
5411
+ * </Autocomplete>
5412
+ * ```
5413
+ */
5414
+ declare const Option_2: (_props: OptionProps) => null;
5415
+ export { Option_2 as Option }
5416
+
5417
+ /** Metadata accepted by an {@link Option} inside `Autocomplete`. */
5418
+ export declare type OptionProps = {
5419
+ /** Stable value reported when this option is selected. */
5420
+ value: string;
5421
+ /** Visible option text and selected-value label. */
5422
+ label: string;
5423
+ /** Prevents the option from receiving navigation or selection. */
5424
+ disabled?: boolean;
5425
+ /** Secondary text included when filtering options. */
5426
+ description?: string;
5427
+ /** Icon rendered before the option label. */
5428
+ iconLeft?: IconNamesList;
5429
+ /** Icon rendered after the option label. */
5430
+ iconRight?: IconNamesList;
5431
+ };
5432
+
3666
5433
  export declare namespace Panda {
3667
5434
  export type RecipeConfig<V extends RecipeVariantRecord = RecipeVariantRecord> = BaseRecipeConfig<V>;
3668
5435
  export type SlotRecipeConfig<S extends string = string, V extends SlotRecipeVariantRecord<S> = SlotRecipeVariantRecord<S>> = BaseSlotRecipeConfig<S, V>;
@@ -3688,6 +5455,10 @@ export declare type PatternConfig<T extends PatternProperties = PatternPropertie
3688
5455
 
3689
5456
  export declare type PatternProperties = Record<string, unknown>;
3690
5457
 
5458
+ /**
5459
+ * Combines custom props with the compatible native props and ref for the
5460
+ * element selected by `as`.
5461
+ */
3691
5462
  declare type PolymorphicComponentProps<T extends ElementType, Props extends object = object> = Props & AsProp<T> & Omit<ComponentPropsWithRef<T>, PropsToOmit<T, Props>>;
3692
5463
 
3693
5464
  declare type PositionAreaAxis =
@@ -3754,14 +5525,31 @@ declare type PositionTry =
3754
5525
  | 'inline-end'
3755
5526
  | DashedIdent
3756
5527
 
5528
+ /**
5529
+ * Renders a preformatted code block using native `pre` and `code` semantics.
5530
+ *
5531
+ * Whitespace in string content is preserved. The component does not perform
5532
+ * syntax highlighting.
5533
+ *
5534
+ * @example
5535
+ * ```tsx
5536
+ * <Pre lang="typescript">{'const ready = true;'}</Pre>
5537
+ * ```
5538
+ */
3757
5539
  export declare const Pre: (props: PreProps) => JSX.Element;
3758
5540
 
3759
- declare type PreProps = BoxProps & {
5541
+ declare type PreOwnProps = {
5542
+ /** Preformatted code content. */
3760
5543
  children: string | ReactNode;
5544
+ /** Language metadata forwarded to the nested `Code` element. */
3761
5545
  lang?: string;
5546
+ /** Element override for the rendered `pre` container. */
3762
5547
  as?: string;
3763
5548
  };
3764
5549
 
5550
+ /** Props accepted by {@link Pre}. */
5551
+ export declare type PreProps = Omit<BoxProps, keyof PreOwnProps> & PreOwnProps;
5552
+
3765
5553
  declare interface PropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}>
3766
5554
  extends StandardPropertiesFallback<TLength, TTime>,
3767
5555
  VendorPropertiesFallback<TLength, TTime>,
@@ -5512,68 +7300,117 @@ declare namespace Property {
5512
7300
  type VectorEffect = Globals | "non-scaling-stroke" | "none";
5513
7301
  }
5514
7302
 
7303
+ /** Record of native attributes and Panda CSS properties accepted by `splitProps`. */
5515
7304
  declare type PropsRecord = Record<string, unknown>;
5516
7305
 
5517
7306
  declare type PropsToOmit<T extends ElementType, P extends object> = keyof (AsProp<T> & P);
5518
7307
 
5519
7308
  declare type Pseudos = AdvancedPseudos | SimplePseudos;
5520
7309
 
7310
+ /** Direction used when comparing a viewport or container size token. */
5521
7311
  declare type QueryDirection = 'min' | 'max';
5522
7312
 
7313
+ /** Direction used when comparing a viewport or container size token. */
5523
7314
  declare type QueryDirection_2 = 'min' | 'max';
5524
7315
 
5525
7316
  /**
5526
- * Radio supports both controlled and uncontrolled usage.
7317
+ * A native radio control without a visible label.
7318
+ *
7319
+ * Prefer {@link RadioInput} inside {@link RadioGroup} for a labelled,
7320
+ * keyboard-navigable choice group. For standalone use, group radios by `name`
7321
+ * and associate each with a label using `id`. Use `checked` with `onChange` for
7322
+ * controlled state, or `defaultChecked` only for uncontrolled state.
5527
7323
  *
5528
7324
  * @example
5529
- * <Radio defaultChecked />
7325
+ * ```tsx
7326
+ * <Radio name="shipping" defaultChecked />
7327
+ * ```
5530
7328
  *
5531
7329
  * @example
7330
+ * ```tsx
5532
7331
  * const [checked, setChecked] = useState(false);
5533
- * <Radio checked={checked} onChange={(e) => setChecked(e.target.checked)} />
7332
+ * <Radio name="shipping" checked={checked} onChange={(event) => setChecked(event.target.checked)} />
7333
+ * ```
5534
7334
  */
5535
7335
  export declare const Radio: (props: RadioProps) => JSX.Element;
5536
7336
 
5537
7337
  /**
5538
- * Helper type for radio change events
7338
+ * Native change event emitted by {@link Radio}.
5539
7339
  * @example
5540
7340
  * const handleChange: RadioChangeHandler = (e) => setChecked(e.target.checked);
5541
7341
  */
5542
- declare type RadioChangeEvent = ChangeEvent<HTMLInputElement>;
7342
+ export declare type RadioChangeEvent = ChangeEvent<HTMLInputElement>;
5543
7343
 
5544
7344
  /**
5545
- * Helper type for radio change handler functions
7345
+ * Handler for a {@link Radio} native change event.
5546
7346
  * @example
5547
7347
  * const handleChange: RadioChangeHandler = (e) => setChecked(e.target.checked);
5548
7348
  */
5549
- declare type RadioChangeHandler = (e: RadioChangeEvent) => void;
7349
+ export declare type RadioChangeHandler = (e: RadioChangeEvent) => void;
5550
7350
 
7351
+ /**
7352
+ * Coordinates a mutually exclusive set of {@link RadioInput} controls.
7353
+ *
7354
+ * It renders a `radiogroup` and shares its name, selected value, and disabled
7355
+ * state through context. Each grouped `RadioInput` needs a `value`; its native
7356
+ * radio behavior provides arrow-key navigation. Use `value` with `onChange` for
7357
+ * controlled state or `defaultValue` for uncontrolled state, never both.
7358
+ *
7359
+ * @example
7360
+ * ```tsx
7361
+ * <RadioGroup name="size" defaultValue="medium" label="Size">
7362
+ * <RadioInput value="small">Small</RadioInput>
7363
+ * <RadioInput value="medium">Medium</RadioInput>
7364
+ * </RadioGroup>
7365
+ * ```
7366
+ */
5551
7367
  export declare const RadioGroup: (props: RadioGroupProps) => JSX.Element;
5552
7368
 
5553
- declare type RadioGroupProps = Omit<BoxProps, 'children' | 'role'> & {
5554
- name: string;
5555
- value?: string | null;
7369
+ /** Props for {@link RadioGroup}, which coordinates descendant {@link RadioInput} controls. */
7370
+ export declare type RadioGroupProps = Omit<BoxProps, 'children' | 'role'> & {
7371
+ /** Shared native name for descendant grouped radios. */ name: string;
7372
+ /** Controlled selected value. Pair with `onChange`; use `null` for no selection. */ value?: string | null;
7373
+ /** Initial uncontrolled selected value; later updates are ignored. */
7374
+ /** @default null */
5556
7375
  defaultValue?: string | null;
5557
- onChange?: (value: string) => void;
5558
- children: ReactNode;
5559
- label?: string;
5560
- id?: string;
5561
- disabled?: boolean;
7376
+ /** Runs with the selected child `value` after a grouped radio changes. */ onChange?: (value: string) => void;
7377
+ /** Grouped `RadioInput` children. */ children: ReactNode;
7378
+ /** Accessible name applied as `aria-label`. Use when no separate visible group label is available. */ label?: string;
7379
+ /** Group ID. When supplied, descendants should provide an element with `${id}-label` as the visible group label. */ id?: string;
7380
+ /** Disables descendant grouped radios unless a child explicitly supplies `disabled`. */ disabled?: boolean;
5562
7381
  };
5563
7382
 
7383
+ /**
7384
+ * A labelled radio option.
7385
+ *
7386
+ * Place it in {@link RadioGroup} with a unique `value` to receive shared
7387
+ * selection state, its name, and group-disabled state. Outside a group it acts
7388
+ * like a labelled {@link Radio}; supply `name` to form a native radio group.
7389
+ * Explicit `disabled` wins over group and field context.
7390
+ *
7391
+ * @example
7392
+ * ```tsx
7393
+ * <RadioGroup name="plan" defaultValue="standard" label="Plan">
7394
+ * <RadioInput value="standard">Standard</RadioInput>
7395
+ * </RadioGroup>
7396
+ * ```
7397
+ */
5564
7398
  export declare const RadioInput: (props: RadioInputProps) => JSX.Element;
5565
7399
 
5566
- declare type RadioInputProps = Omit<BoxProps, keyof RadioInputVariantProps> & RadioInputVariantProps & {
5567
- name?: string;
5568
- value?: string;
5569
- checked?: boolean;
7400
+ /** Props for {@link RadioInput}, a labelled radio that can join a {@link RadioGroup}. */
7401
+ export declare type RadioInputProps = Omit<BoxProps, keyof RadioInputVariantProps> & RadioInputVariantProps & {
7402
+ /** Native group name when the input is not inside a `RadioGroup`; group context takes precedence. */ name?: string;
7403
+ /** Value reported to the nearest `RadioGroup`; required for the input to participate in that group. */ value?: string;
7404
+ /** Controlled state for standalone use. Group context takes precedence when `value` is supplied. */ checked?: boolean;
7405
+ /** Initial standalone selected state; ignored for grouped radios and after mount. */
7406
+ /** @default false */
5570
7407
  defaultChecked?: boolean;
5571
- onChange?: RadioChangeHandler;
5572
- id?: string;
5573
- error?: boolean;
5574
- invalid?: boolean;
5575
- children?: string | ReactNode;
5576
- disabled?: boolean;
7408
+ /** Runs after group selection is requested and for standalone native changes. The group `onChange` receives the selected value. */ onChange?: RadioChangeHandler;
7409
+ /** Input ID. A stable ID is generated when omitted and associated with the wrapper label. */ id?: string;
7410
+ /** Applies error styling, overriding field context. */ error?: boolean;
7411
+ /** Marks the radio invalid, overriding field context. */ invalid?: boolean;
7412
+ /** Visible label content. */ children?: string | ReactNode;
7413
+ /** Disables the radio, overriding group and field context. */ disabled?: boolean;
5577
7414
  };
5578
7415
 
5579
7416
  declare interface RadioInputVariant {
@@ -5584,15 +7421,18 @@ declare type RadioInputVariantProps = {
5584
7421
  [key in keyof RadioInputVariant]?: ConditionalValue<RadioInputVariant[key]> | undefined
5585
7422
  }
5586
7423
 
5587
- declare type RadioProps = Omit<BoxProps, 'checked' | 'defaultChecked' | 'onChange' | keyof RadioVariantProps> & RadioVariantProps & {
5588
- name?: string;
5589
- checked?: boolean;
7424
+ /** Props for {@link Radio}, the unlabelled native radio primitive. */
7425
+ export declare type RadioProps = Omit<BoxProps, 'checked' | 'defaultChecked' | 'onChange' | keyof RadioVariantProps> & RadioVariantProps & {
7426
+ /** Native radio group name. Radios with the same name are mutually exclusive. */ name?: string;
7427
+ /** Controlled selected state. Pair with `onChange`; do not combine with `defaultChecked`. */ checked?: boolean;
7428
+ /** Initial selected state for uncontrolled use; later updates are ignored. */
7429
+ /** @default false */
5590
7430
  defaultChecked?: boolean;
5591
- onChange?: RadioChangeHandler;
5592
- id?: string;
5593
- error?: boolean;
5594
- invalid?: boolean;
5595
- disabled?: boolean;
7431
+ /** Runs for the native input change event when this radio becomes selected. */ onChange?: RadioChangeHandler;
7432
+ /** Native input ID used by an external label. */ id?: string;
7433
+ /** Applies error styling, overriding field context. */ error?: boolean;
7434
+ /** Marks the native input invalid with `aria-invalid`, overriding field context. */ invalid?: boolean;
7435
+ /** Disables interaction, overriding field context. */ disabled?: boolean;
5596
7436
  };
5597
7437
 
5598
7438
  declare interface RadioVariant {
@@ -5609,38 +7449,333 @@ export declare type RecipeConfig<V extends RecipeVariantRecord = RecipeVariantRe
5609
7449
 
5610
7450
  export declare type RecipeVariantRecord = Record<string, Record<string, unknown> | string | number | boolean | null | undefined>;
5611
7451
 
7452
+ /**
7453
+ * Edits a date as separate year, month, and day spinbutton segments.
7454
+ *
7455
+ * The component clamps days to the selected month and emits only complete
7456
+ * dates or a fully cleared `null` value. Use `DateInput` when leading or
7457
+ * trailing slots and field validation styling are needed.
7458
+ *
7459
+ * @example
7460
+ * ```tsx
7461
+ * <SegmentedDate defaultValue={{ year: 2026, month: 8, day: 3 }} />
7462
+ * ```
7463
+ */
7464
+ export declare const SegmentedDate: (props: SegmentedDateProps) => JSX.Element;
7465
+
7466
+ declare type SegmentedDateFormat = DateFormat;
7467
+
7468
+ /** Props for {@link SegmentedDate}, a keyboard-editable date field. */
7469
+ export declare type SegmentedDateProps = Omit<BoxProps, keyof SegmentedInputsVariantProps | 'children' | 'onChange' | 'value'> & SegmentedInputVariantProps & {
7470
+ /** Ref attached to the segmented group container. */
7471
+ ref?: Ref<HTMLDivElement>;
7472
+ /** Controlled date. Pair with `onChange`; `null` clears every segment. */
7473
+ value?: DateValue | null;
7474
+ /** Initial date when `value` is not provided. */
7475
+ defaultValue?: DateValue | null;
7476
+ /** Runs after all date segments form a date, or after every segment is cleared. */
7477
+ onChange?: (value: DateValue | null) => void;
7478
+ /**
7479
+ * Segment order and default separator.
7480
+ *
7481
+ * @default 'YYYY-MM-DD'
7482
+ */
7483
+ format?: SegmentedDateFormat;
7484
+ /** Overrides separator content or spacing between date segments. */
7485
+ separators?: SeparatorConfig;
7486
+ /**
7487
+ * Accessible name for the segmented group.
7488
+ *
7489
+ * @default 'Date'
7490
+ */
7491
+ label?: string;
7492
+ /** Prevents editing and keyboard interaction. */
7493
+ disabled?: boolean;
7494
+ /** Runs when focus enters any date segment. */
7495
+ onFocusWithin?: () => void;
7496
+ /** Runs when focus leaves a date segment and provides the next focused node. */
7497
+ onBlurWithin?: (relatedTarget: Node | null) => void;
7498
+ };
7499
+
7500
+ declare interface SegmentedFieldsVariant {
7501
+ /**
7502
+ * @default "md"
7503
+ */
7504
+ size: "sm" | "md" | "lg" | "xl"
7505
+ field: "date" | "time" | "dateTime"
7506
+ range: "date" | "time"
7507
+ before: boolean
7508
+ after: boolean
7509
+ }
7510
+
7511
+ declare type SegmentedFieldsVariantProps = {
7512
+ [key in keyof SegmentedFieldsVariant]?: ConditionalValue<SegmentedFieldsVariant[key]> | undefined
7513
+ }
7514
+
7515
+ /**
7516
+ * Renders a keyboard-editable group of numeric and choice segments.
7517
+ *
7518
+ * This is the low-level primitive used by `SegmentedDate` and
7519
+ * `SegmentedTime`. Each segment uses spinbutton semantics; arrow keys step
7520
+ * values, number or choice keys enter values, and focus advances between
7521
+ * completed numeric segments.
7522
+ *
7523
+ * @example
7524
+ * ```tsx
7525
+ * <SegmentedInput
7526
+ * label="Quantity"
7527
+ * items={[{
7528
+ * type: 'segment', kind: 'numeric', id: 'quantity',
7529
+ * label: 'Quantity', placeholder: '0', value: null,
7530
+ * min: 0, max: 99, digits: 2,
7531
+ * }]}
7532
+ * />
7533
+ * ```
7534
+ */
7535
+ export declare const SegmentedInput: (props: SegmentedInputProps) => JSX.Element;
7536
+
7537
+ /** Change payload containing the complete value map and changed segment. */
7538
+ declare type SegmentedInputChange = {
7539
+ values: SegmentedInputValueMap;
7540
+ changedSegmentId: string;
7541
+ };
7542
+
7543
+ /** Editable segment or visual separator accepted by `SegmentedInput`. */
7544
+ export declare type SegmentedInputItem = SegmentItem | SeparatorItem;
7545
+
7546
+ /** Props for the low-level {@link SegmentedInput} composition primitive. */
7547
+ export declare type SegmentedInputProps = Omit<BoxProps, keyof SegmentedInputsVariantProps | 'children' | 'onChange' | 'value'> & SegmentedInputVariantProps_2 & {
7548
+ /** Ref attached to the segment group container. */
7549
+ ref?: Ref<HTMLDivElement>;
7550
+ /** Ordered editable segments and visual separators. */
7551
+ items: readonly SegmentedInputItem[];
7552
+ /** Accessible name announced for the complete group. */
7553
+ label: string;
7554
+ /** Prevents editing and keyboard interaction. Overrides field context. */
7555
+ disabled?: boolean;
7556
+ /** Controlled values keyed by segment identifier. */
7557
+ value?: SegmentedInputValueMap;
7558
+ /** Runs after a segment changes with the complete next value map. */
7559
+ onChange?: (change: SegmentedInputChange) => void;
7560
+ /** Runs when focus enters any editable segment. */
7561
+ onFocusWithin?: () => void;
7562
+ /** Runs when focus leaves a segment and provides the next focused node. */
7563
+ onBlurWithin?: (relatedTarget: Node | null) => void;
7564
+ };
7565
+
7566
+ declare interface SegmentedInputsVariant {
7567
+ /**
7568
+ * @default "md"
7569
+ */
7570
+ size: "sm" | "md" | "lg" | "xl"
7571
+ }
7572
+
7573
+ declare type SegmentedInputsVariantProps = {
7574
+ [key in keyof SegmentedInputsVariant]?: ConditionalValue<SegmentedInputsVariant[key]> | undefined
7575
+ }
7576
+
7577
+ /** Current segment values keyed by each segment's stable identifier. */
7578
+ export declare type SegmentedInputValueMap = Record<string, SegmentValue>;
7579
+
7580
+ declare type SegmentedInputVariantProps = Omit<SegmentedInputsVariantProps, 'bare'>;
7581
+
7582
+ declare type SegmentedInputVariantProps_2 = Omit<SegmentedInputsVariantProps, 'bare'>;
7583
+
7584
+ declare type SegmentedInputVariantProps_3 = Omit<SegmentedInputsVariantProps, 'bare'>;
7585
+
7586
+ /**
7587
+ * Edits a time as separate hour, minute, and optional meridiem segments.
7588
+ *
7589
+ * Display may use 12- or 24-hour time, but values always store hours from 0
7590
+ * through 23. Use `TimeInput` when leading or trailing slots and field
7591
+ * validation styling are needed.
7592
+ *
7593
+ * @example
7594
+ * ```tsx
7595
+ * <SegmentedTime defaultValue={{ hour: 13, minute: 30 }} timeFormat="12" />
7596
+ * ```
7597
+ */
7598
+ export declare const SegmentedTime: (props: SegmentedTimeProps) => JSX.Element;
7599
+
7600
+ /** Props for {@link SegmentedTime}, a keyboard-editable time field. */
7601
+ export declare type SegmentedTimeProps = Omit<BoxProps, keyof SegmentedInputsVariantProps | 'children' | 'onChange' | 'value'> & SegmentedInputVariantProps_3 & {
7602
+ /** Ref attached to the segmented group container. */
7603
+ ref?: Ref<HTMLDivElement>;
7604
+ /** Controlled 24-hour time value. Pair with `onChange`. */
7605
+ value?: TimeValue | null;
7606
+ /** Initial time when `value` is not provided. */
7607
+ defaultValue?: TimeValue | null;
7608
+ /** Runs when the hour and minute segments form a complete time. */
7609
+ onChange?: (value: TimeValue | null) => void;
7610
+ /**
7611
+ * Display cycle; emitted values always use 24-hour hours.
7612
+ *
7613
+ * @default '12'
7614
+ */
7615
+ timeFormat?: TimeFormat;
7616
+ /**
7617
+ * Minute increment used by keyboard stepping. Unsupported values are normalized.
7618
+ *
7619
+ * @default 1
7620
+ */
7621
+ minuteStep?: number;
7622
+ /** Overrides content or spacing around time and meridiem separators. */
7623
+ separators?: {
7624
+ time?: SeparatorConfig;
7625
+ meridiem?: SeparatorConfig;
7626
+ };
7627
+ /**
7628
+ * Accessible name for the segmented group.
7629
+ *
7630
+ * @default 'Time'
7631
+ */
7632
+ label?: string;
7633
+ /** Prevents editing and keyboard interaction. */
7634
+ disabled?: boolean;
7635
+ /** Runs when focus enters any time segment. */
7636
+ onFocusWithin?: () => void;
7637
+ /** Runs when focus leaves a time segment and provides the next focused node. */
7638
+ onBlurWithin?: (relatedTarget: Node | null) => void;
7639
+ };
7640
+
7641
+ /** Metadata for an editable numeric or choice segment. */
7642
+ declare type SegmentItem = {
7643
+ type: 'segment';
7644
+ id: string;
7645
+ label: string;
7646
+ placeholder: string;
7647
+ value: SegmentValue;
7648
+ disabled?: boolean;
7649
+ } & ({
7650
+ kind: 'numeric';
7651
+ min: number;
7652
+ max: number;
7653
+ digits: number;
7654
+ step?: number;
7655
+ format?: (value: number) => string;
7656
+ clampValue?: (value: number, values: SegmentedInputValueMap) => number;
7657
+ } | {
7658
+ kind: 'choice';
7659
+ choices: readonly string[];
7660
+ inputKeys?: Record<string, string>;
7661
+ });
7662
+
7663
+ /** Value stored by one editable segment. */
7664
+ declare type SegmentValue = number | string | null;
7665
+
7666
+ /**
7667
+ * Chooses one or more values from metadata-only {@link SelectOption} children.
7668
+ *
7669
+ * The trigger uses combobox/listbox semantics. Arrow keys, Enter, and Space open
7670
+ * it; typeahead and arrow keys navigate options; Escape or outside press closes
7671
+ * it. Focus stays on the trigger when the non-modal popup opens.
7672
+ *
7673
+ * @example
7674
+ * ```tsx
7675
+ * <Select defaultValue="draft" name="status">
7676
+ * <SelectOption value="draft" label="Draft" />
7677
+ * <SelectOption value="published" label="Published" />
7678
+ * </Select>
7679
+ * ```
7680
+ */
5612
7681
  export declare const Select: (props: SelectProps) => JSX.Element;
5613
7682
 
7683
+ /**
7684
+ * Declares an option for a parent {@link Select}.
7685
+ *
7686
+ * This component returns `null`; place it directly inside `Select` so the
7687
+ * parent can interpret its metadata.
7688
+ *
7689
+ * @example
7690
+ * ```tsx
7691
+ * <SelectOption value="medium" label="Medium" />
7692
+ * ```
7693
+ */
5614
7694
  export declare const SelectOption: (_props: SelectOptionProps) => null;
5615
7695
 
7696
+ /** Metadata consumed by {@link Select}; `SelectOption` does not render an element itself. */
5616
7697
  export declare type SelectOptionProps = Omit<BoxProps, 'children'> & {
7698
+ /** Stable value emitted by the parent `Select`. */
5617
7699
  value: string;
7700
+ /** Visible option text and the value used for keyboard typeahead. */
5618
7701
  label: string;
7702
+ /** Excludes the option from pointer and keyboard selection. */
5619
7703
  disabled?: boolean;
7704
+ /** Supporting text displayed below the label in the popup. */
5620
7705
  description?: string;
7706
+ /** Icon displayed before the option label. */
5621
7707
  iconLeft?: IconNamesList;
7708
+ /** Icon displayed after the option label. */
5622
7709
  iconRight?: IconNamesList;
5623
7710
  };
5624
7711
 
5625
7712
  declare type Selectors = AttributeSelector | ParentSelector
5626
7713
 
5627
- export declare type SelectProps = Omit<BoxProps<'button'>, keyof SelectVariantProps | 'children' | 'onChange' | 'type' | 'value'> & SelectVariantProps & {
7714
+ /** Props for {@link Select}, an ARIA listbox-based single or multiple select. */
7715
+ export declare type SelectProps = Omit<BoxProps, keyof SelectVariantProps | 'children' | 'onChange' | 'type' | 'value'> & SelectVariantProps & {
7716
+ /** Controlled selected value. Use a string for single selection or a string array for multiple selection, with `onChange` to accept changes. */
5628
7717
  value?: SelectValue;
7718
+ /**
7719
+ * Initial selected value for an uncontrolled select. It is used only on first render.
7720
+ * @default null
7721
+ */
5629
7722
  defaultValue?: SelectValue;
7723
+ /** Called when the user selects, deselects, or clears an option. In controlled mode, update `value` with the supplied value. */
5630
7724
  onChange?: (value: SelectValue) => void;
7725
+ /**
7726
+ * Allows several options to be selected and renders selected options as removable chips.
7727
+ * @default false
7728
+ */
5631
7729
  multiple?: boolean;
7730
+ /**
7731
+ * Text shown while no option is selected.
7732
+ * @default 'Select...'
7733
+ */
5632
7734
  placeholder?: string;
7735
+ /** Controlled popup state. Pair with `onOpenChange`; omit it to use `defaultOpen`. */
5633
7736
  open?: boolean;
7737
+ /**
7738
+ * Initial popup state for an uncontrolled select. It is used only on first render.
7739
+ * @default false
7740
+ */
5634
7741
  defaultOpen?: boolean;
7742
+ /** Called when user interaction requests that the popup open or close. */
5635
7743
  onOpenChange?: (open: boolean) => void;
7744
+ /**
7745
+ * Floating UI placement for the listbox relative to the trigger.
7746
+ * @default 'bottom-start'
7747
+ */
5636
7748
  placement?: Placement;
7749
+ /**
7750
+ * Gap between the trigger and listbox, in pixels.
7751
+ * @default 4
7752
+ */
5637
7753
  offset?: number;
7754
+ /** Metadata-only `SelectOption` children used to build the listbox. Other children are ignored. */
5638
7755
  children?: ReactNode;
7756
+ /** Identifier for the combobox trigger. A generated identifier is used when omitted. */
5639
7757
  id?: string;
7758
+ /** Form field name. Each selected value is submitted through a hidden input. */
5640
7759
  name?: string;
7760
+ /**
7761
+ * Prevents opening, selection, and hidden-input submission.
7762
+ * @default false
7763
+ */
5641
7764
  disabled?: boolean;
7765
+ /**
7766
+ * Marks the combobox as invalid with `aria-invalid` and error styling.
7767
+ * @default false
7768
+ */
5642
7769
  error?: boolean;
7770
+ /**
7771
+ * Density applied to the popup options.
7772
+ * @default 'compact'
7773
+ */
5643
7774
  density?: MenuDensity;
7775
+ /**
7776
+ * Shrinks the trigger to its content instead of using the standard select width.
7777
+ * @default false
7778
+ */
5644
7779
  autoSize?: boolean;
5645
7780
  };
5646
7781
 
@@ -5659,6 +7794,25 @@ declare type SelectVariantProps = {
5659
7794
  [key in keyof SelectVariant]?: ConditionalValue<SelectVariant[key]> | undefined
5660
7795
  }
5661
7796
 
7797
+ /** Content and spacing used for a separator between editable segments. */
7798
+ export declare type SeparatorConfig = {
7799
+ /** Visual separator content. */
7800
+ content?: ReactNode;
7801
+ /** Space placed around the separator. */
7802
+ gap?: SeparatorGap;
7803
+ };
7804
+
7805
+ /** Spacing applied around a visual separator between editable segments. */
7806
+ export declare type SeparatorGap = 'none' | 'tight' | 'normal' | 'loose';
7807
+
7808
+ /** Metadata for non-editable content between segments. */
7809
+ declare type SeparatorItem = {
7810
+ type: 'separator';
7811
+ id: string;
7812
+ content: ReactNode;
7813
+ gap?: SeparatorGap;
7814
+ };
7815
+
5662
7816
  declare type ShadowToken = "zeroBase" | "raisedBase" | "elevatedBase" | "overlayBase" | "overflowBase" | "zero" | "raised" | "elevated" | "overlay" | "overflow"
5663
7817
 
5664
7818
  declare type SimplePseudos =
@@ -5773,21 +7927,62 @@ declare type SimplePseudos =
5773
7927
  | ":valid"
5774
7928
  | ":visited";
5775
7929
 
7930
+ /** Props for a single-selection {@link Autocomplete}. */
7931
+ declare type SingleAutocompleteProps = AutocompleteBaseProps & {
7932
+ /** Selects at most one value. */
7933
+ multiple?: false;
7934
+ /** Controlled selected value. Pair with `onValueChange`. */
7935
+ value?: AutocompleteValue<false>;
7936
+ /** Initial selected value when `value` is not provided. */
7937
+ defaultValue?: AutocompleteValue<false>;
7938
+ /** Runs when selection, removal, clearing, or creation requests a new value. */
7939
+ onValueChange?: (value: AutocompleteValue<false>, reason: AutocompleteChangeReason) => void;
7940
+ /**
7941
+ * Runs when the selected value changes.
7942
+ *
7943
+ * @deprecated Use `onValueChange`.
7944
+ */
7945
+ onChange?: (value: AutocompleteValue<false>, reason: AutocompleteChangeReason) => void;
7946
+ };
7947
+
5776
7948
  declare type SizeToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "12" | "14" | "16" | "18" | "20" | "22" | "24" | "28" | "32" | "40" | "48" | "56" | "64" | "72" | "80" | "88" | "96" | "104" | "112" | "120" | "128" | "136" | "144" | "152" | "160" | "168" | "176" | "184" | "192" | "200" | "208" | "216" | "224" | "232" | "240" | "248" | "256" | "264" | "272" | "280" | "full" | "half" | "min" | "max" | "fit" | "prose" | "auto" | "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "breakpoint-xs" | "breakpoint-sm" | "breakpoint-md" | "breakpoint-lg" | "breakpoint-xl" | "breakpoint-2xl"
5777
7949
 
7950
+ /**
7951
+ * Reserves the shape of content while that content is loading.
7952
+ *
7953
+ * `Skeleton` is visual only and does not announce loading. Put it in a region
7954
+ * with an appropriate accessible loading state when users need that feedback.
7955
+ *
7956
+ * @example
7957
+ * ```tsx
7958
+ * <Skeleton width="full" height="40" aria-hidden />
7959
+ * ```
7960
+ */
5778
7961
  export declare const Skeleton: (props: SkeletonProps) => JSX.Element;
5779
7962
 
7963
+ /** Supported animation modes for {@link Skeleton}. */
5780
7964
  declare type SkeletonAnimation = 'pulse' | 'wave' | false;
5781
7965
 
5782
- declare type SkeletonProps = Omit<BoxProps, 'as' | 'children' | 'width' | 'height'> & {
7966
+ /** Props accepted by {@link Skeleton}. */
7967
+ export declare type SkeletonProps = Omit<BoxProps, 'as' | 'children' | 'width' | 'height'> & {
7968
+ /** Loading animation, or `false` for a static placeholder. */
7969
+ /** @default "pulse" */
5783
7970
  animation?: SkeletonAnimation;
7971
+ /** Placeholder shape. */
7972
+ /** @default "text" */
5784
7973
  variant?: SkeletonVariant;
7974
+ /** Element or component rendered as the placeholder root. */
7975
+ /** @default "span" */
5785
7976
  component?: ElementType;
7977
+ /** Explicit placeholder width; content determines width when omitted. */
5786
7978
  width?: string | number;
7979
+ /** Explicit placeholder height; content determines height when omitted. */
5787
7980
  height?: string | number;
7981
+ /** Content whose dimensions the skeleton should match. */
5788
7982
  children?: ReactNode;
5789
7983
  };
5790
7984
 
7985
+ /** Supported placeholder shapes for {@link Skeleton}. */
5791
7986
  declare type SkeletonVariant = 'text' | 'circular' | 'rounded' | 'rectangular';
5792
7987
 
5793
7988
  export declare type SlotRecipeConfig<S extends string = string, V extends SlotRecipeVariantRecord<S> = SlotRecipeVariantRecord<S>> = BaseSlotRecipeConfig<S, V>;
@@ -5796,11 +7991,28 @@ export declare type SlotRecipeVariantRecord<S extends string = string> = Record<
5796
7991
 
5797
7992
  declare type SpacingToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "12" | "14" | "16" | "18" | "20" | "22" | "24" | "28" | "32" | "40" | "48" | "56" | "64" | "72" | "80" | "88" | "96" | "104" | "112" | "120" | "128" | "136" | "144" | "152" | "160" | "168" | "176" | "184" | "192" | "200" | "208" | "216" | "224" | "232" | "240" | "248" | "256" | "264" | "272" | "280" | "full" | "half" | "min" | "max" | "fit" | "prose" | "auto" | "-0" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-12" | "-14" | "-16" | "-18" | "-20" | "-22" | "-24" | "-28" | "-32" | "-40" | "-48" | "-56" | "-64" | "-72" | "-80" | "-88" | "-96" | "-104" | "-112" | "-120" | "-128" | "-136" | "-144" | "-152" | "-160" | "-168" | "-176" | "-184" | "-192" | "-200" | "-208" | "-216" | "-224" | "-232" | "-240" | "-248" | "-256" | "-264" | "-272" | "-280" | "-full" | "-half" | "-min" | "-max" | "-fit" | "-prose" | "-auto"
5798
7993
 
7994
+ /**
7995
+ * Displays an indeterminate visual loading indicator.
7996
+ *
7997
+ * `Spinner` does not create a live region or loading label. Apply `aria-busy`
7998
+ * and visible or screen-reader text to the region whose state is changing.
7999
+ *
8000
+ * @example
8001
+ * ```tsx
8002
+ * <Box aria-busy="true" aria-label="Loading orders"><Spinner /></Box>
8003
+ * ```
8004
+ */
5799
8005
  export declare const Spinner: (props: SpinnerProps) => JSX.Element;
5800
8006
 
5801
- declare type SpinnerProps = Omit<BoxProps, keyof SpinnerVariantProps> & SpinnerVariantProps & {
8007
+ /** Props accepted by {@link Spinner}. */
8008
+ export declare type SpinnerProps = Omit<BoxProps, keyof SpinnerVariantProps> & SpinnerVariantProps & {
8009
+ /** Uses the inverse-color treatment for dark or bold surfaces. */
8010
+ /** @default false */
5802
8011
  inverse?: boolean;
8012
+ /** Absolutely centers the spinner within its positioned container. */
8013
+ /** @default false */
5803
8014
  centered?: boolean;
8015
+ /** Visual size. An explicit value takes precedence over slot context. */
5804
8016
  size?: SpinnerVariantProps['size'];
5805
8017
  };
5806
8018
 
@@ -5817,6 +8029,20 @@ declare type SpinnerVariantProps = {
5817
8029
  [key in keyof SpinnerVariant]?: ConditionalValue<SpinnerVariant[key]> | undefined
5818
8030
  }
5819
8031
 
8032
+ /**
8033
+ * Separates Panda CSS props from remaining element props and returns a merged
8034
+ * class name for the generated styles.
8035
+ *
8036
+ * The first tuple value combines an existing string `className` with styles
8037
+ * generated from Panda CSS props, including the `css` prop. The second value
8038
+ * excludes those styling props and `className`, so it can be spread onto an
8039
+ * element without leaking them to the DOM.
8040
+ *
8041
+ * @example
8042
+ * ```tsx
8043
+ * const [className, elementProps] = splitProps({ p: '4', id: 'profile' });
8044
+ * ```
8045
+ */
5820
8046
  export declare const splitProps: (props: PropsRecord) => [string, PropsRecord];
5821
8047
 
5822
8048
  declare interface StandardLonghandProperties<TLength = (string & {}) | 0, TTime = string & {}> {
@@ -11931,19 +14157,47 @@ declare type String_2 = string & {}
11931
14157
 
11932
14158
  declare type StringToMultiple<T extends string> = T | `${T}, ${T}`
11933
14159
 
14160
+ /**
14161
+ * Opens nested menu content from a row in a parent {@link Menu}.
14162
+ *
14163
+ * Hover submenus open as positioned flyouts; `interaction="digin"` replaces
14164
+ * the parent level in the same panel. Arrow Right opens a flyout and Arrow Left
14165
+ * returns focus to its trigger. Filtering also searches nested children.
14166
+ *
14167
+ * @example
14168
+ * ```tsx
14169
+ * <SubMenu label="More actions">
14170
+ * <MenuItem label="Duplicate" />
14171
+ * </SubMenu>
14172
+ * ```
14173
+ */
11934
14174
  export declare const SubMenu: (props: SubMenuProps) => JSX.Element | null;
11935
14175
 
14176
+ /** Opens a submenu as a positioned flyout or as an in-panel drill-in level. */
11936
14177
  declare type SubMenuInteraction = 'hover' | 'digin';
11937
14178
 
14179
+ /** Props for {@link SubMenu}, a nested menu trigger and its child menu. */
11938
14180
  export declare type SubMenuProps = Omit<BoxProps, 'as'> & Omit<MenuVariantProps, 'iconBefore' | 'iconAfter'> & {
14181
+ /** Visible submenu trigger text. */
11939
14182
  label: string;
14183
+ /** Secondary visible text included in filtering by default. */
11940
14184
  description?: string;
14185
+ /** Prevents opening the nested menu. */
11941
14186
  disabled?: boolean;
14187
+ /** Applies selected styling to the nested-menu trigger. */
11942
14188
  selected?: boolean;
14189
+ /** Icon displayed before the trigger text. */
11943
14190
  iconBefore?: IconNamesList;
14191
+ /** Overrides the parent menu's submenu interaction mode. */
11944
14192
  interaction?: SubMenuInteraction;
14193
+ /**
14194
+ * Floating placement for a hover submenu.
14195
+ * @default 'right-start'
14196
+ */
11945
14197
  placement?: Placement;
14198
+ /** `MenuItem`, `MenuGroup`, or nested `SubMenu` children. */
11946
14199
  children: ReactNode;
14200
+ /** Explicit text used for typeahead and filtering instead of label and description. */
11947
14201
  textValue?: string;
11948
14202
  };
11949
14203
 
@@ -19495,13 +21749,32 @@ export declare type SystemStyleObject = Record<string, unknown>;
19495
21749
 
19496
21750
  declare type SystemStyleObject_2 = Omit<Nested<SystemProperties & CssVarProperties>, 'base'>
19497
21751
 
21752
+ /**
21753
+ * Displays a compact, non-interactive category or status label.
21754
+ *
21755
+ * Use `Chip` when the item can be selected or dismissed. Icons are decorative,
21756
+ * so the text must communicate the tag's meaning.
21757
+ *
21758
+ * @example
21759
+ * ```tsx
21760
+ * <Tag hue="green">Approved</Tag>
21761
+ * ```
21762
+ */
19498
21763
  export declare const Tag: (props: TagProps) => JSX.Element;
19499
21764
 
19500
- declare type TagProps = Omit<BoxProps, keyof TagVariantProps> & Omit<TagVariantProps, 'iconBefore' | 'iconAfter'> & {
21765
+ /** Props accepted by {@link Tag}. */
21766
+ export declare type TagProps = Omit<BoxProps, keyof TagVariantProps> & Omit<TagVariantProps, 'iconBefore' | 'iconAfter'> & {
21767
+ /** Visible tag label. */
19501
21768
  children: string;
21769
+ /** Decorative icon shown before the label. */
19502
21770
  iconBefore?: IconNamesList;
21771
+ /** Decorative icon shown after the label. */
19503
21772
  iconAfter?: IconNamesList;
21773
+ /** Visual emphasis treatment. */
21774
+ /** @default "default" */
19504
21775
  variant?: TagVariantProps['variant'];
21776
+ /** Color family used by the tag treatment. */
21777
+ /** @default "slate" */
19505
21778
  hue?: TagVariantProps['hue'];
19506
21779
  };
19507
21780
 
@@ -19523,17 +21796,50 @@ declare type TagVariantProps = {
19523
21796
  [key in keyof TagVariant]?: TagVariant[key] | undefined
19524
21797
  }
19525
21798
 
21799
+ /**
21800
+ * Renders design-system typography without imposing document semantics.
21801
+ *
21802
+ * The component renders a `span` by default. Choose `as` based on the content's
21803
+ * semantic role; use `Heading` for document headings and `Label` for form
21804
+ * labels.
21805
+ *
21806
+ * @example
21807
+ * ```tsx
21808
+ * <Text as="p" size="md">Account details</Text>
21809
+ * ```
21810
+ */
19526
21811
  declare const Text_2: (props: TextProps) => JSX.Element;
19527
21812
  export { Text_2 as Text }
19528
21813
 
21814
+ /**
21815
+ * Renders a multi-line native textarea.
21816
+ *
21817
+ * Use a `Label` or `FormField` to provide its accessible name. Local `size`,
21818
+ * error, invalid, and disabled values override matching field-context values.
21819
+ *
21820
+ * @example
21821
+ * ```tsx
21822
+ * <Textarea id="notes" name="notes" rows={4} />
21823
+ * ```
21824
+ */
19529
21825
  export declare const Textarea: (props: TextareaProps) => JSX.Element;
19530
21826
 
19531
- declare type TextareaProps = Omit<BoxProps, keyof TextareaVariantProps> & TextareaVariantProps & {
21827
+ /** Props for {@link Textarea}, a multi-line native text input. */
21828
+ export declare type TextareaProps = Omit<BoxProps, keyof TextareaVariantProps> & TextareaVariantProps & {
21829
+ /** Form field name submitted with the textarea value. */
19532
21830
  name: string;
21831
+ /**
21832
+ * Applies the recipe's content-sized visual treatment; it does not measure or resize the native element.
21833
+ * @default false
21834
+ */
19533
21835
  autoSize?: boolean;
21836
+ /** Applies error styling. The local value takes precedence over field context. */
19534
21837
  error?: boolean;
21838
+ /** Marks the native textarea invalid with `aria-invalid` and applies invalid styling. */
19535
21839
  invalid?: boolean;
21840
+ /** Disables the native textarea. The local value takes precedence over field context. */
19536
21841
  disabled?: boolean;
21842
+ /** Identifier used to associate a visible `Label` with this textarea. */
19537
21843
  id?: string;
19538
21844
  };
19539
21845
 
@@ -19549,19 +21855,51 @@ declare type TextareaVariantProps = {
19549
21855
  [key in keyof TextareaVariant]?: ConditionalValue<TextareaVariant[key]> | undefined
19550
21856
  }
19551
21857
 
21858
+ /**
21859
+ * Renders a single-line native input with optional leading and trailing slots.
21860
+ *
21861
+ * Use a `Label` or `FormField` to provide an accessible name. `before` and
21862
+ * `after` can contain controls; they inherit size and state through slot
21863
+ * context. Explicit slots take precedence over `iconBefore` and `iconAfter`.
21864
+ *
21865
+ * @example
21866
+ * ```tsx
21867
+ * <TextInput id="email" name="email" type="email" iconBefore="mail" />
21868
+ * ```
21869
+ */
19552
21870
  export declare const TextInput: (props: TextInputProps) => JSX.Element;
19553
21871
 
19554
- declare type TextInputProps = Omit<BoxProps, keyof TextInputVariantProps> & Omit<TextInputVariantProps, 'before' | 'after' | 'iconBefore' | 'iconAfter'> & {
21872
+ /** Props for {@link TextInput}, a single-line native input with optional slots. */
21873
+ export declare type TextInputProps = Omit<BoxProps, keyof TextInputVariantProps> & Omit<TextInputVariantProps, 'before' | 'after' | 'iconBefore' | 'iconAfter'> & {
21874
+ /** Form field name submitted with the input value. */
19555
21875
  name: string;
21876
+ /** Identifier used to associate a visible `Label` with this input. */
19556
21877
  id?: string;
21878
+ /** Content rendered before the native input. Takes precedence over `iconBefore`. */
19557
21879
  before?: ReactNode;
21880
+ /** Content rendered after the native input. Takes precedence over `iconAfter`. */
19558
21881
  after?: ReactNode;
21882
+ /** Decorative icon rendered before the input when `before` is omitted. */
19559
21883
  iconBefore?: IconNamesList;
21884
+ /** Decorative icon rendered after the input when `after` is omitted. */
19560
21885
  iconAfter?: IconNamesList;
21886
+ /** Applies error styling. The local value takes precedence over field context. */
19561
21887
  error?: boolean;
21888
+ /** Disables the native input. The local value takes precedence over slot and field context. */
19562
21889
  disabled?: boolean;
21890
+ /** Applies valid styling without changing native constraint validation. */
19563
21891
  valid?: boolean;
21892
+ /** Marks the native input invalid with `aria-invalid` and applies invalid styling. */
19564
21893
  invalid?: boolean;
21894
+ /**
21895
+ * Native autocomplete hint for the input. This component disables browser autocomplete by default.
21896
+ * @default 'off'
21897
+ */
21898
+ autoComplete?: string;
21899
+ /**
21900
+ * Native input type.
21901
+ * @default 'text'
21902
+ */
19565
21903
  type?: 'text' | 'number' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'date' | 'time' | 'datetime-local' | 'month' | 'week';
19566
21904
  };
19567
21905
 
@@ -19579,10 +21917,16 @@ declare type TextInputVariantProps = {
19579
21917
  [key in keyof TextInputVariant]?: ConditionalValue<TextInputVariant[key]> | undefined
19580
21918
  }
19581
21919
 
19582
- declare type TextProps = Omit<BoxProps, keyof TextVariantProps> & TextVariantProps & {
21920
+ /** Props accepted by {@link Text}. */
21921
+ export declare type TextProps = Omit<BoxProps, keyof TextVariantProps> & TextVariantProps & {
21922
+ /** Text or inline content to render. */
19583
21923
  children: string | ReactNode;
21924
+ /** Semantic element or component used for the text. */
21925
+ /** @default "span" */
19584
21926
  as?: ElementType;
21927
+ /** Explicit ARIA role when the rendered element does not provide it. */
19585
21928
  role?: string;
21929
+ /** Adds the text to sequential keyboard focus when a composite widget requires it. */
19586
21930
  tabIndex?: number;
19587
21931
  };
19588
21932
 
@@ -19601,122 +21945,382 @@ declare type TextVariantProps = {
19601
21945
  [key in keyof TextVariant]?: ConditionalValue<TextVariant[key]> | undefined
19602
21946
  }
19603
21947
 
21948
+ /** Supported document color modes. */
19604
21949
  declare type Theme = 'light' | 'dark';
19605
21950
 
21951
+ /** Value returned by {@link useTheme} and provided by {@link ThemeProvider}. */
19606
21952
  declare interface ThemeContextType {
21953
+ /** Currently active color mode. */
19607
21954
  theme: Theme;
21955
+ /**
21956
+ * Sets the active color mode and persists it as the user's browser
21957
+ * preference.
21958
+ */
19608
21959
  setTheme: (theme: Theme) => void;
19609
21960
  }
19610
21961
 
21962
+ /**
21963
+ * Provides the active color mode and persists explicit user choices in browser
21964
+ * storage.
21965
+ *
21966
+ * Without a saved preference, the initial mode follows
21967
+ * `prefers-color-scheme`; subsequent system changes are followed only until a
21968
+ * preference is saved through {@link useTheme}. This provider updates the
21969
+ * document's `data-color-mode` attribute and requires a browser environment.
21970
+ *
21971
+ * @example
21972
+ * ```tsx
21973
+ * <ThemeProvider>
21974
+ * <App />
21975
+ * </ThemeProvider>
21976
+ * ```
21977
+ */
19611
21978
  export declare function ThemeProvider({ children }: {
19612
21979
  children: ReactNode;
19613
21980
  }): JSX.Element;
19614
21981
 
21982
+ /**
21983
+ * Renders an icon-only control that toggles the nearest theme provider between
21984
+ * light and dark themes.
21985
+ *
21986
+ * It obtains state from `useTheme`, so it must be rendered below the design
21987
+ * system's theme provider. The accessible label always describes the theme that
21988
+ * will be selected next.
21989
+ *
21990
+ * @example
21991
+ * ```tsx
21992
+ * <ThemeSwitcher />
21993
+ * ```
21994
+ */
19615
21995
  export declare const ThemeSwitcher: () => JSX.Element;
19616
21996
 
19617
- export declare const TimePicker: (props: TimePickerProps) => JSX.Element;
21997
+ /** Display cycle used for time input while values remain normalized to 24-hour time. */
21998
+ export declare type TimeFormat = '12' | '24';
19618
21999
 
19619
- declare type TimePickerProps = Omit<BoxProps, keyof TimePickerVariantProps | 'children'> & TimePickerVariantProps & {
19620
- /** Controlled value — hour is always 24h (0–23) internally */
22000
+ /**
22001
+ * Renders a segmented time field with optional leading and trailing content.
22002
+ *
22003
+ * Display can use 12- or 24-hour time while values remain normalized to
22004
+ * 24-hour hours. Use `TimePicker` when a time-selection menu is also needed.
22005
+ *
22006
+ * @example
22007
+ * ```tsx
22008
+ * <TimeInput label="Start time" defaultValue={{ hour: 9, minute: 30 }} />
22009
+ * ```
22010
+ */
22011
+ export declare const TimeInput: (props: TimeInputProps) => JSX.Element;
22012
+
22013
+ /** Props for {@link TimeInput}, including segmented time state and field slots. */
22014
+ export declare type TimeInputProps = Omit<BoxProps, keyof SegmentedFieldsVariantProps | 'children'> & Omit<SegmentedFieldsVariantProps, 'field' | 'range' | 'before' | 'after'> & {
22015
+ /** Identifier forwarded to the segmented time group. */
22016
+ id?: string;
22017
+ /** Controlled 24-hour time value. Pair with `onChange`. */
19621
22018
  value?: TimeValue | null;
19622
- /** Initial uncontrolled value — hour is always 24h (0–23) internally */
22019
+ /** Initial time when `value` is not provided. */
19623
22020
  defaultValue?: TimeValue | null;
19624
- /** Called when the time changes */
22021
+ /** Runs when the time segments form a complete value. */
19625
22022
  onChange?: (value: TimeValue | null) => void;
19626
- /** 12-hour or 24-hour display */
19627
- hourCycle?: HourCycle;
19628
- /** Minute snap interval (default 1 = any minute) */
22023
+ /** Display cycle; emitted values always use 24-hour hours. */
22024
+ timeFormat?: TimeFormat;
22025
+ /** Minute increment used by keyboard stepping. */
19629
22026
  minuteStep?: number;
19630
- /** Accessible label for the input group */
22027
+ /** Accessible name for the segmented time group. */
19631
22028
  label?: string;
19632
- disabled?: boolean;
22029
+ /** Content before the time field. Takes precedence over `iconBefore`. */
22030
+ before?: ReactNode;
22031
+ /** Content after the time field. Takes precedence over `iconAfter`. */
22032
+ after?: ReactNode;
22033
+ /** Legacy icon rendered before the field when `before` is absent. */
22034
+ iconBefore?: IconNamesList;
22035
+ /** Legacy icon rendered after the field when `after` is absent. */
22036
+ iconAfter?: IconNamesList;
22037
+ /** Applies error styling. Overrides field context when provided. */
19633
22038
  error?: boolean;
22039
+ /** Prevents editing. Overrides field context when provided. */
22040
+ disabled?: boolean;
22041
+ /** Applies invalid styling. Overrides field context when provided. */
19634
22042
  invalid?: boolean;
19635
- id?: string;
19636
- name?: string;
19637
- /** Controlled popover open state */
22043
+ /** Reflected through to the segmented field — lets a wrapping Menu/Picker show "active anchor" styling */
19638
22044
  open?: boolean;
19639
- /** Initial uncontrolled popover state */
19640
- defaultOpen?: boolean;
19641
- onOpenChange?: (open: boolean) => void;
19642
- size?: TimePickerVariantProps['size'];
22045
+ /** Forwarded to the segmented field — see SegmentedTime's onFocusWithin */
22046
+ onFocusWithin?: () => void;
22047
+ /** Forwarded to the segmented field — see SegmentedTime's onBlurWithin */
22048
+ onBlurWithin?: (relatedTarget: Node | null) => void;
19643
22049
  };
19644
22050
 
19645
- declare interface TimePickerVariant {
22051
+ /**
22052
+ * Presents hour, minute, and optional meridiem selection columns in a Menu.
22053
+ *
22054
+ * Each selection commits immediately while the menu remains open. Supply a
22055
+ * `trigger`, or set inherited `inline` to render the columns in normal flow.
22056
+ *
22057
+ * @example
22058
+ * ```tsx
22059
+ * <TimeMenu trigger={<Button>Choose time</Button>} onChange={setTime} />
22060
+ * ```
22061
+ */
22062
+ export declare const TimeMenu: (props: TimeMenuProps) => any;
22063
+
22064
+ /** Props for {@link TimeMenu}, including selected time and display cycle. */
22065
+ export declare type TimeMenuProps = Omit<MenuProps, 'children' | 'onChange' | 'value'> & {
22066
+ /** Selected 24-hour time reflected in the menu columns. */
22067
+ value?: TimeValue | null;
22068
+ /** Runs immediately when an hour, minute, or meridiem choice is selected. */
22069
+ onChange?: (value: TimeValue | null) => void;
19646
22070
  /**
19647
- * @default "md"
22071
+ * Display cycle; emitted values always use 24-hour hours.
22072
+ *
22073
+ * @default '12'
19648
22074
  */
19649
- size: "sm" | "md" | "lg" | "xl"
19650
- }
22075
+ timeFormat?: TimeFormat;
22076
+ /**
22077
+ * Interval used to generate minute choices.
22078
+ *
22079
+ * @default 1
22080
+ */
22081
+ minuteStep?: number;
22082
+ /** Prevents opening or selection and returns only the trigger. */
22083
+ disabled?: boolean;
22084
+ };
19651
22085
 
19652
- declare type TimePickerVariantProps = {
19653
- [key in keyof TimePickerVariant]?: ConditionalValue<TimePickerVariant[key]> | undefined
19654
- }
22086
+ /**
22087
+ * Combines keyboard time entry with hour and minute selection columns.
22088
+ *
22089
+ * Focusing the segmented input opens the menu. Input and menu interactions
22090
+ * update the same value, normalized to 24-hour hours.
22091
+ *
22092
+ * @example
22093
+ * ```tsx
22094
+ * <TimePicker label="Start time" value={time} onChange={setTime} />
22095
+ * ```
22096
+ */
22097
+ export declare const TimePicker: (props: TimePickerProps) => JSX.Element;
19655
22098
 
19656
- export declare const TimeRangePicker: ({ startValue, endValue, onStartChange, onEndChange, hourCycle, minuteStep, disabled, error, size, label, }: TimeRangePickerProps) => JSX.Element;
19657
-
19658
- declare type TimeRangePickerProps = {
19659
- /** Start time value (hour in 24h format, 0–23) */
19660
- startValue?: TimeValue | null;
19661
- /** End time value (hour in 24h format, 0–23) */
19662
- endValue?: TimeValue | null;
19663
- /** Called when start time changes */
19664
- onStartChange?: (value: TimeValue | null) => void;
19665
- /** Called when end time changes */
19666
- onEndChange?: (value: TimeValue | null) => void;
19667
- hourCycle?: HourCycle;
22099
+ /** Props for {@link TimePicker}, combining segmented entry and a time menu. */
22100
+ export declare type TimePickerProps = Pick<TimeInputProps, 'id' | 'label' | 'before' | 'after' | 'iconBefore' | 'iconAfter' | 'error' | 'disabled' | 'invalid' | 'timeFormat' | 'size'> & {
22101
+ /** Controlled 24-hour time value. Pair with `onChange`. */
22102
+ value?: TimeValue | null;
22103
+ /** Initial time when `value` is not provided. */
22104
+ defaultValue?: TimeValue | null;
22105
+ /** Runs when typing or menu selection commits a time. */
22106
+ onChange?: (value: TimeValue | null) => void;
22107
+ /** Minute interval used by segmented stepping and menu choices. */
19668
22108
  minuteStep?: number;
19669
- disabled?: boolean;
22109
+ /** Floating UI placement of the time menu. */
22110
+ placement?: Placement;
22111
+ /** Controlled menu visibility. Pair with `onOpenChange`. */
22112
+ open?: boolean;
22113
+ /**
22114
+ * Initial menu visibility when `open` is not provided.
22115
+ *
22116
+ * @default false
22117
+ */
22118
+ defaultOpen?: boolean;
22119
+ /** Runs when interaction requests that the menu open or close. */
22120
+ onOpenChange?: (open: boolean) => void;
22121
+ };
22122
+
22123
+ /**
22124
+ * Renders start and end times as two coordinated segmented fields.
22125
+ *
22126
+ * Values remain normalized to 24-hour time regardless of display cycle. Use
22127
+ * `TimeRangePicker` when a menu and Apply/Cancel flow are also needed.
22128
+ *
22129
+ * @example
22130
+ * ```tsx
22131
+ * <TimeRangeInput startLabel="Opens" endLabel="Closes" />
22132
+ * ```
22133
+ */
22134
+ export declare const TimeRangeInput: (props: TimeRangeInputProps) => JSX.Element;
22135
+
22136
+ /** Props for {@link TimeRangeInput}, including range state and field slots. */
22137
+ export declare type TimeRangeInputProps = Omit<BoxProps, keyof SegmentedFieldsVariantProps | 'children'> & Omit<SegmentedFieldsVariantProps, 'field' | 'range' | 'before' | 'after'> & {
22138
+ /** Identifier applied to the range container. */
22139
+ id?: string;
22140
+ /** Controlled start and end times. Pair with `onChange`. */
22141
+ value?: TimeRangeValue | null;
22142
+ /** Initial time range when `value` is not provided. */
22143
+ defaultValue?: TimeRangeValue | null;
22144
+ /** Runs whenever either endpoint becomes complete or is cleared. */
22145
+ onChange?: (value: TimeRangeValue | null) => void;
22146
+ /** Display cycle shared by both endpoints. */
22147
+ timeFormat?: TimeFormat;
22148
+ /** Minute increment used by keyboard stepping. */
22149
+ minuteStep?: number;
22150
+ /** Accessible name for the start-time segments. */
22151
+ startLabel?: string;
22152
+ /** Accessible name for the end-time segments. */
22153
+ endLabel?: string;
22154
+ /** Content before the range. Takes precedence over `iconBefore`. */
22155
+ before?: ReactNode;
22156
+ /** Content after the range. Takes precedence over `iconAfter`. */
22157
+ after?: ReactNode;
22158
+ /** Legacy icon rendered before the range when `before` is absent. */
22159
+ iconBefore?: IconNamesList;
22160
+ /** Legacy icon rendered after the range when `after` is absent. */
22161
+ iconAfter?: IconNamesList;
22162
+ /** Applies error styling. Overrides field context when provided. */
19670
22163
  error?: boolean;
19671
- /** Size passed to both TimePickers */
19672
- size?: TimePickerVariantProps['size'];
19673
- /** Accessible label prefix — used to build "Start time" and "End time" labels */
19674
- label?: string;
22164
+ /** Prevents editing both endpoints. Overrides field context when provided. */
22165
+ disabled?: boolean;
22166
+ /** Applies invalid styling. Overrides field context when provided. */
22167
+ invalid?: boolean;
22168
+ /** Reflected through to the segmented fields — lets a wrapping Menu/Picker show "active anchor" styling */
22169
+ open?: boolean;
22170
+ /** Forwarded to both segmented fields — see SegmentedTime's onFocusWithin */
22171
+ onFocusWithin?: () => void;
22172
+ /** Forwarded to both segmented fields — see SegmentedTime's onBlurWithin */
22173
+ onBlurWithin?: (relatedTarget: Node | null) => void;
22174
+ };
22175
+
22176
+ /**
22177
+ * Selects a start and end time from parallel selection columns.
22178
+ *
22179
+ * Changes remain a draft until Apply is pressed. Cancel restores the
22180
+ * committed `value`; Apply is unavailable until both endpoints are complete.
22181
+ *
22182
+ * @example
22183
+ * ```tsx
22184
+ * <TimeRangeMenu
22185
+ * trigger={<Button>Choose hours</Button>}
22186
+ * value={range}
22187
+ * onChange={setRange}
22188
+ * />
22189
+ * ```
22190
+ */
22191
+ export declare const TimeRangeMenu: (props: TimeRangeMenuProps) => any;
22192
+
22193
+ /** Props for {@link TimeRangeMenu}, including committed range and display. */
22194
+ export declare type TimeRangeMenuProps = Omit<MenuProps, 'children' | 'onChange' | 'value'> & {
22195
+ /** Committed start and end times used to initialize the menu draft. */
22196
+ value?: TimeRangeValue | null;
22197
+ /** Commits the complete draft when Apply is pressed; Cancel discards it. */
22198
+ onChange?: (value: TimeRangeValue | null) => void;
22199
+ /** Display cycle shared by both endpoints. */
22200
+ timeFormat?: TimeFormat;
22201
+ /** Interval used to generate minute choices. */
22202
+ minuteStep?: number;
22203
+ /** Prevents opening or selection and returns only the trigger. */
22204
+ disabled?: boolean;
22205
+ /** Accessible prefix for the start-time columns. */
22206
+ startLabel?: string;
22207
+ /** Accessible prefix for the end-time columns. */
22208
+ endLabel?: string;
22209
+ };
22210
+
22211
+ /**
22212
+ * Combines segmented range entry with start and end time-selection columns.
22213
+ *
22214
+ * Typed endpoints commit immediately. Menu choices remain a draft until Apply
22215
+ * is pressed; Cancel restores the currently committed range.
22216
+ *
22217
+ * @example
22218
+ * ```tsx
22219
+ * <TimeRangePicker startLabel="Opens" endLabel="Closes" />
22220
+ * ```
22221
+ */
22222
+ export declare const TimeRangePicker: (props: TimeRangePickerProps) => JSX.Element;
22223
+
22224
+ /** Props for {@link TimeRangePicker}, combining range input and time menu. */
22225
+ export declare type TimeRangePickerProps = Pick<TimeRangeInputProps, 'id' | 'startLabel' | 'endLabel' | 'before' | 'after' | 'iconBefore' | 'iconAfter' | 'error' | 'disabled' | 'invalid' | 'timeFormat' | 'size'> & {
22226
+ /** Controlled start and end times. Pair with `onChange`. */
22227
+ value?: TimeRangeValue | null;
22228
+ /** Initial time range when `value` is not provided. */
22229
+ defaultValue?: TimeRangeValue | null;
22230
+ /** Runs for typed endpoint changes and applied menu drafts. */
22231
+ onChange?: (value: TimeRangeValue | null) => void;
22232
+ /** Minute interval used by segmented stepping and menu choices. */
22233
+ minuteStep?: number;
22234
+ /** Floating UI placement of the time menu. */
22235
+ placement?: Placement;
22236
+ /** Controlled menu visibility. Pair with `onOpenChange`. */
22237
+ open?: boolean;
22238
+ /**
22239
+ * Initial menu visibility when `open` is not provided.
22240
+ *
22241
+ * @default false
22242
+ */
22243
+ defaultOpen?: boolean;
22244
+ /** Runs when interaction requests that the menu open or close. */
22245
+ onOpenChange?: (open: boolean) => void;
19675
22246
  };
19676
22247
 
19677
- declare interface TimeValue {
22248
+ /** A committed time range — either endpoint may be null while only partially filled in. */
22249
+ export declare interface TimeRangeValue {
22250
+ start: TimeValue | null;
22251
+ end: TimeValue | null;
22252
+ }
22253
+
22254
+ /** A time of day. Hour is always 24-hour (0-23) internally, regardless of display cycle. */
22255
+ export declare interface TimeValue {
19678
22256
  hour: number;
19679
22257
  minute: number;
19680
22258
  }
19681
22259
 
19682
22260
  /**
19683
- * Toggle supports both controlled and uncontrolled usage.
22261
+ * A native checkbox styled as an on/off toggle, without a visible label.
22262
+ *
22263
+ * Use {@link ToggleInput} when a visible label is needed. `Toggle` renders an
22264
+ * `<input type="checkbox">`, not an ARIA `switch`; use `checked` with
22265
+ * `onChange` for controlled state or `defaultChecked` for uncontrolled state.
22266
+ * Provide `id` and an associated label so the control has an accessible name.
19684
22267
  *
19685
22268
  * @example
19686
- * <Toggle defaultChecked />
22269
+ * ```tsx
22270
+ * <Toggle name="marketing" defaultChecked />
22271
+ * ```
19687
22272
  *
19688
22273
  * @example
22274
+ * ```tsx
19689
22275
  * const [checked, setChecked] = useState(false);
19690
- * <Toggle checked={checked} onChange={(e) => setChecked(e.target.checked)} />
22276
+ * <Toggle name="marketing" checked={checked} onChange={(event) => setChecked(event.target.checked)} />
22277
+ * ```
19691
22278
  */
19692
22279
  export declare const Toggle: (props: ToggleProps) => JSX.Element;
19693
22280
 
19694
22281
  /**
19695
- * Helper type for toggle change events
22282
+ * Native change event emitted by {@link Toggle}.
19696
22283
  * @example
19697
22284
  * const handleChange: ToggleChangeHandler = (e) => setChecked(e.target.checked);
19698
22285
  */
19699
- declare type ToggleChangeEvent = ChangeEvent<HTMLInputElement>;
22286
+ export declare type ToggleChangeEvent = ChangeEvent<HTMLInputElement>;
19700
22287
 
19701
22288
  /**
19702
- * Helper type for toggle change handler functions
22289
+ * Handler for a {@link Toggle} native change event.
19703
22290
  * @example
19704
22291
  * const handleChange: ToggleChangeHandler = (e) => setChecked(e.target.checked);
19705
22292
  */
19706
- declare type ToggleChangeHandler = (e: ToggleChangeEvent) => void;
22293
+ export declare type ToggleChangeHandler = (e: ToggleChangeEvent) => void;
19707
22294
 
22295
+ /**
22296
+ * A toggle paired with a clickable label.
22297
+ *
22298
+ * Use it for binary settings with a visible text label. It generates an ID when
22299
+ * needed and associates that ID with the label. Its state and field-context
22300
+ * precedence match {@link Toggle}.
22301
+ *
22302
+ * @example
22303
+ * ```tsx
22304
+ * <ToggleInput name="emailUpdates" defaultChecked>
22305
+ * Email updates
22306
+ * </ToggleInput>
22307
+ * ```
22308
+ */
19708
22309
  export declare const ToggleInput: (props: ToggleInputProps) => JSX.Element;
19709
22310
 
19710
- declare type ToggleInputProps = Omit<BoxProps, keyof ToggleInputVariantProps> & ToggleInputVariantProps & {
19711
- name: string;
19712
- checked?: boolean;
22311
+ /** Props for {@link ToggleInput}, a labelled {@link Toggle}. */
22312
+ export declare type ToggleInputProps = Omit<BoxProps, keyof ToggleInputVariantProps> & ToggleInputVariantProps & {
22313
+ /** Form field name submitted when the toggle is on. */ name: string;
22314
+ /** Controlled on/off state. Pair with `onChange`; do not combine with `defaultChecked`. */ checked?: boolean;
22315
+ /** Initial uncontrolled on/off state; later updates are ignored. */
22316
+ /** @default false */
19713
22317
  defaultChecked?: boolean;
19714
- onChange?: ToggleChangeHandler;
19715
- id?: string;
19716
- error?: boolean;
19717
- invalid?: boolean;
19718
- disabled?: boolean;
19719
- children?: string | ReactNode;
22318
+ /** Runs when the contained native checkbox changes. */ onChange?: ToggleChangeHandler;
22319
+ /** Input ID. A stable ID is generated when omitted and associated with the label. */ id?: string;
22320
+ /** Applies error styling, overriding field context. */ error?: boolean;
22321
+ /** Marks the toggle invalid, overriding field context. */ invalid?: boolean;
22322
+ /** Disables the label and toggle, overriding field context. */ disabled?: boolean;
22323
+ /** Visible label content. */ children?: string | ReactNode;
19720
22324
  };
19721
22325
 
19722
22326
  declare interface ToggleInputVariant {
@@ -19727,15 +22331,18 @@ declare type ToggleInputVariantProps = {
19727
22331
  [key in keyof ToggleInputVariant]?: ConditionalValue<ToggleInputVariant[key]> | undefined
19728
22332
  }
19729
22333
 
19730
- declare type ToggleProps = Omit<BoxProps, 'checked' | 'defaultChecked' | 'onChange' | keyof ToggleVariantProps> & ToggleVariantProps & {
19731
- name: string;
19732
- checked?: boolean;
22334
+ /** Props for {@link Toggle}, the unlabelled native checkbox styled as a switch. */
22335
+ export declare type ToggleProps = Omit<BoxProps, 'checked' | 'defaultChecked' | 'onChange' | keyof ToggleVariantProps> & ToggleVariantProps & {
22336
+ /** Form field name submitted when the toggle is on. */ name: string;
22337
+ /** Controlled on/off state. Pair with `onChange`; do not combine with `defaultChecked`. */ checked?: boolean;
22338
+ /** Initial uncontrolled on/off state; later updates are ignored. */
22339
+ /** @default false */
19733
22340
  defaultChecked?: boolean;
19734
- onChange?: ToggleChangeHandler;
19735
- id?: string;
19736
- error?: boolean;
19737
- invalid?: boolean;
19738
- disabled?: boolean;
22341
+ /** Runs for the native checkbox change event; read the next state from `event.target.checked`. */ onChange?: ToggleChangeHandler;
22342
+ /** Native input ID used by an external label. */ id?: string;
22343
+ /** Applies error styling, overriding field context. */ error?: boolean;
22344
+ /** Marks the native checkbox invalid with `aria-invalid`, overriding field context. */ invalid?: boolean;
22345
+ /** Disables interaction, overriding field context. */ disabled?: boolean;
19739
22346
  };
19740
22347
 
19741
22348
  declare interface ToggleVariant {
@@ -19773,26 +22380,52 @@ declare type Tokens = {
19773
22380
  breakpoints: BreakpointToken
19774
22381
  } & { [token: string]: never }
19775
22382
 
22383
+ /**
22384
+ * Shows nonessential contextual text for a trigger on hover and keyboard focus.
22385
+ *
22386
+ * The trigger is wrapped in a span and linked with `aria-describedby`; Escape
22387
+ * dismisses the portalled tooltip. Do not use a tooltip as the only accessible
22388
+ * name or instruction for an interactive control.
22389
+ *
22390
+ * @example
22391
+ * ```tsx
22392
+ * <Tooltip text="Copies the link"><IconButton iconName="copy" altText="Copy link" /></Tooltip>
22393
+ * ```
22394
+ */
19776
22395
  export declare const Tooltip: (props: TooltipProps) => JSX.Element;
19777
22396
 
19778
- declare type TooltipProps = Omit<BoxProps, keyof TooltipVariantProps | 'children'> & TooltipVariantProps & {
19779
- /** Tooltip body text (required) */
22397
+ /** Props for {@link Tooltip}, nonessential contextual text shown on hover or focus. */
22398
+ export declare type TooltipProps = Omit<BoxProps, keyof TooltipVariantProps | 'children'> & TooltipVariantProps & {
22399
+ /** Text displayed in the tooltip body. Use an accessible label instead when this is essential control information. */
19780
22400
  text: string;
19781
- /** Optional bold title rendered above the text */
22401
+ /** Optional title displayed above the tooltip body. */
19782
22402
  title?: string;
19783
- /** Show/hide the arrow caret. Default: true */
22403
+ /**
22404
+ * Shows the arrow pointing at the trigger.
22405
+ * @default true
22406
+ */
19784
22407
  caret?: boolean;
19785
- /** Floating UI placement. Automatically flips if it doesn't fit. Default: 'bottom' */
22408
+ /**
22409
+ * Preferred placement relative to the trigger. The overlay can flip when it does not fit.
22410
+ * @default 'bottom'
22411
+ */
19786
22412
  placement?: Placement;
19787
- /** Distance in px between trigger and tooltip. Default: 8 */
22413
+ /**
22414
+ * Gap between trigger and tooltip, in pixels.
22415
+ * @default 8
22416
+ */
19788
22417
  offset?: number;
19789
- /** Hover open/close delay in ms, or { open, close } for separate delays */
22418
+ /** Hover open/close delay in milliseconds, or separate `open` and `close` delays. */
19790
22419
  delay?: number | {
19791
22420
  open: number;
19792
22421
  close: number;
19793
22422
  };
19794
- /** Trigger element. Wrapped in a <span> to attach the floating ref. */
22423
+ /** Trigger content, wrapped in an inline-flex span to receive floating interaction props. */
19795
22424
  children?: ReactNode;
22425
+ /**
22426
+ * Tooltip recipe size.
22427
+ * @default 'md'
22428
+ */
19796
22429
  size?: TooltipVariantProps['size'];
19797
22430
  };
19798
22431
 
@@ -19818,24 +22451,94 @@ declare interface UnstyledProps {
19818
22451
  unstyled?: boolean | undefined
19819
22452
  }
19820
22453
 
22454
+ /** Returns the nearest `ChipGroup` context, or `null` when a chip is not grouped. */
19821
22455
  export declare const useChipGroup: () => ChipGroupContextValue | null;
19822
22456
 
22457
+ /**
22458
+ * Reports whether a referenced element meets a Cetec container-size threshold.
22459
+ *
22460
+ * The ref must point to a mounted `HTMLElement`. Returns `false` during server
22461
+ * rendering or until the element is available. It uses a container-query API
22462
+ * when the element supplies one, otherwise observes size changes with
22463
+ * `ResizeObserver`; sizes are compared in `rem` using the root font size.
22464
+ *
22465
+ * @param containerRef - Ref for the element whose width is measured.
22466
+ * @param size - Cetec container-size token such as `lg`.
22467
+ * @param direction - Whether the width must meet or remain below the threshold.
22468
+ * @default direction 'min'
22469
+ * @example
22470
+ * ```tsx
22471
+ * const panelRef = useRef<HTMLDivElement>(null);
22472
+ * const isWide = useContainerQuery(panelRef, 'lg');
22473
+ * ```
22474
+ */
19823
22475
  export declare function useContainerQuery(containerRef: RefObject<HTMLElement>, size: ContainerSizeKey, direction?: QueryDirection_2): boolean;
19824
22476
 
22477
+ /**
22478
+ * Returns the sprite path supplied by the nearest {@link IconProvider}.
22479
+ * Falls back to `/sprite.svg` when no provider is present.
22480
+ */
19825
22481
  export declare const useIconConfig: () => IconConfigContextValue;
19826
22482
 
22483
+ /**
22484
+ * Returns configuration from the nearest {@link ListProvider}, or compact,
22485
+ * empty-query, no-highlighting defaults when no provider is present.
22486
+ */
19827
22487
  export declare const useListContext: () => ListContextValue;
19828
22488
 
22489
+ /**
22490
+ * Reports whether the viewport matches a Cetec breakpoint media query.
22491
+ *
22492
+ * Returns `false` during server rendering. The hook subscribes to browser
22493
+ * media-query changes after mounting. Use `min` for the breakpoint and wider,
22494
+ * or `max` for the generated maximum-width query.
22495
+ *
22496
+ * @param breakpoint - Cetec breakpoint token such as `md`.
22497
+ * @param direction - Whether to create a minimum- or maximum-width query.
22498
+ * @default direction 'min'
22499
+ * @example
22500
+ * ```tsx
22501
+ * const isDesktop = useMediaQuery('lg');
22502
+ * ```
22503
+ */
19829
22504
  export declare function useMediaQuery(breakpoint: BreakpointKey, direction?: QueryDirection): boolean;
19830
22505
 
22506
+ /** Returns the active menu filtering configuration, or the default configuration outside a `Menu`. */
19831
22507
  export declare const useMenuFilterContext: () => MenuFilterContextValue;
19832
22508
 
22509
+ /** Returns roving-focus state for the current menu level, or `null` when none is provided. */
19833
22510
  export declare const useMenuListContext: () => MenuListContextValue | null;
19834
22511
 
22512
+ /**
22513
+ * Returns the enclosing menu's shared behavior.
22514
+ *
22515
+ * Must be called below `Menu` or `MenuProvider`; otherwise it throws.
22516
+ */
19835
22517
  export declare const useMenuRootContext: () => MenuRootContextValue;
19836
22518
 
22519
+ /**
22520
+ * Returns state and close behavior from the closest parent {@link Modal}.
22521
+ *
22522
+ * Call only in a modal descendant; it throws when no modal context is present.
22523
+ *
22524
+ * @example
22525
+ * ```tsx
22526
+ * const { onClose } = useModalContext();
22527
+ * ```
22528
+ */
19837
22529
  export declare const useModalContext: () => ModalContextValue;
19838
22530
 
22531
+ /**
22532
+ * Returns the active color mode and a function to persist a new preference.
22533
+ *
22534
+ * Must be called beneath {@link ThemeProvider}; throws when no provider is
22535
+ * available.
22536
+ *
22537
+ * @example
22538
+ * ```tsx
22539
+ * const { theme, setTheme } = useTheme();
22540
+ * ```
22541
+ */
19839
22542
  export declare function useTheme(): ThemeContextType;
19840
22543
 
19841
22544
  declare type UtilitySizeToken = "full" | "half" | "min" | "max" | "fit" | "prose" | "auto"
@@ -21973,6 +24676,31 @@ declare interface VendorShorthandProperties<TLength = (string & {}) | 0, TTime =
21973
24676
 
21974
24677
  declare type VendorShorthandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorShorthandProperties<TLength, TTime>>;
21975
24678
 
24679
+ declare type ViewDate = {
24680
+ year: number;
24681
+ month: number;
24682
+ };
24683
+
24684
+ declare type ViewDate_2 = {
24685
+ year: number;
24686
+ month: number;
24687
+ };
24688
+
24689
+ declare type ViewDate_3 = {
24690
+ year: number;
24691
+ month: number;
24692
+ };
24693
+
24694
+ declare type ViewDate_4 = {
24695
+ year: number;
24696
+ month: number;
24697
+ };
24698
+
24699
+ declare type ViewDate_5 = {
24700
+ year: number;
24701
+ month: number;
24702
+ };
24703
+
21976
24704
  declare type WhitespaceImportant = ` ${ImportantMark}`
21977
24705
 
21978
24706
  declare type WithColorOpacityModifier<T> = [T] extends [string] ? `${T}/${string}` & { __colorOpacityModifier?: true } : never