@viraui/react 0.0.22 → 0.0.24

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 (175) hide show
  1. package/dist/catalog.json +26 -2
  2. package/dist/components/avatar/avatar.css +1 -1
  3. package/dist/components/avatar/avatar.module.js +3 -3
  4. package/dist/components/avatar-group/avatar-group.css +1 -1
  5. package/dist/components/avatar-group/avatar-group.module.js +5 -5
  6. package/dist/components/basic-input/basic-input.css +1 -1
  7. package/dist/components/basic-input/basic-input.js +0 -1
  8. package/dist/components/basic-input/basic-input.module.js +1 -1
  9. package/dist/components/basic-input/field-helper-copy.d.ts +1 -1
  10. package/dist/components/basic-input/field-helper-copy.js +0 -1
  11. package/dist/components/basic-input/field-label.css +1 -1
  12. package/dist/components/basic-input/field-label.js +0 -1
  13. package/dist/components/basic-input/field-label.module.js +1 -1
  14. package/dist/components/basic-input/input-control-group.js +0 -1
  15. package/dist/components/button/button.css +1 -1
  16. package/dist/components/button/button.d.ts +13 -7
  17. package/dist/components/button/button.guide.json +7 -5
  18. package/dist/components/button/button.js +11 -10
  19. package/dist/components/button/button.module.js +3 -3
  20. package/dist/components/checkbox/checkbox-group.d.ts +12 -0
  21. package/dist/components/checkbox/checkbox-group.js +15 -0
  22. package/dist/components/checkbox/checkbox.css +1 -1
  23. package/dist/components/checkbox/checkbox.d.ts +6 -21
  24. package/dist/components/checkbox/checkbox.guide.json +10 -5
  25. package/dist/components/checkbox/checkbox.js +45 -59
  26. package/dist/components/checkbox/checkbox.module.js +7 -6
  27. package/dist/components/checkbox/index.d.ts +2 -0
  28. package/dist/components/chip/chip.css +1 -1
  29. package/dist/components/chip/chip.js +0 -2
  30. package/dist/components/chip/chip.module.js +4 -4
  31. package/dist/components/clamp-text/clamp-text.css +1 -1
  32. package/dist/components/clamp-text/clamp-text.module.js +1 -1
  33. package/dist/components/dialog/dialog-close.d.ts +15 -0
  34. package/dist/components/dialog/dialog-close.js +9 -0
  35. package/dist/components/dialog/dialog-indent-background.d.ts +12 -0
  36. package/dist/components/dialog/dialog-indent-background.js +11 -0
  37. package/dist/components/dialog/dialog-indent.d.ts +12 -0
  38. package/dist/components/dialog/dialog-indent.js +11 -0
  39. package/dist/components/dialog/dialog-sheet.d.ts +66 -0
  40. package/dist/components/dialog/dialog-sheet.js +80 -0
  41. package/dist/components/dialog/dialog-trigger.d.ts +13 -0
  42. package/dist/components/dialog/dialog-trigger.js +9 -0
  43. package/dist/components/dialog/dialog.css +1 -0
  44. package/dist/components/dialog/dialog.d.ts +28 -0
  45. package/dist/components/dialog/dialog.guide.json +27 -0
  46. package/dist/components/dialog/dialog.js +23 -0
  47. package/dist/components/dialog/dialog.module.js +15 -0
  48. package/dist/components/dialog/index.d.ts +12 -0
  49. package/dist/components/elevator/elevator.js +4 -4
  50. package/dist/components/fieldset/fieldset.d.ts +35 -0
  51. package/dist/components/fieldset/fieldset.guide.json +28 -0
  52. package/dist/components/fieldset/fieldset.js +30 -0
  53. package/dist/components/fieldset/index.d.ts +2 -0
  54. package/dist/components/icon/icon.css +1 -1
  55. package/dist/components/icon/icon.module.js +1 -1
  56. package/dist/components/icon-button/icon-button.d.ts +1 -1
  57. package/dist/components/icon-button/icon-button.guide.json +1 -1
  58. package/dist/components/icon-button/icon-button.js +1 -1
  59. package/dist/components/index.d.ts +4 -0
  60. package/dist/components/linear-progress/linear-progress.css +1 -1
  61. package/dist/components/linear-progress/linear-progress.js +0 -1
  62. package/dist/components/linear-progress/linear-progress.module.js +4 -4
  63. package/dist/components/masonry/masonry-item.js +0 -1
  64. package/dist/components/masonry/masonry.css +1 -1
  65. package/dist/components/masonry/masonry.js +2 -3
  66. package/dist/components/masonry/masonry.module.js +2 -2
  67. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  68. package/dist/components/progressive-blur/progressive-blur.module.js +2 -2
  69. package/dist/components/radio/radio-group.d.ts +5 -38
  70. package/dist/components/radio/radio-group.js +12 -50
  71. package/dist/components/radio/radio.css +1 -1
  72. package/dist/components/radio/radio.d.ts +1 -1
  73. package/dist/components/radio/radio.guide.json +12 -8
  74. package/dist/components/radio/radio.js +31 -29
  75. package/dist/components/radio/radio.module.js +3 -5
  76. package/dist/components/select/select-group.js +1 -1
  77. package/dist/components/select/select-indicator-slot.js +0 -1
  78. package/dist/components/select/select-option.d.ts +9 -2
  79. package/dist/components/select/select-option.js +32 -31
  80. package/dist/components/select/select-separator.js +0 -1
  81. package/dist/components/select/select.css +1 -1
  82. package/dist/components/select/select.guide.json +8 -3
  83. package/dist/components/select/select.js +3 -2
  84. package/dist/components/select/select.module.js +17 -16
  85. package/dist/components/separator/index.d.ts +2 -0
  86. package/dist/components/separator/separator.css +1 -0
  87. package/dist/components/separator/separator.d.ts +54 -0
  88. package/dist/components/separator/separator.guide.json +24 -0
  89. package/dist/components/separator/separator.js +43 -0
  90. package/dist/components/separator/separator.module.js +3 -0
  91. package/dist/components/skeleton/skeleton.css +1 -1
  92. package/dist/components/skeleton/skeleton.module.js +2 -2
  93. package/dist/components/slider/slider-control.js +0 -1
  94. package/dist/components/slider/slider.css +1 -1
  95. package/dist/components/slider/slider.js +1 -3
  96. package/dist/components/slider/slider.module.js +9 -8
  97. package/dist/components/spinner/spinner.css +1 -1
  98. package/dist/components/spinner/spinner.js +2 -2
  99. package/dist/components/spinner/spinner.module.js +3 -3
  100. package/dist/components/stack/stack.css +1 -1
  101. package/dist/components/stack/stack.d.ts +2 -2
  102. package/dist/components/stack/stack.js +0 -1
  103. package/dist/components/stack/stack.module.js +1 -1
  104. package/dist/components/static-noise/static-noise.css +1 -1
  105. package/dist/components/static-noise/static-noise.d.ts +1 -1
  106. package/dist/components/static-noise/static-noise.js +2 -1
  107. package/dist/components/static-noise/static-noise.module.js +2 -2
  108. package/dist/components/surface/surface-radius-context.d.ts +9 -1
  109. package/dist/components/surface/surface-radius-context.js +17 -6
  110. package/dist/components/surface/surface.css +1 -1
  111. package/dist/components/surface/surface.d.ts +9 -3
  112. package/dist/components/surface/surface.guide.json +3 -1
  113. package/dist/components/surface/surface.js +3 -3
  114. package/dist/components/surface/surface.module.js +1 -4
  115. package/dist/components/switch/switch.css +1 -1
  116. package/dist/components/switch/switch.js +31 -29
  117. package/dist/components/switch/switch.module.js +4 -3
  118. package/dist/components/tabs/index.d.ts +6 -0
  119. package/dist/components/tabs/tabs-indicator.d.ts +9 -0
  120. package/dist/components/tabs/tabs-indicator.js +16 -0
  121. package/dist/components/tabs/tabs-list.d.ts +12 -0
  122. package/dist/components/tabs/tabs-list.js +29 -0
  123. package/dist/components/tabs/tabs-panel.d.ts +11 -0
  124. package/dist/components/tabs/tabs-panel.js +13 -0
  125. package/dist/components/tabs/tabs-tab.d.ts +24 -0
  126. package/dist/components/tabs/tabs-tab.js +24 -0
  127. package/dist/components/tabs/tabs-viewport.d.ts +8 -0
  128. package/dist/components/tabs/tabs-viewport.js +11 -0
  129. package/dist/components/tabs/tabs.css +1 -0
  130. package/dist/components/tabs/tabs.d.ts +31 -0
  131. package/dist/components/tabs/tabs.guide.json +23 -0
  132. package/dist/components/tabs/tabs.js +30 -0
  133. package/dist/components/tabs/tabs.module.js +11 -0
  134. package/dist/components/text/text.css +1 -1
  135. package/dist/components/text/text.d.ts +2 -2
  136. package/dist/components/text/text.js +2 -3
  137. package/dist/components/text/text.module.js +1 -1
  138. package/dist/components/textarea/textarea.css +1 -1
  139. package/dist/components/textarea/textarea.guide.json +8 -3
  140. package/dist/components/textarea/textarea.js +1 -3
  141. package/dist/components/textarea/textarea.module.js +4 -3
  142. package/dist/components/textfield/textfield.css +1 -1
  143. package/dist/components/textfield/textfield.guide.json +9 -3
  144. package/dist/components/textfield/textfield.js +1 -3
  145. package/dist/components/textfield/textfield.module.js +6 -5
  146. package/dist/components/title/title.css +1 -1
  147. package/dist/components/title/title.js +2 -3
  148. package/dist/components/title/title.module.js +1 -1
  149. package/dist/core/elevation/get-elevation-props.js +2 -2
  150. package/dist/core/props/intrinsic-vira-props.d.ts +3 -3
  151. package/dist/index.js +11 -1
  152. package/dist/internal-icons/icon-registry.d.ts +4 -1
  153. package/dist/internal-icons/icon-registry.js +9 -0
  154. package/dist/internal-icons/icons/duo/ArrowDown.js +1 -1
  155. package/dist/internal-icons/icons/duo/ArrowDownLeft.js +1 -1
  156. package/dist/internal-icons/icons/duo/ArrowDownRight.js +1 -1
  157. package/dist/internal-icons/icons/duo/ArrowLeft.js +1 -1
  158. package/dist/internal-icons/icons/duo/ArrowRight.js +1 -1
  159. package/dist/internal-icons/icons/duo/ArrowUp.js +1 -1
  160. package/dist/internal-icons/icons/duo/ArrowUpLeft.js +1 -1
  161. package/dist/internal-icons/icons/duo/ArrowUpRight.js +1 -1
  162. package/dist/internal-icons/icons/duo/ChevronExpandY.js +2 -2
  163. package/dist/internal-icons/icons/duo/CircleCheck.d.ts +7 -0
  164. package/dist/internal-icons/icons/duo/CircleCheck.js +13 -0
  165. package/dist/internal-icons/icons/duo/Duplicate.d.ts +7 -0
  166. package/dist/internal-icons/icons/duo/Duplicate.js +13 -0
  167. package/dist/internal-icons/icons/duo/RefreshAnticlockwise.js +1 -1
  168. package/dist/internal-icons/icons/duo/ShieldCheck.d.ts +7 -0
  169. package/dist/internal-icons/icons/duo/ShieldCheck.js +13 -0
  170. package/dist/internal-icons/icons/duo/index.d.ts +3 -0
  171. package/dist/internal-icons/icons/duo/index.js +3 -0
  172. package/dist/preflight-surface.json +15 -1
  173. package/dist/preflight.css +1 -1
  174. package/dist/theme-surface.json +0 -5
  175. package/package.json +4 -4
@@ -1 +1 @@
1
- .chip-module_Chip_2D18T{--chip-background:var(--global-primary);--chip-border-color:transparent;--chip-color:contrast-color(var(--global-primary));--chip-height:var(--space-large);--chip-icon-size:0.9em;--chip-color-bg-opacity:13%;--chip-color-border-opacity:0%;min-block-size:var(--chip-height);block-size:var(--chip-height);border:1px solid var(--chip-border-color);border-radius:var(--radius-infinite);background:var(--chip-background);color:var(--chip-color);font-size:var(--font-scale-body-small);font-variation-settings:"wght" 400;text-decoration:none;white-space:nowrap;overflow:hidden;&[data-variant=primary]{--chip-background:var(--global-primary);--chip-color:contrast-color(var(--global-primary))}&[data-variant=secondary]{--chip-background:var(--global-contrast);--chip-color:var(--base-6)}&[data-variant=outline]{--chip-background:transparent;--chip-border-color:oklab(from var(--global-contrast) l a b/0.2);--chip-color:var(--base-6)}&[data-variant=gray]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-gray)}&[data-variant=slate]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-slate)}&[data-variant=yellow]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-yellow)}&[data-variant=green]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-green)}&[data-variant=blue]{--chip-color:var(--highlight-blue)}&[data-variant=blue],&[data-variant=red]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity))}&[data-variant=red]{--chip-color:var(--highlight-red)}&[data-variant=cyan]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-cyan)}&[data-variant=purple]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-purple)}&[data-variant=indigo]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-indigo)}&[data-variant=acid]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-acid)}&[data-variant=salmon]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-salmon)}&[data-variant=magenta]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-magenta)}}.chip-module_Content_7mLuL{min-inline-size:0;min-block-size:100%}.chip-module_IconSlot_9N5vD{display:inline-grid;place-items:center;flex-shrink:0;>svg{inline-size:var(--chip-icon-size);block-size:var(--chip-icon-size)}}.chip-module_Label_Hdx7l{display:inline-block;min-inline-size:0;overflow:hidden;text-overflow:ellipsis}
1
+ .viraui__chip-module__Chip_2D18T{--chip-background:var(--global-primary);--chip-border-color:transparent;--chip-color:contrast-color(var(--global-primary));--chip-height:var(--space-large);--chip-icon-size:0.9em;--chip-color-bg-opacity:13%;--chip-color-border-opacity:0%;min-block-size:var(--chip-height);block-size:var(--chip-height);border:1px solid var(--chip-border-color);border-radius:var(--radius-infinite);background:var(--chip-background);color:var(--chip-color);font-size:var(--font-scale-body-small);font-variation-settings:"wght" 400;text-decoration:none;white-space:nowrap;overflow:hidden;&[data-variant=primary]{--chip-background:var(--global-primary);--chip-color:contrast-color(var(--global-primary))}&[data-variant=secondary]{--chip-background:var(--global-contrast);--chip-color:var(--base-6)}&[data-variant=outline]{--chip-background:transparent;--chip-border-color:oklab(from var(--global-contrast) l a b/0.2);--chip-color:var(--base-6)}&[data-variant=gray]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-gray)}&[data-variant=slate]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-slate)}&[data-variant=yellow]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-yellow)}&[data-variant=green]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-green)}&[data-variant=blue]{--chip-color:var(--highlight-blue)}&[data-variant=blue],&[data-variant=red]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity))}&[data-variant=red]{--chip-color:var(--highlight-red)}&[data-variant=cyan]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-cyan)}&[data-variant=purple]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-purple)}&[data-variant=indigo]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-indigo)}&[data-variant=acid]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-acid)}&[data-variant=salmon]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-salmon)}&[data-variant=magenta]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-magenta)}}.viraui__chip-module__Content_7mLuL{min-inline-size:0;min-block-size:100%}.viraui__chip-module__IconSlot_9N5vD{display:inline-grid;place-items:center;flex-shrink:0;>svg{inline-size:var(--chip-icon-size);block-size:var(--chip-icon-size)}}.viraui__chip-module__Label_Hdx7l{display:inline-block;min-inline-size:0;overflow:hidden;text-overflow:ellipsis}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import './chip.css';
3
2
  import { clsx } from "../../core/clsx.js";
4
3
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
@@ -39,7 +38,6 @@ var Chip = ({ addon, addonPosition = "start", children, className, ref, render,
39
38
  children: content,
40
39
  className: clsx(chip_module_default.Chip, className),
41
40
  "data-has-icon": addon ? "true" : void 0,
42
- "data-icon-position": addon ? addonPosition : void 0,
43
41
  "data-variant": variant
44
42
  }
45
43
  });
@@ -1,8 +1,8 @@
1
1
  var chip_module_default = {
2
- Chip: "chip-module_Chip_2D18T",
3
- Content: "chip-module_Content_7mLuL",
4
- IconSlot: "chip-module_IconSlot_9N5vD",
5
- Label: "chip-module_Label_Hdx7l"
2
+ Chip: "viraui__chip-module__Chip_2D18T",
3
+ Content: "viraui__chip-module__Content_7mLuL",
4
+ IconSlot: "viraui__chip-module__IconSlot_9N5vD",
5
+ Label: "viraui__chip-module__Label_Hdx7l"
6
6
  };
7
7
  //#endregion
8
8
  export { chip_module_default as default };
@@ -1 +1 @@
1
- .clamp-text-module_ClampText_Whnkd{display:-webkit-box;-webkit-line-clamp:var(--clamp-text-rows,1);-webkit-box-orient:vertical;overflow:hidden;&[data-clamp-text-inline=true]{display:-webkit-inline-box}}
1
+ .viraui__clamp-text-module__ClampText_Whnkd{display:-webkit-box;-webkit-line-clamp:var(--clamp-text-rows,1);-webkit-box-orient:vertical;overflow:hidden;&[data-clamp-text-inline=true]{display:-webkit-inline-box}}
@@ -1,3 +1,3 @@
1
- var clamp_text_module_default = { ClampText: "clamp-text-module_ClampText_Whnkd" };
1
+ var clamp_text_module_default = { ClampText: "viraui__clamp-text-module__ClampText_Whnkd" };
2
2
  //#endregion
3
3
  export { clamp_text_module_default as default };
@@ -0,0 +1,15 @@
1
+ import { DrawerClose } from '@base-ui/react';
2
+ import type * as React from 'react';
3
+ /**
4
+ * Public Dialog.Close props.
5
+ *
6
+ * Pass-through to Base UI `Drawer.Close`. Use `render` for the visible control
7
+ * (`Button`, `IconButton`, or another element) and set `nativeButton` when the
8
+ * rendered root is not a native `<button>`.
9
+ *
10
+ * Compose inside `Dialog.Sheet` so the control closes the open drawer.
11
+ *
12
+ * @default Base UI pass-through props keep upstream defaults.
13
+ */
14
+ export type DialogCloseProps = DrawerClose.Props;
15
+ export declare const DialogClose: React.FC<DialogCloseProps>;
@@ -0,0 +1,9 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Drawer } from "@base-ui/react";
3
+ //#region src/components/dialog/dialog-close.tsx
4
+ var DialogClose = ({ ref, ...props }) => /* @__PURE__ */ jsx(Drawer.Close, {
5
+ ref,
6
+ ...props
7
+ });
8
+ //#endregion
9
+ export { DialogClose };
@@ -0,0 +1,12 @@
1
+ import { DrawerIndentBackground } from '@base-ui/react';
2
+ import type * as React from 'react';
3
+ /**
4
+ * Public Dialog.IndentBackground props.
5
+ *
6
+ * Pass-through to Base UI `Drawer.IndentBackground` with Vira-owned root class applied.
7
+ * Place before `Dialog.Indent` inside `Dialog.Provider` for the indent background layer.
8
+ *
9
+ * @default Base UI pass-through props keep upstream defaults.
10
+ */
11
+ export type DialogIndentBackgroundProps = DrawerIndentBackground.Props;
12
+ export declare const DialogIndentBackground: React.FC<DialogIndentBackgroundProps>;
@@ -0,0 +1,11 @@
1
+ import { clsx } from "../../core/clsx.js";
2
+ import dialog_module_default from "./dialog.module.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Drawer } from "@base-ui/react";
5
+ //#region src/components/dialog/dialog-indent-background.tsx
6
+ var DialogIndentBackground = ({ className, ...props }) => /* @__PURE__ */ jsx(Drawer.IndentBackground, {
7
+ ...props,
8
+ className: clsx(dialog_module_default.IndentBackground, className)
9
+ });
10
+ //#endregion
11
+ export { DialogIndentBackground };
@@ -0,0 +1,12 @@
1
+ import { DrawerIndent } from '@base-ui/react';
2
+ import type * as React from 'react';
3
+ /**
4
+ * Public Dialog.Indent props.
5
+ *
6
+ * Pass-through to Base UI `Drawer.Indent` with Vira-owned root class applied.
7
+ * Wrap app shell content inside `Dialog.Provider` to receive `data-active` when a sheet opens.
8
+ *
9
+ * @default Base UI pass-through props keep upstream defaults.
10
+ */
11
+ export type DialogIndentProps = DrawerIndent.Props;
12
+ export declare const DialogIndent: React.FC<DialogIndentProps>;
@@ -0,0 +1,11 @@
1
+ import { clsx } from "../../core/clsx.js";
2
+ import dialog_module_default from "./dialog.module.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Drawer } from "@base-ui/react";
5
+ //#region src/components/dialog/dialog-indent.tsx
6
+ var DialogIndent = ({ className, ...props }) => /* @__PURE__ */ jsx(Drawer.Indent, {
7
+ ...props,
8
+ className: clsx(dialog_module_default.Indent, className)
9
+ });
10
+ //#endregion
11
+ export { DialogIndent };
@@ -0,0 +1,66 @@
1
+ import { StackProps } from '..';
2
+ import type * as React from 'react';
3
+ /**
4
+ * Public Dialog.Sheet props.
5
+ *
6
+ * Renders the drawer portal, scrim, bottom `Surface` panel, title, description,
7
+ * and optional body content. Compose `Dialog.Close` inside `children` when a
8
+ * close control is needed.
9
+ *
10
+ * @default Base UI pass-through props keep upstream defaults.
11
+ */
12
+ export type DialogSheetProps = {
13
+ /**
14
+ * Accessible dialog title rendered as the modal heading.
15
+ */
16
+ title: React.ReactNode;
17
+ /**
18
+ * Supporting copy announced with the title.
19
+ *
20
+ * @default No description is rendered.
21
+ */
22
+ description?: React.ReactNode;
23
+ /**
24
+ * Optional body content rendered below the description.
25
+ *
26
+ * @default No extra body content is rendered.
27
+ */
28
+ children?: React.ReactNode;
29
+ /**
30
+ * Optional maximum width of the content area.
31
+ *
32
+ * @default `50ch`
33
+ */
34
+ maxContentWidth?: StackProps['maxWidth'];
35
+ /**
36
+ * Aligns the header content.
37
+ *
38
+ * @default `start`
39
+ */
40
+ headerAlign?: StackProps['hAlign'];
41
+ /**
42
+ * Whether to show the close button.
43
+ *
44
+ * @default false
45
+ */
46
+ showCloseButton?: boolean;
47
+ /**
48
+ * Centers the sheet horizontally within the viewport.
49
+ *
50
+ * @default false
51
+ */
52
+ fitContent?: boolean;
53
+ /**
54
+ * Whether to show the drag handle above the sheet header.
55
+ *
56
+ * @default true
57
+ */
58
+ showHandle?: boolean;
59
+ /**
60
+ * Maximum block size of the sheet panel.
61
+ *
62
+ * @default `97dvh`
63
+ */
64
+ maxHeight?: string;
65
+ };
66
+ export declare const DialogSheet: React.FC<DialogSheetProps>;
@@ -0,0 +1,80 @@
1
+ import { Stack } from "../stack/stack.js";
2
+ import dialog_module_default from "./dialog.module.js";
3
+ import { IconButton } from "../icon-button/icon-button.js";
4
+ import { Text } from "../text/text.js";
5
+ import { Icon } from "../icon/icon.js";
6
+ import { Surface } from "../surface/surface.js";
7
+ import { Title } from "../title/title.js";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { Drawer } from "@base-ui/react";
10
+ //#region src/components/dialog/dialog-sheet.tsx
11
+ var DialogSheet = ({ children, description, title, showCloseButton = false, fitContent = false, showHandle = true, headerAlign = "start", maxContentWidth = "50ch", maxHeight = "97dvh" }) => /* @__PURE__ */ jsxs(Drawer.Portal, { children: [/* @__PURE__ */ jsx(Drawer.Backdrop, { className: dialog_module_default.Backdrop }), /* @__PURE__ */ jsx(Drawer.Viewport, {
12
+ render: /* @__PURE__ */ jsx(Stack, {
13
+ vAlign: "end",
14
+ hPadding: "small",
15
+ vPadding: "small",
16
+ fillChildren: false,
17
+ hAlign: fitContent ? "center" : void 0
18
+ }),
19
+ className: dialog_module_default.Viewport,
20
+ children: /* @__PURE__ */ jsxs(Drawer.Popup, {
21
+ className: dialog_module_default.Popup,
22
+ style: { "--dialog-max-block-size": maxHeight },
23
+ render: /* @__PURE__ */ jsx(Surface, {
24
+ border: "top",
25
+ render: /* @__PURE__ */ jsx(Stack, { hAlign: "center" }),
26
+ color: 1,
27
+ vibrant: true,
28
+ radius: "large",
29
+ vPadding: ["medium", 0]
30
+ }),
31
+ children: [showHandle && /* @__PURE__ */ jsxs(Stack, {
32
+ className: dialog_module_default.Handle,
33
+ inline: true,
34
+ direction: "row",
35
+ vPadding: [0, "medium"],
36
+ columnGap: "small",
37
+ children: [
38
+ /* @__PURE__ */ jsx("div", { className: dialog_module_default.HandleShape }),
39
+ /* @__PURE__ */ jsx("div", { className: dialog_module_default.HandleShape }),
40
+ /* @__PURE__ */ jsx("div", { className: dialog_module_default.HandleShape })
41
+ ]
42
+ }), /* @__PURE__ */ jsxs(Stack, {
43
+ maxWidth: maxContentWidth,
44
+ rowGap: "large",
45
+ className: dialog_module_default.Body,
46
+ children: [/* @__PURE__ */ jsxs(Stack, {
47
+ className: dialog_module_default.Header,
48
+ hAlign: headerAlign,
49
+ hPadding: "medium",
50
+ fillChildren: false,
51
+ children: [/* @__PURE__ */ jsx(Drawer.Title, {
52
+ render: /* @__PURE__ */ jsx(Title, { level: "h4" }),
53
+ children: title
54
+ }), description && /* @__PURE__ */ jsx(Drawer.Description, {
55
+ render: /* @__PURE__ */ jsx(Text, {
56
+ tone: "muted",
57
+ render: /* @__PURE__ */ jsx("p", {})
58
+ }),
59
+ children: description
60
+ })]
61
+ }), /* @__PURE__ */ jsxs(Drawer.Content, {
62
+ render: /* @__PURE__ */ jsx(Stack, {
63
+ vAlign: "start",
64
+ fillChildren: false,
65
+ className: dialog_module_default.Content
66
+ }),
67
+ children: [showCloseButton && /* @__PURE__ */ jsx(Drawer.Close, {
68
+ className: dialog_module_default.CloseButton,
69
+ render: /* @__PURE__ */ jsx(IconButton, {
70
+ "aria-label": "Close dialog",
71
+ icon: /* @__PURE__ */ jsx(Icon, { name: "Xmark" }),
72
+ variant: "flat"
73
+ })
74
+ }), children]
75
+ })]
76
+ })]
77
+ })
78
+ })] });
79
+ //#endregion
80
+ export { DialogSheet };
@@ -0,0 +1,13 @@
1
+ import { DrawerTrigger } from '@base-ui/react';
2
+ import type * as React from 'react';
3
+ /**
4
+ * Public Dialog.Trigger props.
5
+ *
6
+ * Pass-through to Base UI `Drawer.Trigger`. Use `render` for the visible control
7
+ * (`Button`, `IconButton`, or another element) and set `nativeButton` when the
8
+ * rendered root is not a native `<button>`.
9
+ *
10
+ * @default Base UI pass-through props keep upstream defaults.
11
+ */
12
+ export type DialogTriggerProps = DrawerTrigger.Props;
13
+ export declare const DialogTrigger: React.FC<DialogTriggerProps>;
@@ -0,0 +1,9 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Drawer } from "@base-ui/react";
3
+ //#region src/components/dialog/dialog-trigger.tsx
4
+ var DialogTrigger = ({ ref, ...props }) => /* @__PURE__ */ jsx(Drawer.Trigger, {
5
+ ref,
6
+ ...props
7
+ });
8
+ //#endregion
9
+ export { DialogTrigger };
@@ -0,0 +1 @@
1
+ .viraui__dialog-module__Backdrop_xgFhs{position:fixed;inset:0;z-index:0;transition:opacity var(--duration-fast) var(--easing-standard);backdrop-filter:brightness(90%) blur(5px);opacity:1;&[data-ending-style],&[data-starting-style]{opacity:0}&[data-swiping]{opacity:calc(1 - var(--drawer-swipe-progress, 0));transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__dialog-module__Viewport_kmZN1{position:fixed;inset:0;z-index:4;pointer-events:none;touch-action:none}.viraui__dialog-module__Popup_5qIyj{--bleed:var(--space-wide);--peek:var(--space-medium);--stack-step:0.05;--stack-progress:clamp(0,var(--drawer-swipe-progress,0),1);--stack-peek-offset:max(0px,calc((var(--nested-drawers, 0) - var(--stack-progress)) * var(--peek)));--stack-scale-base:max(0,calc(1 - var(--nested-drawers, 0) * var(--stack-step)));--stack-scale:clamp(0,calc(var(--stack-scale-base) + var(--stack-step) * var(--stack-progress)),1);--stack-shrink:calc(1 - var(--stack-scale));--stack-height:max(0px,calc(var(--drawer-frontmost-height, var(--drawer-height, 0px)) - var(--bleed)));--translate-y:calc(var(--drawer-snap-point-offset, 0px) + var(--drawer-swipe-movement-y, 0px) - var(--stack-peek-offset) - var(--stack-shrink) * var(--stack-height));max-block-size:var(--dialog-max-block-size,97dvh);outline:none;pointer-events:auto;touch-action:none;height:var(--drawer-height,auto);transform-origin:50% calc(100% - var(--bleed));transition:opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance),height var(--duration-fast) var(--easing-entrance);transform:translateY(var(--translate-y)) scale(var(--stack-scale));&[data-nested-drawer-open]{height:calc(var(--stack-height) + var(--bleed));overflow:hidden}&[data-starting-style]{opacity:0}&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{transform:translateY(100%)}&[data-nested-drawer-swiping],&[data-swiping]{transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{opacity:1;transform:translateY(0)}}}.viraui__dialog-module__Handle_nd9SN{margin:0 auto}.viraui__dialog-module__HandleShape_mEg8R{inline-size:var(--space-x-small);block-size:var(--space-x-small);background-color:oklab(from var(--global-contrast) l a b/.3);border-radius:var(--radius-infinite)}.viraui__dialog-module__Header_WnBly{flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.viraui__dialog-module__Body_9-UgN{min-block-size:0}.viraui__dialog-module__Content_r8lJc{min-block-size:0;overflow:auto;overscroll-behavior:contain;touch-action:auto;padding-block-end:calc(env(safe-area-inset-bottom) + var(--space-medium));transition:opacity var(--duration-fast) var(--easing-standard);@media (prefers-reduced-motion:reduce){transition:none}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open] &{opacity:0}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open][data-nested-drawer-swiping] &{opacity:1}}.viraui__dialog-module__CloseButton_U-B1r.viraui__dialog-module__CloseButton_U-B1r{position:absolute;top:1rem;right:1rem}.viraui__dialog-module__IndentBackground_OEfbh{position:absolute;inset:0}.viraui__dialog-module__Indent_qfiNW{--indent-radius:calc(1rem * (1 - var(--drawer-swipe-progress)));--indent-transition:calc(1 - clamp(0, calc(var(--drawer-swipe-progress) * 100000), 1));transition:transform .4s cubic-bezier(.32,.72,0,1),border-radius .25s cubic-bezier(.32,.72,0,1);transition-duration:calc(.4s * var(--indent-transition)),calc(.25s * var(--indent-transition));transform-origin:center top;will-change:transform;&[data-active]{transform:scale(calc(.98 + (.02 * var(--drawer-swipe-progress)))) translateY(calc(.5rem * (1 - var(--drawer-swipe-progress))));border-top-left-radius:var(--indent-radius);border-top-right-radius:var(--indent-radius)}}
@@ -0,0 +1,28 @@
1
+ import { Drawer as PrimitiveDrawer, DrawerProvider, DrawerRoot } from '@base-ui/react';
2
+ import { DialogCloseProps } from './dialog-close';
3
+ import { DialogIndentProps } from './dialog-indent';
4
+ import { DialogIndentBackgroundProps } from './dialog-indent-background';
5
+ import { DialogSheetProps } from './dialog-sheet';
6
+ import { DialogTriggerProps } from './dialog-trigger';
7
+ import type * as React from 'react';
8
+ /**
9
+ * Public Dialog root props.
10
+ *
11
+ * Groups `Dialog.Trigger`, `Dialog.Sheet`, `Dialog.Close`, `Dialog.Provider`,
12
+ * `Dialog.Indent`, and `Dialog.IndentBackground` under Base UI Drawer parts.
13
+ *
14
+ * @default Base UI pass-through props keep upstream defaults.
15
+ */
16
+ export type DialogProps = DrawerRoot.Props;
17
+ export type DialogSnapPoint = DrawerRoot.SnapPoint;
18
+ export type DialogProviderProps = DrawerProvider.Props;
19
+ type DialogComponent = React.FC<DialogProps> & {
20
+ Trigger: React.FC<DialogTriggerProps>;
21
+ Sheet: React.FC<DialogSheetProps>;
22
+ Close: React.FC<DialogCloseProps>;
23
+ Provider: typeof PrimitiveDrawer.Provider;
24
+ Indent: React.FC<DialogIndentProps>;
25
+ IndentBackground: React.FC<DialogIndentBackgroundProps>;
26
+ };
27
+ export declare const Dialog: DialogComponent;
28
+ export {};
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "Dialog",
3
+ "summary": "Compound drawer sheet with `Dialog.Trigger`, `Dialog.Sheet`, `Dialog.Close`, and Base UI pass-through `Dialog.Provider`, `Dialog.Indent`, and `Dialog.IndentBackground` for app-shell indent effects.",
4
+ "whenToUse": [
5
+ "Focused tasks or confirmations that interrupt the current page without navigation",
6
+ "Short forms or read-only content that needs a modal layer above the app",
7
+ "Bottom sheets where swipe dismissal or snap points are useful (pass `snapPoints`, `snapPoint`/`onSnapPointChange`, or `defaultSnapPoint` directly on `Dialog`)",
8
+ "Drill-down sheet flows (for example settings sub-pages) by nesting a `Dialog` inside `Dialog.Sheet` children",
9
+ "App-shell indent effects by wrapping page content in `Dialog.Provider`, `Dialog.IndentBackground`, and `Dialog.Indent`"
10
+ ],
11
+ "whenNotToUse": [
12
+ "Small anchored hints or quick actions that should use Popover or Menu",
13
+ "Highly custom sheet anatomy that needs primitive-level composition",
14
+ "Centered modal layouts that should not slide from the screen edge"
15
+ ],
16
+ "accessibility": [
17
+ "Always pass `title`; add `description` when the heading alone is not enough context",
18
+ "Compose `Dialog.Close` with an accessible name when a visible close control is needed",
19
+ "Use `Dialog.Close` for footer actions that should dismiss the sheet"
20
+ ],
21
+ "antiPatterns": [
22
+ "Opening a sheet without `title` copy for assistive technologies",
23
+ "Relying only on backdrop press or swipe when a footer action is the primary close path",
24
+ "Using Dialog when a centered non-gesture modal is enough and a future Dialog primitive is available"
25
+ ],
26
+ "related": ["Surface", "Button", "IconButton", "Stack", "Elevator"]
27
+ }
@@ -0,0 +1,23 @@
1
+ import './dialog.css';
2
+ import { DialogClose } from "./dialog-close.js";
3
+ import { DialogIndent } from "./dialog-indent.js";
4
+ import { DialogIndentBackground } from "./dialog-indent-background.js";
5
+ import { DialogSheet } from "./dialog-sheet.js";
6
+ import { DialogTrigger } from "./dialog-trigger.js";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import { Drawer } from "@base-ui/react";
9
+ //#region src/components/dialog/dialog.tsx
10
+ var DialogRootComponent = ({ children, ...props }) => /* @__PURE__ */ jsx(Drawer.Root, {
11
+ ...props,
12
+ children
13
+ });
14
+ var Dialog = Object.assign(DialogRootComponent, {
15
+ Trigger: DialogTrigger,
16
+ Sheet: DialogSheet,
17
+ Close: DialogClose,
18
+ Provider: Drawer.Provider,
19
+ Indent: DialogIndent,
20
+ IndentBackground: DialogIndentBackground
21
+ });
22
+ //#endregion
23
+ export { Dialog };
@@ -0,0 +1,15 @@
1
+ var dialog_module_default = {
2
+ Backdrop: "viraui__dialog-module__Backdrop_xgFhs",
3
+ Viewport: "viraui__dialog-module__Viewport_kmZN1",
4
+ Popup: "viraui__dialog-module__Popup_5qIyj",
5
+ Handle: "viraui__dialog-module__Handle_nd9SN",
6
+ HandleShape: "viraui__dialog-module__HandleShape_mEg8R",
7
+ Header: "viraui__dialog-module__Header_WnBly",
8
+ Body: "viraui__dialog-module__Body_9-UgN",
9
+ Content: "viraui__dialog-module__Content_r8lJc",
10
+ CloseButton: "viraui__dialog-module__CloseButton_U-B1r",
11
+ IndentBackground: "viraui__dialog-module__IndentBackground_OEfbh",
12
+ Indent: "viraui__dialog-module__Indent_qfiNW"
13
+ };
14
+ //#endregion
15
+ export { dialog_module_default as default };
@@ -0,0 +1,12 @@
1
+ export { Dialog } from './dialog';
2
+ export type { DialogProps, DialogProviderProps, DialogSnapPoint } from './dialog';
3
+ export { DialogClose } from './dialog-close';
4
+ export type { DialogCloseProps } from './dialog-close';
5
+ export { DialogIndent } from './dialog-indent';
6
+ export type { DialogIndentProps } from './dialog-indent';
7
+ export { DialogIndentBackground } from './dialog-indent-background';
8
+ export type { DialogIndentBackgroundProps } from './dialog-indent-background';
9
+ export { DialogSheet } from './dialog-sheet';
10
+ export type { DialogSheetProps } from './dialog-sheet';
11
+ export { DialogTrigger } from './dialog-trigger';
12
+ export type { DialogTriggerProps } from './dialog-trigger';
@@ -11,10 +11,10 @@ var Elevator = ({ children, resting, hover, direction, shadowColor, extraShadow,
11
11
  const { intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
12
12
  const elevation = getElevationProps({
13
13
  resting,
14
- ...hover !== void 0 ? { hover } : {},
15
- ...direction !== void 0 ? { direction } : {},
16
- ...shadowColor !== void 0 ? { shadowColor } : {},
17
- ...extraShadow !== void 0 ? { extraShadow } : {}
14
+ hover,
15
+ direction,
16
+ shadowColor,
17
+ extraShadow
18
18
  });
19
19
  return Children.map(children, (child) => {
20
20
  if (!isValidElement(child)) return child;
@@ -0,0 +1,35 @@
1
+ import { FieldsetRoot } from '@base-ui/react';
2
+ import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
3
+ import type * as React from 'react';
4
+ /**
5
+ * Public Fieldset props.
6
+ *
7
+ * Thin wrapper around Base UI `Fieldset.Root` and `Fieldset.Legend` with shared Vira
8
+ * legend typography and optional group helper copy. Pass `render` to merge the fieldset
9
+ * root with `RadioGroup`, `CheckboxGroup`, or another compatible root.
10
+ *
11
+ * @default Base UI pass-through props keep upstream defaults.
12
+ */
13
+ export type FieldsetProps = FieldsetRoot.Props & IntrinsicViraProps & {
14
+ /**
15
+ * Visible legend copy rendered with shared internal `FieldLabel`.
16
+ *
17
+ * @default No legend is rendered.
18
+ */
19
+ label?: React.ReactNode;
20
+ /**
21
+ * Group helper copy rendered below the legend while valid.
22
+ * Requires a `Field.Root` ancestor for `FieldHelperCopy`.
23
+ *
24
+ * @default No description is rendered.
25
+ */
26
+ description?: React.ReactNode;
27
+ /**
28
+ * Group error copy rendered below the legend when invalid.
29
+ * Requires a `Field.Root` ancestor.
30
+ *
31
+ * @default No static error copy is rendered.
32
+ */
33
+ error?: React.ReactNode;
34
+ };
35
+ export declare const Fieldset: React.FC<FieldsetProps>;
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "Fieldset",
3
+ "summary": "Semantic field grouping with shared legend and optional group helper copy.",
4
+ "whenToUse": [
5
+ "Section legends for multiple related fields — billing details with Textfield, Textarea, or Select children",
6
+ "Choice groups that need a shared legend, group description, or group error — Field.Root > Fieldset render={<RadioGroup<Value> />} or render={<CheckboxGroup />}",
7
+ "Group validation and helper copy that require a Field.Root ancestor plus Fieldset description or error",
8
+ "Type-safe radio unions via RadioGroup<'ssd' | 'hdd'> merged through Fieldset render",
9
+ "Visual section chrome (legend + bordered content) for a form block"
10
+ ],
11
+ "whenNotToUse": [
12
+ "Every RadioGroup or CheckboxGroup by default — Fieldset is optional when options already have labels and no group copy is needed",
13
+ "Single Textfield, Textarea, Select, Radio, or Checkbox that already exposes its own label",
14
+ "Standalone RadioGroup or CheckboxGroup inside Field.Root with no shared legend — primitives are enough",
15
+ "Group legend, description, or validation on RadioGroup or CheckboxGroup props — those belong on Fieldset (with Field.Root when validating)"
16
+ ],
17
+ "accessibility": [
18
+ "Map visible label to Fieldset.Legend so grouped controls share an accessible section name",
19
+ "Keep group invalid state on Field.Root and surface group error copy through Fieldset error",
20
+ "Pass disabled to Fieldset.Root when the whole section should ignore interaction"
21
+ ],
22
+ "antiPatterns": [
23
+ "Wrapping Fieldset.Root in Stack render — breaks Base UI render merge with RadioGroup or CheckboxGroup",
24
+ "Expecting description or error on Fieldset without a Field.Root ancestor",
25
+ "Omitting RadioGroup<Value> generics when option values are a restricted union"
26
+ ],
27
+ "related": ["RadioGroup", "CheckboxGroup", "Textfield", "Textarea", "Select", "Stack"]
28
+ }
@@ -0,0 +1,30 @@
1
+ import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
2
+ import { Stack } from "../stack/stack.js";
3
+ import { FieldHelperCopy } from "../basic-input/field-helper-copy.js";
4
+ import { FieldLabel } from "../basic-input/field-label.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { Fieldset } from "@base-ui/react";
7
+ //#region src/components/fieldset/fieldset.tsx
8
+ var Fieldset$1 = ({ children, className, description, disabled, error, label, render, ...fieldsetRootProps }) => {
9
+ const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(fieldsetRootProps);
10
+ return /* @__PURE__ */ jsxs(Fieldset.Root, {
11
+ ...intrinsicAttributes,
12
+ ...componentProps,
13
+ className,
14
+ disabled,
15
+ render,
16
+ children: [/* @__PURE__ */ jsxs(Stack, {
17
+ vPadding: [0, "small"],
18
+ rowGap: "small",
19
+ children: [label ? /* @__PURE__ */ jsx(Fieldset.Legend, {
20
+ render: /* @__PURE__ */ jsx(FieldLabel, {}),
21
+ children: label
22
+ }) : null, description || error ? /* @__PURE__ */ jsx(FieldHelperCopy, {
23
+ description,
24
+ error
25
+ }) : null]
26
+ }), children]
27
+ });
28
+ };
29
+ //#endregion
30
+ export { Fieldset$1 as Fieldset };
@@ -0,0 +1,2 @@
1
+ export { Fieldset } from './fieldset';
2
+ export type { FieldsetProps } from './fieldset';
@@ -1 +1 @@
1
- .icon-module_Icon_6DoBq{display:inline-flex;flex:none;vertical-align:middle;& [fill]{fill:currentcolor}& [stroke]{stroke:currentcolor}& [fill=none][stroke]{fill:none;stroke:currentcolor}}
1
+ .viraui__icon-module__Icon_6DoBq{display:inline-flex;flex:none;vertical-align:middle;& [fill]{fill:currentcolor}& [stroke]{stroke:currentcolor}& [fill=none][stroke]{fill:none;stroke:currentcolor}}
@@ -1,3 +1,3 @@
1
- var icon_module_default = { Icon: "icon-module_Icon_6DoBq" };
1
+ var icon_module_default = { Icon: "viraui__icon-module__Icon_6DoBq" };
2
2
  //#endregion
3
3
  export { icon_module_default as default };
@@ -13,7 +13,7 @@ type AccessibleNameProps = {
13
13
  * Typed wrapper over `Button` for icon-only actions. Requires an accessible name
14
14
  * via `aria-label` or `aria-labelledby`.
15
15
  */
16
- export type IconButtonProps = Omit<ButtonProps, 'children' | 'iconPosition' | 'size'> & AccessibleNameProps & {
16
+ export type IconButtonProps = Omit<ButtonProps, 'children' | 'addonPosition' | 'size'> & AccessibleNameProps & {
17
17
  /**
18
18
  * Controls the visual button size.
19
19
  *
@@ -13,7 +13,7 @@
13
13
  "Keep the accessible name stable when loading state changes"
14
14
  ],
15
15
  "antiPatterns": [
16
- "Passing children or iconPosition — not part of the public API",
16
+ "Passing children or addonPosition — not part of the public API",
17
17
  "Using icon-only Button instead of IconButton"
18
18
  ],
19
19
  "related": ["Button", "Icon", "Spinner"]
@@ -2,7 +2,7 @@ import { Button } from "../button/button.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  //#region src/components/icon-button/icon-button.tsx
4
4
  var IconButton = ({ icon, size = "medium", ...props }) => /* @__PURE__ */ jsx(Button, {
5
- icon,
5
+ addon: icon,
6
6
  size,
7
7
  ...props
8
8
  });
@@ -1,6 +1,7 @@
1
1
  export * from './avatar';
2
2
  export * from './avatar-group';
3
3
  export * from './chip';
4
+ export * from './dialog';
4
5
  export * from './clamp-text';
5
6
  export * from './elevator';
6
7
  export * from './button';
@@ -12,12 +13,15 @@ export * from './textarea';
12
13
  export * from './slider';
13
14
  export * from './switch';
14
15
  export * from './checkbox';
16
+ export * from './fieldset';
15
17
  export * from './radio';
16
18
  export * from './select';
19
+ export * from './separator';
17
20
  export * from './icon';
18
21
  export * from './skeleton';
19
22
  export * from './stack';
20
23
  export * from './surface';
24
+ export * from './tabs';
21
25
  export * from './spinner';
22
26
  export * from './static-noise';
23
27
  export * from './progressive-blur';
@@ -1 +1 @@
1
- .linear-progress-module_LinearProgress_-KN0j{--linear-progress-track-size:var(--space-x-small);--linear-progress-track-background:var(--global-contrast);--linear-progress-indicator-color:var(--global-primary);& .linear-progress-module_Track_qUz8P{position:relative;overflow:hidden;block-size:var(--linear-progress-track-size);background:var(--linear-progress-track-background);border-radius:var(--radius-infinite)}& .linear-progress-module_Indicator_maaZF{block-size:100%;background:var(--linear-progress-indicator-color);border-radius:inherit;&[data-indeterminate]{position:absolute;inset:0;inline-size:100%;background:transparent;&:before{position:absolute;inset-block:0;inline-size:40%;background:var(--linear-progress-indicator-color);border-radius:inherit;animation:linear-progress-module_linear-progress-indeterminate_g0cSO 1.4s var(--easing-standard) infinite;content:""}}}}@keyframes linear-progress-module_linear-progress-indeterminate_g0cSO{0%{transform:translateX(-120%)}to{transform:translateX(260%)}}
1
+ .viraui__linear-progress-module__LinearProgress_-KN0j{--linear-progress-track-size:var(--space-x-small);--linear-progress-track-background:var(--global-contrast);--linear-progress-indicator-color:var(--global-primary);& .viraui__linear-progress-module__Track_qUz8P{position:relative;overflow:hidden;block-size:var(--linear-progress-track-size);background:var(--linear-progress-track-background);border-radius:var(--radius-infinite)}& .viraui__linear-progress-module__Indicator_maaZF{block-size:100%;background:var(--linear-progress-indicator-color);border-radius:inherit;&[data-indeterminate]{position:absolute;inset:0;inline-size:100%;background:transparent;&:before{position:absolute;inset-block:0;inline-size:40%;background:var(--linear-progress-indicator-color);border-radius:inherit;animation:viraui__linear-progress-module__linear-progress-indeterminate_g0cSO 1.4s var(--easing-standard) infinite;content:""}}}}@keyframes viraui__linear-progress-module__linear-progress-indeterminate_g0cSO{0%{transform:translateX(-120%)}to{transform:translateX(260%)}}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import './linear-progress.css';
3
2
  import { clsx } from "../../core/clsx.js";
4
3
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";