@viraui/react 2026.7.0-next.0 → 2026.7.0-next.1

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 (121) hide show
  1. package/dist/catalog.json +13 -1
  2. package/dist/components/accordion/accordion-item.d.ts +10 -10
  3. package/dist/components/accordion/accordion.d.ts +2 -2
  4. package/dist/components/annotate/annotate.d.ts +15 -15
  5. package/dist/components/autocomplete/autocomplete-item.d.ts +3 -3
  6. package/dist/components/autocomplete/autocomplete.d.ts +12 -12
  7. package/dist/components/avatar/avatar.d.ts +6 -6
  8. package/dist/components/avatar-group/avatar-group.d.ts +6 -6
  9. package/dist/components/badge/badge.d.ts +5 -5
  10. package/dist/components/basic-input/basic-input.d.ts +1 -1
  11. package/dist/components/basic-input/input-control-group.d.ts +2 -2
  12. package/dist/components/beam/beam.d.ts +12 -12
  13. package/dist/components/bleed/bleed.d.ts +3 -3
  14. package/dist/components/button/button-link.d.ts +1 -1
  15. package/dist/components/button/button.d.ts +1 -1
  16. package/dist/components/checkbox/checkbox-group.d.ts +1 -1
  17. package/dist/components/checkbox/checkbox.d.ts +7 -7
  18. package/dist/components/chip/chip.d.ts +6 -6
  19. package/dist/components/clamp-text/clamp-text.d.ts +5 -5
  20. package/dist/components/dialog/dialog-close.d.ts +1 -1
  21. package/dist/components/dialog/dialog-indent-background.d.ts +1 -1
  22. package/dist/components/dialog/dialog-indent.d.ts +1 -1
  23. package/dist/components/dialog/dialog-sheet.d.ts +10 -10
  24. package/dist/components/dialog/dialog-trigger.d.ts +1 -1
  25. package/dist/components/dialog/dialog.d.ts +1 -1
  26. package/dist/components/disclosure/disclosure-panel.d.ts +12 -0
  27. package/dist/components/disclosure/disclosure-panel.js +13 -0
  28. package/dist/components/disclosure/disclosure-trigger.d.ts +46 -0
  29. package/dist/components/disclosure/disclosure-trigger.js +82 -0
  30. package/dist/components/disclosure/disclosure.css +1 -0
  31. package/dist/components/disclosure/disclosure.d.ts +25 -0
  32. package/dist/components/disclosure/disclosure.js +30 -0
  33. package/dist/components/disclosure/disclosure.module.js +15 -0
  34. package/dist/components/disclosure/index.d.ts +4 -0
  35. package/dist/components/elevator/elevator.d.ts +7 -7
  36. package/dist/components/fieldset/fieldset.d.ts +4 -4
  37. package/dist/components/fit-text/fit-text.d.ts +2 -2
  38. package/dist/components/glow/glow.d.ts +12 -12
  39. package/dist/components/grid/grid-item.d.ts +8 -8
  40. package/dist/components/grid/grid.d.ts +12 -12
  41. package/dist/components/icon-button/icon-button-link.d.ts +2 -2
  42. package/dist/components/icon-button/icon-button.d.ts +2 -2
  43. package/dist/components/index.d.ts +2 -0
  44. package/dist/components/linear-progress/linear-progress.d.ts +4 -4
  45. package/dist/components/masonry/masonry-item.d.ts +3 -3
  46. package/dist/components/masonry/masonry.d.ts +4 -4
  47. package/dist/components/menu/menu-checkbox-item.d.ts +4 -4
  48. package/dist/components/menu/menu-item.d.ts +4 -4
  49. package/dist/components/menu/menu-link-item.d.ts +4 -4
  50. package/dist/components/menu/menu-popup.d.ts +2 -2
  51. package/dist/components/menu/menu-radio-group.d.ts +2 -2
  52. package/dist/components/menu/menu-radio-item.d.ts +4 -4
  53. package/dist/components/menu/menu-separator.d.ts +1 -1
  54. package/dist/components/menu/menu-submenu-trigger.d.ts +3 -3
  55. package/dist/components/menu/menu.d.ts +3 -3
  56. package/dist/components/meter/meter.d.ts +5 -5
  57. package/dist/components/number-field/index.d.ts +2 -0
  58. package/dist/components/number-field/number-field.css +1 -0
  59. package/dist/components/number-field/number-field.d.ts +78 -0
  60. package/dist/components/number-field/number-field.js +120 -0
  61. package/dist/components/number-field/number-field.module.js +21 -0
  62. package/dist/components/otp-field/index.d.ts +1 -1
  63. package/dist/components/otp-field/otp-field-input.d.ts +1 -1
  64. package/dist/components/otp-field/otp-field-separator.d.ts +3 -1
  65. package/dist/components/otp-field/otp-field-separator.js +5 -1
  66. package/dist/components/otp-field/otp-field.d.ts +4 -5
  67. package/dist/components/otp-field/otp-field.js +0 -1
  68. package/dist/components/popover/popover-sheet.d.ts +6 -6
  69. package/dist/components/popover/popover.d.ts +5 -5
  70. package/dist/components/progressive-blur/progressive-blur.d.ts +5 -5
  71. package/dist/components/prose/prose.css +1 -1
  72. package/dist/components/prose/prose.d.ts +4 -4
  73. package/dist/components/radio/radio-group.d.ts +1 -1
  74. package/dist/components/radio/radio.d.ts +6 -6
  75. package/dist/components/select/select-indicator-slot.d.ts +1 -1
  76. package/dist/components/select/select-option.d.ts +4 -4
  77. package/dist/components/select/select-separator.d.ts +1 -1
  78. package/dist/components/select/select.d.ts +10 -10
  79. package/dist/components/separator/separator.d.ts +9 -9
  80. package/dist/components/shimmer/shimmer.d.ts +6 -6
  81. package/dist/components/skeleton/skeleton-overlay.d.ts +5 -5
  82. package/dist/components/skeleton/skeleton.d.ts +9 -9
  83. package/dist/components/slider/slider.d.ts +7 -7
  84. package/dist/components/spinner/spinner.d.ts +3 -3
  85. package/dist/components/stack/stack.d.ts +17 -17
  86. package/dist/components/static-noise/static-noise.d.ts +5 -5
  87. package/dist/components/surface/surface.d.ts +12 -12
  88. package/dist/components/switch/switch.d.ts +7 -7
  89. package/dist/components/tabs/tabs-list.d.ts +1 -1
  90. package/dist/components/tabs/tabs-panel.d.ts +1 -1
  91. package/dist/components/tabs/tabs-tab.d.ts +3 -3
  92. package/dist/components/tabs/tabs.d.ts +2 -2
  93. package/dist/components/text/text.d.ts +23 -23
  94. package/dist/components/textarea/textarea.d.ts +6 -6
  95. package/dist/components/textfield/textfield.d.ts +1 -1
  96. package/dist/components/title/title.d.ts +21 -21
  97. package/dist/components/toast/toast-action.d.ts +1 -1
  98. package/dist/components/toast/toast-banner.d.ts +7 -7
  99. package/dist/components/toast/toast-viewport.d.ts +2 -2
  100. package/dist/components/toggle-button/toggle-button.d.ts +6 -6
  101. package/dist/components/toggle-group/toggle-group.d.ts +1 -1
  102. package/dist/components/tooltip/tooltip-content.d.ts +2 -2
  103. package/dist/components/typewriter/typewriter.d.ts +10 -10
  104. package/dist/index.js +3 -1
  105. package/dist/specs/components/accordion/usage.xml +1 -0
  106. package/dist/specs/components/disclosure/a11y.xml +9 -0
  107. package/dist/specs/components/disclosure/meta.xml +20 -0
  108. package/dist/specs/components/disclosure/patterns.xml +55 -0
  109. package/dist/specs/components/disclosure/props.xml +54 -0
  110. package/dist/specs/components/disclosure/usage.xml +11 -0
  111. package/dist/specs/components/number-field/a11y.xml +10 -0
  112. package/dist/specs/components/number-field/meta.xml +21 -0
  113. package/dist/specs/components/number-field/patterns.xml +43 -0
  114. package/dist/specs/components/number-field/props.xml +35 -0
  115. package/dist/specs/components/number-field/usage.xml +12 -0
  116. package/dist/specs/components/otp-field/meta.xml +1 -4
  117. package/dist/specs/components/otp-field/patterns.xml +8 -8
  118. package/dist/specs/components/otp-field/props.xml +2 -2
  119. package/dist/specs/components/otp-field/usage.xml +4 -4
  120. package/dist/specs/index.xml +22 -2
  121. package/package.json +2 -2
@@ -7,43 +7,43 @@ import type * as React from 'react';
7
7
  * Self-contained option row for standalone fields or `CheckboxGroup` children.
8
8
  * Standalone usage requires an external `Field.Root` wrapper for validation and naming.
9
9
  *
10
- * @default Base UI pass-through props keep upstream defaults.
10
+ * @defaultValue Base UI pass-through props keep upstream defaults.
11
11
  */
12
12
  export type CheckboxProps = CheckboxRoot.Props & {
13
13
  /**
14
14
  * Visible label rendered with shared internal `FieldLabel`.
15
15
  *
16
- * @default No label is rendered.
16
+ * @defaultValue No label is rendered.
17
17
  */
18
18
  label?: React.ReactNode;
19
19
  /**
20
20
  * Helper copy rendered with `Field.Description` and `Text` for this option.
21
21
  *
22
- * @default No description is rendered.
22
+ * @defaultValue No description is rendered.
23
23
  */
24
24
  description?: React.ReactNode;
25
25
  /**
26
26
  * Error copy rendered in the same slot as `description` while invalid.
27
27
  *
28
- * @default No static error copy is rendered.
28
+ * @defaultValue No static error copy is rendered.
29
29
  */
30
30
  error?: React.ReactNode;
31
31
  /**
32
32
  * Controls the visual checkbox size.
33
33
  *
34
- * @default 's'
34
+ * @defaultValue 's'
35
35
  */
36
36
  size?: 'm' | 's';
37
37
  /**
38
38
  * Sets block padding using one token for both sides or a `[start, end]` tuple.
39
39
  *
40
- * @default No block padding.
40
+ * @defaultValue No block padding.
41
41
  */
42
42
  vPadding?: StackProps['vPadding'];
43
43
  /**
44
44
  * Sets inline padding using one token for both sides or a `[start, end]` tuple.
45
45
  *
46
- * @default No inline padding.
46
+ * @defaultValue No inline padding.
47
47
  */
48
48
  hPadding?: StackProps['hPadding'];
49
49
  };
@@ -8,37 +8,37 @@ import * as React from 'react';
8
8
  * Includes standard `div` attributes such as `children`, `id`, `title`, and event handlers,
9
9
  * plus Vira-owned visual variant, decorative addon, and Base UI `render` support for replacing the root element.
10
10
  *
11
- * @default Base UI pass-through props keep upstream defaults.
11
+ * @defaultValue Base UI pass-through props keep upstream defaults.
12
12
  */
13
13
  export type ChipProps = React.ComponentPropsWithRef<'div'> & {
14
14
  /**
15
15
  * Replaces the default `div` root using Base UI render semantics.
16
16
  *
17
- * @default The chip renders a `div` root.
17
+ * @defaultValue The chip renders a `div` root.
18
18
  */
19
19
  render?: useRender.RenderProp;
20
20
  /**
21
21
  * Ref forwarded to the rendered chip root element.
22
22
  *
23
- * @default No ref is attached.
23
+ * @defaultValue No ref is attached.
24
24
  */
25
25
  ref?: React.Ref<HTMLElement>;
26
26
  /**
27
27
  * Selects the visual treatment for the chip.
28
28
  *
29
- * @default 'primary'
29
+ * @defaultValue 'primary'
30
30
  */
31
31
  variant?: 'primary' | 'secondary' | 'outline' | ThemeTypes['highlight'];
32
32
  /**
33
33
  * Decorative addon rendered alongside the chip label.
34
34
  *
35
- * @default No default; omit when the chip has no addon.
35
+ * @defaultValue No default; omit when the chip has no addon.
36
36
  */
37
37
  addon?: ReactNode;
38
38
  /**
39
39
  * Controls whether the addon appears before or after the label.
40
40
  *
41
- * @default 'start'
41
+ * @defaultValue 'start'
42
42
  */
43
43
  addonPosition?: 'start' | 'end';
44
44
  };
@@ -6,31 +6,31 @@ import type * as React from 'react';
6
6
  * Includes standard inline text attributes such as `children`, `id`, `title`, and event handlers,
7
7
  * plus Vira-owned line-clamp controls and Base UI `render` support for replacing the root element.
8
8
  *
9
- * @default Native span pass-through props keep React defaults.
9
+ * @defaultValue Native span pass-through props keep React defaults.
10
10
  */
11
11
  export type ClampTextProps = React.ComponentPropsWithoutRef<'span'> & {
12
12
  /**
13
13
  * Replaces the default `span` root using Base UI render semantics.
14
14
  *
15
- * @default The clamp text renders a `span` root.
15
+ * @defaultValue The clamp text renders a `span` root.
16
16
  */
17
17
  render?: useRender.RenderProp;
18
18
  /**
19
19
  * Ref forwarded to the rendered clamp text root element.
20
20
  *
21
- * @default No ref is attached.
21
+ * @defaultValue No ref is attached.
22
22
  */
23
23
  ref?: React.Ref<HTMLElement>;
24
24
  /**
25
25
  * Sets how many lines of text remain visible before truncation.
26
26
  *
27
- * @default 1
27
+ * @defaultValue 1
28
28
  */
29
29
  rows?: number;
30
30
  /**
31
31
  * Uses inline `-webkit-inline-box` display instead of block `-webkit-box`.
32
32
  *
33
- * @default false
33
+ * @defaultValue false
34
34
  */
35
35
  inline?: boolean;
36
36
  };
@@ -9,7 +9,7 @@ import type * as React from 'react';
9
9
  *
10
10
  * Compose inside `Dialog.Sheet` so the control closes the open drawer.
11
11
  *
12
- * @default Base UI pass-through props keep upstream defaults.
12
+ * @defaultValue Base UI pass-through props keep upstream defaults.
13
13
  */
14
14
  export type DialogCloseProps = DrawerClose.Props;
15
15
  export declare const DialogClose: React.FC<DialogCloseProps>;
@@ -6,7 +6,7 @@ import type * as React from 'react';
6
6
  * Pass-through to Base UI `Drawer.IndentBackground` with Vira-owned root class applied.
7
7
  * Place before `Dialog.Indent` inside `Dialog.Provider` for the indent background layer.
8
8
  *
9
- * @default Base UI pass-through props keep upstream defaults.
9
+ * @defaultValue Base UI pass-through props keep upstream defaults.
10
10
  */
11
11
  export type DialogIndentBackgroundProps = DrawerIndentBackground.Props;
12
12
  export declare const DialogIndentBackground: React.FC<DialogIndentBackgroundProps>;
@@ -6,7 +6,7 @@ import type * as React from 'react';
6
6
  * Pass-through to Base UI `Drawer.Indent` with Vira-owned root class applied.
7
7
  * Wrap app shell content inside `Dialog.Provider` to receive `data-active` when a sheet opens.
8
8
  *
9
- * @default Base UI pass-through props keep upstream defaults.
9
+ * @defaultValue Base UI pass-through props keep upstream defaults.
10
10
  */
11
11
  export type DialogIndentProps = DrawerIndent.Props;
12
12
  export declare const DialogIndent: React.FC<DialogIndentProps>;
@@ -8,7 +8,7 @@ import type * as React from 'react';
8
8
  * and optional body content. Compose `Dialog.Close` inside `children` when a
9
9
  * close control is needed.
10
10
  *
11
- * @default Base UI pass-through props keep upstream defaults.
11
+ * @defaultValue Base UI pass-through props keep upstream defaults.
12
12
  */
13
13
  export type DialogSheetProps = {
14
14
  /**
@@ -18,49 +18,49 @@ export type DialogSheetProps = {
18
18
  /**
19
19
  * Supporting copy announced with the title.
20
20
  *
21
- * @default No description is rendered.
21
+ * @defaultValue No description is rendered.
22
22
  */
23
23
  description?: React.ReactNode;
24
24
  /**
25
25
  * Optional body content rendered below the description.
26
26
  *
27
- * @default No extra body content is rendered.
27
+ * @defaultValue No extra body content is rendered.
28
28
  */
29
29
  children?: React.ReactNode;
30
30
  /**
31
31
  * Optional maximum width of the content area.
32
32
  *
33
- * @default `50ch`
33
+ * @defaultValue `50ch`
34
34
  */
35
35
  maxContentWidth?: StackProps['maxWidth'];
36
36
  /**
37
37
  * Aligns the header stack and title/description text (`start` | `center` | `end`).
38
38
  *
39
- * @default `start`
39
+ * @defaultValue `start`
40
40
  */
41
41
  headerAlign?: Extract<StackProps['hAlign'], 'start' | 'center' | 'end'>;
42
42
  /**
43
43
  * Whether to show the close button.
44
44
  *
45
- * @default false
45
+ * @defaultValue false
46
46
  */
47
47
  showCloseButton?: boolean;
48
48
  /**
49
49
  * Centers the sheet horizontally within the viewport.
50
50
  *
51
- * @default false
51
+ * @defaultValue false
52
52
  */
53
53
  fitContent?: boolean;
54
54
  /**
55
55
  * Whether to show the drag handle above the sheet header.
56
56
  *
57
- * @default true
57
+ * @defaultValue true
58
58
  */
59
59
  showHandle?: boolean;
60
60
  /**
61
61
  * Maximum block size of the sheet panel.
62
62
  *
63
- * @default `97dvh`
63
+ * @defaultValue `97dvh`
64
64
  */
65
65
  maxHeight?: string;
66
66
  /**
@@ -68,7 +68,7 @@ export type DialogSheetProps = {
68
68
  * Omit for Base UI default (`document.body` from the module window —
69
69
  * iframe hosts must pass the iframe document body explicitly).
70
70
  *
71
- * @default Base UI FloatingPortal resolution
71
+ * @defaultValue Base UI FloatingPortal resolution
72
72
  */
73
73
  container?: React.ComponentProps<typeof PrimitiveDrawer.Portal>['container'];
74
74
  };
@@ -7,7 +7,7 @@ import type * as React from 'react';
7
7
  * (`Button`, `IconButton`, or another element) and set `nativeButton` when the
8
8
  * rendered root is not a native `<button>`.
9
9
  *
10
- * @default Base UI pass-through props keep upstream defaults.
10
+ * @defaultValue Base UI pass-through props keep upstream defaults.
11
11
  */
12
12
  export type DialogTriggerProps = DrawerTrigger.Props;
13
13
  export declare const DialogTrigger: React.FC<DialogTriggerProps>;
@@ -13,7 +13,7 @@ import type * as React from 'react';
13
13
  * Portal, backdrop, viewport, popup, title, description, and content parts are
14
14
  * internal to `Dialog.Sheet` and are not exposed on `Dialog`.
15
15
  *
16
- * @default Base UI pass-through props keep upstream defaults.
16
+ * @defaultValue Base UI pass-through props keep upstream defaults.
17
17
  */
18
18
  export type DialogProps = DrawerRoot.Props;
19
19
  export type DialogSnapPoint = DrawerRoot.SnapPoint;
@@ -0,0 +1,12 @@
1
+ import { CollapsiblePanel } from '@base-ui/react/collapsible';
2
+ import type * as React from 'react';
3
+ /**
4
+ * Public Disclosure.Panel props.
5
+ *
6
+ * Base UI Collapsible Panel pass-through (`hiddenUntilFound`, `keepMounted`, `render`, …)
7
+ * plus the animated height shell. No default content padding — builders own children layout.
8
+ *
9
+ * @defaultValue Base UI pass-through props keep upstream defaults.
10
+ */
11
+ export type DisclosurePanelProps = CollapsiblePanel.Props;
12
+ export declare const DisclosurePanel: React.FC<DisclosurePanelProps>;
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { clsx } from "../../core/clsx.js";
3
+ import disclosure_module_default from "./disclosure.module.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { Collapsible } from "@base-ui/react/collapsible";
6
+ //#region src/components/disclosure/disclosure-panel.tsx
7
+ var DisclosurePanel = ({ children, className, ...otherProps }) => /* @__PURE__ */ jsx(Collapsible.Panel, {
8
+ className: clsx(disclosure_module_default.Panel, className),
9
+ ...otherProps,
10
+ children
11
+ });
12
+ //#endregion
13
+ export { DisclosurePanel };
@@ -0,0 +1,46 @@
1
+ import { CollapsibleTrigger } from '@base-ui/react/collapsible';
2
+ import { SurfaceProps } from '../surface';
3
+ import type * as React from 'react';
4
+ /** Surface chrome on default Trigger path. Host/`render` stay on Trigger. */
5
+ type DisclosureTriggerSurfaceProps = Omit<SurfaceProps, 'ref'>;
6
+ /**
7
+ * Public Disclosure.Trigger props.
8
+ *
9
+ * Default host = `Surface` with `render` → Base UI Collapsible Trigger (Textfield/NumberField
10
+ * family). Icon pair follows ToggleButton naming (`restingIcon` / `openIcon` / `interpolateIcons`).
11
+ * Consumer `render` replaces the whole Surface + primitive compose.
12
+ *
13
+ * @defaultValue Base UI pass-through props keep upstream defaults. On the default Surface path,
14
+ * `hoverColor` defaults to `2`, `hPadding` defaults to `'m'`, `vPadding` defaults to `'s'`.
15
+ * `interpolateIcons` defaults to `false`. `iconPosition` defaults to `'end'`.
16
+ */
17
+ export type DisclosureTriggerProps = CollapsibleTrigger.Props & DisclosureTriggerSurfaceProps & {
18
+ /**
19
+ * Decorative icon while the panel is closed.
20
+ *
21
+ * @defaultValue `ChromeChevronEnd` when both icon slots are omitted.
22
+ */
23
+ restingIcon?: React.ReactNode;
24
+ /**
25
+ * Decorative icon while the panel is open.
26
+ *
27
+ * @defaultValue `ChromeChevronDown` when both icon slots are omitted. When only `restingIcon`
28
+ * is set, that icon shows in both states.
29
+ */
30
+ openIcon?: React.ReactNode;
31
+ /**
32
+ * When dual icons are present, crossfade and light-rotate between them
33
+ * (`data-interpolate="true"`). When `false`, swap instantly with no transition.
34
+ *
35
+ * @defaultValue false
36
+ */
37
+ interpolateIcons?: boolean;
38
+ /**
39
+ * Logical side of the label where the icon slot sits.
40
+ *
41
+ * @defaultValue 'end'
42
+ */
43
+ iconPosition?: 'start' | 'end';
44
+ };
45
+ export declare const DisclosureTrigger: React.FC<DisclosureTriggerProps>;
46
+ export {};
@@ -0,0 +1,82 @@
1
+ "use client";
2
+ import { clsx } from "../../core/clsx.js";
3
+ import { ChromeChevronDown, ChromeChevronEnd } from "../../internal/chrome-icons/chrome-icons.js";
4
+ import { Stack } from "../stack/stack.js";
5
+ import { Surface } from "../surface/surface.js";
6
+ import disclosure_module_default from "./disclosure.module.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Collapsible } from "@base-ui/react/collapsible";
9
+ //#region src/components/disclosure/disclosure-trigger.tsx
10
+ var resolveIconPair = (restingIcon, openIcon) => {
11
+ if (restingIcon === void 0 && openIcon === void 0) return {
12
+ resting: /* @__PURE__ */ jsx(ChromeChevronEnd, { size: "1rem" }),
13
+ open: /* @__PURE__ */ jsx(ChromeChevronDown, { size: "1rem" })
14
+ };
15
+ if (restingIcon !== void 0 && openIcon === void 0) return {
16
+ resting: restingIcon,
17
+ open: null
18
+ };
19
+ if (restingIcon === void 0 && openIcon !== void 0) return {
20
+ resting: /* @__PURE__ */ jsx(ChromeChevronEnd, { size: "1rem" }),
21
+ open: openIcon
22
+ };
23
+ return {
24
+ resting: restingIcon,
25
+ open: openIcon ?? null
26
+ };
27
+ };
28
+ var DisclosureTrigger = ({ border, borderStyle, children, className, color, enableContainer, hPadding = "m", vPadding = "s", hoverColor, iconPosition = "end", interpolateIcons = false, nativeButton, openIcon, overflow, radius, render, restingIcon, style, ...otherProps }) => {
29
+ if (render != null) return /* @__PURE__ */ jsx(Collapsible.Trigger, {
30
+ className: clsx(disclosure_module_default.Trigger, className),
31
+ nativeButton,
32
+ render,
33
+ style,
34
+ ...otherProps,
35
+ children
36
+ });
37
+ const { resting, open } = resolveIconPair(restingIcon, openIcon);
38
+ const iconAtStart = iconPosition === "start";
39
+ return /* @__PURE__ */ jsx(Surface, {
40
+ border,
41
+ borderStyle,
42
+ className: clsx(disclosure_module_default.Trigger, className),
43
+ color,
44
+ enableContainer,
45
+ hoverColor: hoverColor ?? 2,
46
+ hPadding,
47
+ vPadding,
48
+ overflow,
49
+ radius,
50
+ render: /* @__PURE__ */ jsx(Collapsible.Trigger, {
51
+ nativeButton,
52
+ ...otherProps
53
+ }),
54
+ style,
55
+ children: /* @__PURE__ */ jsxs(Stack, {
56
+ columnGap: iconAtStart ? "s" : void 0,
57
+ direction: iconAtStart ? "row" : "row-reverse",
58
+ fullWidth: true,
59
+ hAlign: iconPosition === "end" ? "space-between" : "start",
60
+ vAlign: "center",
61
+ children: [open ? /* @__PURE__ */ jsxs("span", {
62
+ "aria-hidden": true,
63
+ className: disclosure_module_default.IconSlot,
64
+ "data-interpolate": interpolateIcons ? "true" : "false",
65
+ "data-shrink": "false",
66
+ children: [/* @__PURE__ */ jsx("span", {
67
+ className: disclosure_module_default.Icon,
68
+ children: resting
69
+ }), /* @__PURE__ */ jsx("span", {
70
+ className: disclosure_module_default.Icon,
71
+ children: open
72
+ })]
73
+ }) : /* @__PURE__ */ jsx("span", {
74
+ "aria-hidden": true,
75
+ "data-shrink": "false",
76
+ children: resting
77
+ }), children]
78
+ })
79
+ });
80
+ };
81
+ //#endregion
82
+ export { DisclosureTrigger };
@@ -0,0 +1 @@
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{.viraui__disclosure-module__Trigger_hTIkR{inline-size:100%;cursor:pointer;text-align:start;color:inherit;&:focus-visible{outline-offset:-4px}&[data-disabled]{cursor:not-allowed;opacity:.5}}.viraui__disclosure-module__IconSlot_8gEr5{position:relative;inline-size:1rem;block-size:1rem;.viraui__disclosure-module__Trigger_hTIkR[data-panel-open] &{.viraui__disclosure-module__Icon_w8tYN:first-of-type{opacity:0;rotate:30deg}.viraui__disclosure-module__Icon_w8tYN:last-of-type{opacity:1;rotate:0deg}}&[data-interpolate=true] .viraui__disclosure-module__Icon_w8tYN{transition:opacity var(--duration-fast) var(--easing-standard),rotate var(--duration-fast) var(--easing-standard)}@media (prefers-reduced-motion:reduce){&[data-interpolate=true] .viraui__disclosure-module__Icon_w8tYN{transition:none}}}.viraui__disclosure-module__Icon_w8tYN{position:absolute;inset:0;display:grid;place-items:center;&>svg{block-size:1rem;inline-size:1rem}&:first-of-type{opacity:1;rotate:0deg}&:last-of-type{opacity:0;rotate:-30deg}}.viraui__disclosure-module__Panel_U6Kba{block-size:var(--collapsible-panel-height);overflow:hidden;transition:block-size var(--duration-fast) var(--easing-standard);&[data-ending-style],&[data-starting-style]{block-size:0}@media (prefers-reduced-motion:reduce){transition:none}}}
@@ -0,0 +1,25 @@
1
+ import { CollapsibleRoot } from '@base-ui/react/collapsible';
2
+ import { DisclosurePanelProps } from './disclosure-panel';
3
+ import { DisclosureTriggerProps } from './disclosure-trigger';
4
+ import type * as React from 'react';
5
+ /**
6
+ * Public Disclosure root props.
7
+ *
8
+ * Base UI Collapsible Root pass-through (`open`, `defaultOpen`, `onOpenChange`, `disabled`, …).
9
+ * Compose with `Disclosure.Trigger` and `Disclosure.Panel`.
10
+ *
11
+ * @defaultValue Base UI pass-through props keep upstream defaults.
12
+ */
13
+ export type DisclosureProps = CollapsibleRoot.Props;
14
+ type DisclosureComponent = React.FC<DisclosureProps> & {
15
+ Trigger: React.FC<DisclosureTriggerProps>;
16
+ Panel: React.FC<DisclosurePanelProps>;
17
+ };
18
+ /**
19
+ * Single-section expand/collapse compound wrapping Base UI Collapsible.
20
+ *
21
+ * Use Accordion for multi-item lists. Default Trigger is Surface with
22
+ * `render` → Collapsible Trigger; Panel is a height motion shell without padding.
23
+ */
24
+ export declare const Disclosure: DisclosureComponent;
25
+ export {};
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import './disclosure.css';
3
+ import { clsx } from "../../core/clsx.js";
4
+ import { Stack } from "../stack/stack.js";
5
+ import disclosure_module_default from "./disclosure.module.js";
6
+ import { DisclosurePanel } from "./disclosure-panel.js";
7
+ import { DisclosureTrigger } from "./disclosure-trigger.js";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { Collapsible } from "@base-ui/react/collapsible";
10
+ //#region src/components/disclosure/disclosure.tsx
11
+ var DisclosureRoot = ({ children, className, ...otherProps }) => /* @__PURE__ */ jsx(Collapsible.Root, {
12
+ render: /* @__PURE__ */ jsx(Stack, {
13
+ fullWidth: true,
14
+ className: clsx(disclosure_module_default.Disclosure, className)
15
+ }),
16
+ ...otherProps,
17
+ children
18
+ });
19
+ /**
20
+ * Single-section expand/collapse compound wrapping Base UI Collapsible.
21
+ *
22
+ * Use Accordion for multi-item lists. Default Trigger is Surface with
23
+ * `render` → Collapsible Trigger; Panel is a height motion shell without padding.
24
+ */
25
+ var Disclosure = Object.assign(DisclosureRoot, {
26
+ Trigger: DisclosureTrigger,
27
+ Panel: DisclosurePanel
28
+ });
29
+ //#endregion
30
+ export { Disclosure };
@@ -0,0 +1,15 @@
1
+ //#region src/components/disclosure/disclosure.module.css
2
+ var Disclosure = "viraui__disclosure-module__Disclosure_C0zl-";
3
+ var Trigger = "viraui__disclosure-module__Trigger_hTIkR";
4
+ var IconSlot = "viraui__disclosure-module__IconSlot_8gEr5";
5
+ var Icon = "viraui__disclosure-module__Icon_w8tYN";
6
+ var Panel = "viraui__disclosure-module__Panel_U6Kba";
7
+ var disclosure_module_default = {
8
+ Disclosure,
9
+ Trigger,
10
+ IconSlot,
11
+ Icon,
12
+ Panel
13
+ };
14
+ //#endregion
15
+ export { Disclosure, Icon, IconSlot, Panel, Trigger, disclosure_module_default as default };
@@ -0,0 +1,4 @@
1
+ export { Disclosure } from './disclosure';
2
+ export type { DisclosureProps } from './disclosure';
3
+ export type { DisclosureTriggerProps } from './disclosure-trigger';
4
+ export type { DisclosurePanelProps } from './disclosure-panel';
@@ -8,43 +8,43 @@ export { getElevationProps } from '../../core/elevation/get-elevation-props';
8
8
  *
9
9
  * Applies preflight elevation hooks to each valid element child. Invalid nodes pass through unchanged.
10
10
  *
11
- * @default Native child pass-through props are preserved and merged with elevation hooks.
11
+ * @defaultValue Native child pass-through props are preserved and merged with elevation hooks.
12
12
  */
13
13
  export type ElevatorProps = {
14
14
  /**
15
15
  * Element or elements that receive elevation hooks on their rendered root.
16
16
  *
17
- * @default No default. Consumers must provide at least one child.
17
+ * @defaultValue No default. Consumers must provide at least one child.
18
18
  */
19
19
  children: React.ReactNode;
20
20
  /**
21
21
  * Resting elevation level mapped to `data-elevation`.
22
22
  *
23
- * @default No default. Consumers must provide a resting level.
23
+ * @defaultValue No default. Consumers must provide a resting level.
24
24
  */
25
25
  resting: ElevationLevel;
26
26
  /**
27
27
  * Hover elevation level mapped to `data-elevation-hover`.
28
28
  *
29
- * @default No hover elevation override.
29
+ * @defaultValue No hover elevation override.
30
30
  */
31
31
  hover?: ElevationLevel;
32
32
  /**
33
33
  * Shadow cast direction mapped to `data-elevation-direction`.
34
34
  *
35
- * @default 'bottom'
35
+ * @defaultValue 'bottom'
36
36
  */
37
37
  direction?: ElevationDirection;
38
38
  /**
39
39
  * Shadow color mapped to the `--shadow-color` custom property.
40
40
  *
41
- * @default 'oklch(0% 0 0)'
41
+ * @defaultValue 'oklch(0% 0 0)'
42
42
  */
43
43
  shadowColor?: ElevationShadowColor;
44
44
  /**
45
45
  * Additional shadow layer mapped to the `--extra-shadow` custom property.
46
46
  *
47
- * @default Preflight transparent hairline from `elevations.css`.
47
+ * @defaultValue Preflight transparent hairline from `elevations.css`.
48
48
  */
49
49
  extraShadow?: string;
50
50
  };
@@ -7,27 +7,27 @@ import type * as React from 'react';
7
7
  * legend typography and optional group helper copy. Pass `render` to merge the fieldset
8
8
  * root with `RadioGroup`, `CheckboxGroup`, or another compatible root.
9
9
  *
10
- * @default Base UI pass-through props keep upstream defaults.
10
+ * @defaultValue Base UI pass-through props keep upstream defaults.
11
11
  */
12
12
  export type FieldsetProps = FieldsetRoot.Props & {
13
13
  /**
14
14
  * Visible legend copy rendered with shared internal `FieldLabel`.
15
15
  *
16
- * @default No legend is rendered.
16
+ * @defaultValue No legend is rendered.
17
17
  */
18
18
  label?: React.ReactNode;
19
19
  /**
20
20
  * Group helper copy rendered below the legend while valid.
21
21
  * Requires a `Field.Root` ancestor for `FieldHelperCopy`.
22
22
  *
23
- * @default No description is rendered.
23
+ * @defaultValue No description is rendered.
24
24
  */
25
25
  description?: React.ReactNode;
26
26
  /**
27
27
  * Group error copy rendered below the legend when invalid.
28
28
  * Requires a `Field.Root` ancestor.
29
29
  *
30
- * @default No static error copy is rendered.
30
+ * @defaultValue No static error copy is rendered.
31
31
  */
32
32
  error?: React.ReactNode;
33
33
  };
@@ -5,13 +5,13 @@ import type * as React from 'react';
5
5
  * Includes standard `div` attributes such as `children`, `id`, `className`, and event handlers,
6
6
  * plus an optional fitted font-size cap.
7
7
  *
8
- * @default Native div pass-through props keep React defaults.
8
+ * @defaultValue Native div pass-through props keep React defaults.
9
9
  */
10
10
  export type FitTextProps = React.ComponentPropsWithRef<'div'> & {
11
11
  /**
12
12
  * Caps the fitted font size using any valid CSS length string.
13
13
  *
14
- * @default No maximum — fitted size may grow without an upper bound.
14
+ * @defaultValue No maximum — fitted size may grow without an upper bound.
15
15
  */
16
16
  maxFontSize?: string;
17
17
  };