@viraui/react 0.0.25 → 0.0.27

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 (186) hide show
  1. package/dist/catalog.json +116 -68
  2. package/dist/components/accordion/accordion-item.d.ts +58 -0
  3. package/dist/components/accordion/accordion-item.js +65 -0
  4. package/dist/components/accordion/accordion.css +1 -0
  5. package/dist/components/accordion/accordion.d.ts +26 -0
  6. package/dist/components/accordion/accordion.guide.json +30 -0
  7. package/dist/components/accordion/accordion.js +22 -0
  8. package/dist/components/accordion/accordion.module.js +17 -0
  9. package/dist/components/accordion/index.d.ts +3 -0
  10. package/dist/components/avatar/avatar.css +1 -1
  11. package/dist/components/avatar/avatar.guide.json +25 -1
  12. package/dist/components/avatar/avatar.js +1 -1
  13. package/dist/components/avatar/avatar.module.js +8 -4
  14. package/dist/components/avatar-group/avatar-group.css +2 -2
  15. package/dist/components/avatar-group/avatar-group.guide.json +27 -1
  16. package/dist/components/avatar-group/avatar-group.js +2 -2
  17. package/dist/components/avatar-group/avatar-group.module.js +12 -6
  18. package/dist/components/basic-input/basic-input.css +1 -1
  19. package/dist/components/basic-input/basic-input.js +3 -3
  20. package/dist/components/basic-input/basic-input.module.js +4 -2
  21. package/dist/components/basic-input/field-label.css +1 -1
  22. package/dist/components/basic-input/field-label.module.js +4 -2
  23. package/dist/components/bleed/bleed.css +1 -0
  24. package/dist/components/bleed/bleed.d.ts +26 -0
  25. package/dist/components/bleed/bleed.guide.json +39 -0
  26. package/dist/components/bleed/bleed.js +24 -0
  27. package/dist/components/bleed/bleed.module.js +5 -0
  28. package/dist/components/bleed/index.d.ts +2 -0
  29. package/dist/components/button/button.css +1 -1
  30. package/dist/components/button/button.guide.json +33 -3
  31. package/dist/components/button/button.js +1 -1
  32. package/dist/components/button/button.module.js +8 -4
  33. package/dist/components/checkbox/checkbox-group.js +2 -2
  34. package/dist/components/checkbox/checkbox.css +1 -1
  35. package/dist/components/checkbox/checkbox.js +1 -1
  36. package/dist/components/checkbox/checkbox.module.js +16 -8
  37. package/dist/components/chip/chip.css +1 -1
  38. package/dist/components/chip/chip.guide.json +26 -1
  39. package/dist/components/chip/chip.module.js +10 -5
  40. package/dist/components/clamp-text/clamp-text.css +1 -1
  41. package/dist/components/clamp-text/clamp-text.guide.json +15 -1
  42. package/dist/components/clamp-text/clamp-text.js +1 -1
  43. package/dist/components/clamp-text/clamp-text.module.js +4 -2
  44. package/dist/components/dialog/dialog-close.js +2 -2
  45. package/dist/components/dialog/dialog-indent-background.js +2 -2
  46. package/dist/components/dialog/dialog-indent.js +2 -2
  47. package/dist/components/dialog/dialog-sheet.js +3 -3
  48. package/dist/components/dialog/dialog-trigger.js +2 -2
  49. package/dist/components/dialog/dialog.css +1 -1
  50. package/dist/components/dialog/dialog.d.ts +5 -4
  51. package/dist/components/dialog/dialog.guide.json +15 -1
  52. package/dist/components/dialog/dialog.js +4 -3
  53. package/dist/components/dialog/dialog.module.js +24 -12
  54. package/dist/components/elevator/elevator.js +2 -2
  55. package/dist/components/fieldset/fieldset.js +1 -1
  56. package/dist/components/icon/icon.module.js +4 -2
  57. package/dist/components/icon-button/icon-button.js +2 -2
  58. package/dist/components/index.d.ts +21 -13
  59. package/dist/components/linear-progress/linear-progress.css +1 -1
  60. package/dist/components/linear-progress/linear-progress.guide.json +14 -1
  61. package/dist/components/linear-progress/linear-progress.js +1 -1
  62. package/dist/components/linear-progress/linear-progress.module.js +8 -4
  63. package/dist/components/masonry/masonry.css +1 -1
  64. package/dist/components/masonry/masonry.guide.json +42 -1
  65. package/dist/components/masonry/masonry.js +3 -3
  66. package/dist/components/masonry/masonry.module.js +6 -3
  67. package/dist/components/meter/index.d.ts +2 -0
  68. package/dist/components/meter/meter.css +1 -0
  69. package/dist/components/meter/meter.d.ts +44 -0
  70. package/dist/components/meter/meter.guide.json +39 -0
  71. package/dist/components/meter/meter.js +59 -0
  72. package/dist/components/meter/meter.module.js +11 -0
  73. package/dist/components/popover/index.d.ts +4 -0
  74. package/dist/components/popover/popover-sheet.d.ts +65 -0
  75. package/dist/components/popover/popover-sheet.js +79 -0
  76. package/dist/components/popover/popover.css +1 -0
  77. package/dist/components/popover/popover.d.ts +74 -0
  78. package/dist/components/popover/popover.guide.json +28 -0
  79. package/dist/components/popover/popover.js +23 -0
  80. package/dist/components/popover/popover.module.js +13 -0
  81. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  82. package/dist/components/progressive-blur/progressive-blur.guide.json +15 -1
  83. package/dist/components/progressive-blur/progressive-blur.js +1 -1
  84. package/dist/components/progressive-blur/progressive-blur.module.js +6 -3
  85. package/dist/components/radio/radio-group.d.ts +1 -1
  86. package/dist/components/radio/radio-group.js +2 -2
  87. package/dist/components/radio/radio.css +1 -1
  88. package/dist/components/radio/radio.js +1 -1
  89. package/dist/components/radio/radio.module.js +8 -4
  90. package/dist/components/select/select-group.js +1 -1
  91. package/dist/components/select/select-option.js +3 -3
  92. package/dist/components/select/select.css +1 -1
  93. package/dist/components/select/select.guide.json +26 -1
  94. package/dist/components/select/select.js +5 -4
  95. package/dist/components/select/select.module.js +36 -18
  96. package/dist/components/separator/separator.css +1 -1
  97. package/dist/components/separator/separator.js +1 -1
  98. package/dist/components/separator/separator.module.js +4 -2
  99. package/dist/components/shimmer/shimmer.css +1 -1
  100. package/dist/components/shimmer/shimmer.guide.json +39 -1
  101. package/dist/components/shimmer/shimmer.js +4 -4
  102. package/dist/components/shimmer/shimmer.module.js +4 -2
  103. package/dist/components/skeleton/skeleton.css +1 -1
  104. package/dist/components/skeleton/skeleton.guide.json +50 -1
  105. package/dist/components/skeleton/skeleton.js +5 -5
  106. package/dist/components/skeleton/skeleton.module.js +4 -2
  107. package/dist/components/slider/slider.css +1 -1
  108. package/dist/components/slider/slider.guide.json +20 -1
  109. package/dist/components/slider/slider.js +1 -1
  110. package/dist/components/slider/slider.module.js +20 -10
  111. package/dist/components/spinner/spinner.css +1 -1
  112. package/dist/components/spinner/spinner.guide.json +15 -1
  113. package/dist/components/spinner/spinner.module.js +6 -3
  114. package/dist/components/stack/stack.css +1 -1
  115. package/dist/components/stack/stack.guide.json +77 -1
  116. package/dist/components/stack/stack.js +8 -8
  117. package/dist/components/stack/stack.module.js +4 -2
  118. package/dist/components/static-noise/static-noise.module.js +6 -3
  119. package/dist/components/surface/surface-radius-context.js +7 -7
  120. package/dist/components/surface/surface.css +1 -1
  121. package/dist/components/surface/surface.d.ts +1 -1
  122. package/dist/components/surface/surface.guide.json +85 -1
  123. package/dist/components/surface/surface.js +6 -6
  124. package/dist/components/surface/surface.module.js +4 -2
  125. package/dist/components/switch/switch.css +1 -1
  126. package/dist/components/switch/switch.guide.json +32 -1
  127. package/dist/components/switch/switch.js +1 -1
  128. package/dist/components/switch/switch.module.js +10 -5
  129. package/dist/components/tabs/tabs-indicator.js +2 -2
  130. package/dist/components/tabs/tabs-list.js +2 -2
  131. package/dist/components/tabs/tabs-panel.js +2 -2
  132. package/dist/components/tabs/tabs-tab.js +2 -2
  133. package/dist/components/tabs/tabs-viewport.js +2 -2
  134. package/dist/components/tabs/tabs.css +1 -1
  135. package/dist/components/tabs/tabs.guide.json +8 -1
  136. package/dist/components/tabs/tabs.js +2 -2
  137. package/dist/components/tabs/tabs.module.js +16 -8
  138. package/dist/components/text/text.css +1 -1
  139. package/dist/components/text/text.guide.json +125 -1
  140. package/dist/components/text/text.js +11 -11
  141. package/dist/components/text/text.module.js +4 -2
  142. package/dist/components/textarea/textarea.css +1 -1
  143. package/dist/components/textarea/textarea.guide.json +14 -1
  144. package/dist/components/textarea/textarea.js +1 -1
  145. package/dist/components/textarea/textarea.module.js +10 -5
  146. package/dist/components/textfield/textfield.css +1 -1
  147. package/dist/components/textfield/textfield.guide.json +20 -1
  148. package/dist/components/textfield/textfield.js +1 -1
  149. package/dist/components/textfield/textfield.module.js +14 -7
  150. package/dist/components/title/title.css +1 -1
  151. package/dist/components/title/title.guide.json +123 -1
  152. package/dist/components/title/title.js +11 -11
  153. package/dist/components/title/title.module.js +4 -2
  154. package/dist/components/toast/toast-action.js +2 -2
  155. package/dist/components/toast/toast-banner.js +1 -1
  156. package/dist/components/toast/toast-viewport.js +2 -2
  157. package/dist/components/toast/toast.css +1 -1
  158. package/dist/components/toast/toast.module.js +8 -4
  159. package/dist/components/toggle-button/index.d.ts +2 -0
  160. package/dist/components/toggle-button/toggle-button.d.ts +39 -0
  161. package/dist/components/toggle-button/toggle-button.guide.json +25 -0
  162. package/dist/components/toggle-button/toggle-button.js +25 -0
  163. package/dist/components/toggle-group/index.d.ts +2 -0
  164. package/dist/components/toggle-group/toggle-group.d.ts +11 -0
  165. package/dist/components/toggle-group/toggle-group.guide.json +26 -0
  166. package/dist/components/toggle-group/toggle-group.js +15 -0
  167. package/dist/components/tooltip/index.d.ts +6 -0
  168. package/dist/components/tooltip/tooltip-content.d.ts +15 -0
  169. package/dist/components/tooltip/tooltip-content.js +32 -0
  170. package/dist/components/tooltip/tooltip.css +1 -0
  171. package/dist/components/tooltip/tooltip.d.ts +13 -0
  172. package/dist/components/tooltip/tooltip.guide.json +25 -0
  173. package/dist/components/tooltip/tooltip.js +20 -0
  174. package/dist/components/tooltip/tooltip.module.js +11 -0
  175. package/dist/components/typewriter/index.d.ts +3 -0
  176. package/dist/components/typewriter/typewriter.css +1 -0
  177. package/dist/components/typewriter/typewriter.d.ts +68 -0
  178. package/dist/components/typewriter/typewriter.guide.json +39 -0
  179. package/dist/components/typewriter/typewriter.js +105 -0
  180. package/dist/components/typewriter/typewriter.module.js +18 -0
  181. package/dist/components/typewriter/typewriter.utils.d.ts +23 -0
  182. package/dist/components/typewriter/typewriter.utils.js +100 -0
  183. package/dist/index.js +26 -16
  184. package/dist/preflight-surface.json +17 -4
  185. package/dist/preflight.css +1 -1
  186. package/package.json +6 -6
@@ -23,5 +23,19 @@
23
23
  "Relying only on backdrop press or swipe when a footer action is the primary close path",
24
24
  "Using Dialog when a centered non-gesture modal is enough and a future Dialog primitive is available"
25
25
  ],
26
- "related": ["Surface", "Button", "IconButton", "Stack", "Elevator"]
26
+ "related": ["Surface", "Button", "IconButton", "Stack", "Elevator"],
27
+ "properties": {
28
+ "react": {
29
+ "Sheet.maxHeight": {
30
+ "description": "Maximum block size of the sheet panel.",
31
+ "refCss": "max-block-size"
32
+ }
33
+ },
34
+ "css": {
35
+ "max-block-size": {
36
+ "description": "Max block size of Dialog.Sheet popup root.",
37
+ "refReact": "Sheet.maxHeight"
38
+ }
39
+ }
40
+ }
27
41
  }
@@ -7,15 +7,16 @@ import { DialogTrigger } from "./dialog-trigger.js";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  import { Drawer } from "@base-ui/react";
9
9
  //#region src/components/dialog/dialog.tsx
10
- var DialogRootComponent = ({ children, ...props }) => /* @__PURE__ */ jsx(Drawer.Root, {
11
- ...props,
10
+ var { Portal: _DialogPortal, Backdrop: _DialogBackdrop, Viewport: _DialogViewport, Popup: _DialogPopup, Title: _DialogTitle, Description: _DialogDescription, Content: _DialogContent, SwipeArea: _DialogSwipeArea, VirtualKeyboardProvider: _DialogVirtualKeyboardProvider, createHandle: _DialogCreateHandle, Handle: _DialogHandle, Root: _DialogRoot, ...primitiveDrawer } = Drawer;
11
+ var DialogRootComponent = ({ children, ...otherProps }) => /* @__PURE__ */ jsx(Drawer.Root, {
12
+ ...otherProps,
12
13
  children
13
14
  });
14
15
  var Dialog = Object.assign(DialogRootComponent, {
16
+ ...primitiveDrawer,
15
17
  Trigger: DialogTrigger,
16
18
  Sheet: DialogSheet,
17
19
  Close: DialogClose,
18
- Provider: Drawer.Provider,
19
20
  Indent: DialogIndent,
20
21
  IndentBackground: DialogIndentBackground
21
22
  });
@@ -1,15 +1,27 @@
1
+ //#region src/components/dialog/dialog.module.css
2
+ var Backdrop = "viraui__dialog-module__Backdrop_xgFhs";
3
+ var Viewport = "viraui__dialog-module__Viewport_kmZN1";
4
+ var Popup = "viraui__dialog-module__Popup_5qIyj";
5
+ var Handle = "viraui__dialog-module__Handle_nd9SN";
6
+ var HandleShape = "viraui__dialog-module__HandleShape_mEg8R";
7
+ var Header = "viraui__dialog-module__Header_WnBly";
8
+ var Body = "viraui__dialog-module__Body_9-UgN";
9
+ var Content = "viraui__dialog-module__Content_r8lJc";
10
+ var CloseButton = "viraui__dialog-module__CloseButton_U-B1r";
11
+ var IndentBackground = "viraui__dialog-module__IndentBackground_OEfbh";
12
+ var Indent = "viraui__dialog-module__Indent_qfiNW";
1
13
  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"
14
+ Backdrop,
15
+ Viewport,
16
+ Popup,
17
+ Handle,
18
+ HandleShape,
19
+ Header,
20
+ Body,
21
+ Content,
22
+ CloseButton,
23
+ IndentBackground,
24
+ Indent
13
25
  };
14
26
  //#endregion
15
- export { dialog_module_default as default };
27
+ export { Backdrop, Body, CloseButton, Content, Handle, HandleShape, Header, Indent, IndentBackground, Popup, Viewport, dialog_module_default as default };
@@ -1,5 +1,5 @@
1
1
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
2
- import "../../core/elevation/elevation-types.js";
2
+ import { ELEVATION_DEFAULTS } from "../../core/elevation/elevation-types.js";
3
3
  import { getElevationProps } from "../../core/elevation/get-elevation-props.js";
4
4
  import { Children, cloneElement, isValidElement } from "react";
5
5
  //#region src/components/elevator/elevator.tsx
@@ -26,4 +26,4 @@ var Elevator = ({ children, resting, hover, direction, shadowColor, extraShadow,
26
26
  });
27
27
  };
28
28
  //#endregion
29
- export { Elevator };
29
+ export { ELEVATION_DEFAULTS, Elevator, getElevationProps };
@@ -1,7 +1,7 @@
1
1
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
2
- import { Stack } from "../stack/stack.js";
3
2
  import { FieldHelperCopy } from "../basic-input/field-helper-copy.js";
4
3
  import { FieldLabel } from "../basic-input/field-label.js";
4
+ import { Stack } from "../stack/stack.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Fieldset } from "@base-ui/react";
7
7
  //#region src/components/fieldset/fieldset.tsx
@@ -1,3 +1,5 @@
1
- var icon_module_default = { Icon: "viraui__icon-module__Icon_6DoBq" };
1
+ //#region src/components/icon/icon.module.css
2
+ var Icon = "viraui__icon-module__Icon_6DoBq";
3
+ var icon_module_default = { Icon };
2
4
  //#endregion
3
- export { icon_module_default as default };
5
+ export { Icon, icon_module_default as default };
@@ -1,10 +1,10 @@
1
1
  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
- var IconButton = ({ icon, size = "medium", ...props }) => /* @__PURE__ */ jsx(Button, {
4
+ var IconButton = ({ icon, size = "medium", ...otherProps }) => /* @__PURE__ */ jsx(Button, {
5
5
  addon: icon,
6
6
  size,
7
- ...props
7
+ ...otherProps
8
8
  });
9
9
  //#endregion
10
10
  export { IconButton };
@@ -1,31 +1,39 @@
1
+ export * from './accordion';
1
2
  export * from './avatar';
2
3
  export * from './avatar-group';
4
+ export * from './bleed';
5
+ export * from './button';
6
+ export * from './checkbox';
3
7
  export * from './chip';
4
- export * from './dialog';
5
8
  export * from './clamp-text';
9
+ export * from './dialog';
6
10
  export * from './elevator';
7
- export * from './button';
11
+ export * from './fieldset';
12
+ export * from './icon';
8
13
  export * from './icon-button';
9
14
  export * from './linear-progress';
10
15
  export * from './masonry';
11
- export * from './textfield';
12
- export * from './textarea';
13
- export * from './slider';
14
- export * from './switch';
15
- export * from './checkbox';
16
- export * from './fieldset';
16
+ export * from './meter';
17
+ export * from './popover';
18
+ export * from './progressive-blur';
17
19
  export * from './radio';
18
20
  export * from './select';
19
21
  export * from './separator';
20
22
  export * from './shimmer';
21
- export * from './icon';
22
23
  export * from './skeleton';
24
+ export * from './slider';
25
+ export * from './spinner';
23
26
  export * from './stack';
27
+ export * from './static-noise';
24
28
  export * from './surface';
29
+ export * from './switch';
25
30
  export * from './tabs';
26
- export * from './toast';
27
- export * from './spinner';
28
- export * from './static-noise';
29
- export * from './progressive-blur';
30
31
  export * from './text';
32
+ export * from './textarea';
33
+ export * from './textfield';
31
34
  export * from './title';
35
+ export * from './toast';
36
+ export * from './toggle-button';
37
+ export * from './toggle-group';
38
+ export * from './typewriter';
39
+ export * from './tooltip';
@@ -1 +1 @@
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:#0000;&: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
+ .viraui__linear-progress-module__LinearProgress_-KN0j{--vui-linear-progress-track-size:var(--space-x-small);--vui-linear-progress-track-background:var(--global-contrast);--vui-linear-progress-indicator-color:var(--global-primary);& .viraui__linear-progress-module__Track_qUz8P{position:relative;overflow:hidden;block-size:var(--vui-linear-progress-track-size);background:var(--vui-linear-progress-track-background);border-radius:var(--radius-infinite)}& .viraui__linear-progress-module__Indicator_maaZF{block-size:100%;background:var(--vui-linear-progress-indicator-color);border-radius:inherit;&[data-indeterminate]{position:absolute;inset:0;inline-size:100%;background:#0000;&:before{position:absolute;inset-block:0;inline-size:40%;background:var(--vui-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%)}}
@@ -23,5 +23,18 @@
23
23
  "Do not model disabled progress; Base UI Progress does not expose a disabled state.",
24
24
  "Do not hide the task label when multiple progress indicators are visible."
25
25
  ],
26
- "related": ["Slider", "Spinner", "Skeleton", "Text"]
26
+ "related": ["Slider", "Spinner", "Skeleton", "Text"],
27
+ "properties": {
28
+ "css": {
29
+ "track-size": {
30
+ "description": "Progress track thickness on the root."
31
+ },
32
+ "track-background": {
33
+ "description": "Progress track background color."
34
+ },
35
+ "indicator-color": {
36
+ "description": "Determinate progress indicator color."
37
+ }
38
+ }
39
+ }
27
40
  }
@@ -1,9 +1,9 @@
1
1
  import './linear-progress.css';
2
2
  import { clsx } from "../../core/clsx.js";
3
3
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
4
- import { Stack } from "../stack/stack.js";
5
4
  import { Text } from "../text/text.js";
6
5
  import { FieldLabel } from "../basic-input/field-label.js";
6
+ import { Stack } from "../stack/stack.js";
7
7
  import linear_progress_module_default from "./linear-progress.module.js";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { Progress } from "@base-ui/react/progress";
@@ -1,8 +1,12 @@
1
+ //#region src/components/linear-progress/linear-progress.module.css
2
+ var LinearProgress = "viraui__linear-progress-module__LinearProgress_-KN0j";
3
+ var Track = "viraui__linear-progress-module__Track_qUz8P";
4
+ var Indicator = "viraui__linear-progress-module__Indicator_maaZF";
1
5
  var linear_progress_module_default = {
2
- LinearProgress: "viraui__linear-progress-module__LinearProgress_-KN0j",
6
+ LinearProgress,
3
7
  "linear-progress-indeterminate": "viraui__linear-progress-module__linear-progress-indeterminate_g0cSO",
4
- Track: "viraui__linear-progress-module__Track_qUz8P",
5
- Indicator: "viraui__linear-progress-module__Indicator_maaZF"
8
+ Track,
9
+ Indicator
6
10
  };
7
11
  //#endregion
8
- export { linear_progress_module_default as default };
12
+ export { Indicator, LinearProgress, Track, linear_progress_module_default as default };
@@ -1 +1 @@
1
- .viraui__masonry-module__Masonry_l7c8U{--masonry-gap:var(--space-large);--masonry-column-fill:balance;--masonry-column-rule-color:var(--global-contrast);display:block;column-gap:var(--masonry-gap);column-fill:var(--masonry-column-fill);column-rule-color:var(--masonry-column-rule-color);columns:var(--masonry-column-width,auto) var(--masonry-column-count,auto)}.viraui__masonry-module__Item_ywXwo{display:block;break-inside:avoid;margin:0;padding-block-end:var(--masonry-gap);&[data-masonry-item-span-all=true]{column-span:all}}
1
+ .viraui__masonry-module__Masonry_l7c8U{--vui-masonry-gap:var(--space-large);--vui-masonry-column-fill:balance;--vui-masonry-column-rule-color:var(--global-contrast);display:block;column-gap:var(--vui-masonry-gap);column-fill:var(--vui-masonry-column-fill);column-rule-color:var(--vui-masonry-column-rule-color);columns:var(--vui-masonry-column-width,auto) var(--vui-masonry-column-count,auto)}.viraui__masonry-module__Item_ywXwo{display:block;break-inside:avoid;margin:0;padding-block-end:var(--vui-masonry-gap);&[data-masonry-item-span-all=true]{column-span:all}}
@@ -20,5 +20,46 @@
20
20
  "Treating CSS columns as a true interactive grid with predictable left-to-right keyboard traversal",
21
21
  "Using arbitrary child margins instead of the component gap contract for item spacing"
22
22
  ],
23
- "related": ["Stack", "Surface", "Text"]
23
+ "related": ["Stack", "Surface", "Text"],
24
+ "properties": {
25
+ "react": {
26
+ "gap": {
27
+ "description": "Gap between columns and block-end spacing on each item.",
28
+ "refCss": "gap"
29
+ },
30
+ "columnFill": {
31
+ "description": "How the browser balances content across columns.",
32
+ "refCss": "column-fill"
33
+ },
34
+ "columnWidth": {
35
+ "description": "CSS column-width override; takes precedence over columnCount.",
36
+ "refCss": "column-width"
37
+ },
38
+ "columnCount": {
39
+ "description": "CSS column-count when columnWidth is not set.",
40
+ "refCss": "column-count"
41
+ }
42
+ },
43
+ "css": {
44
+ "gap": {
45
+ "description": "Column gap and item block-end spacing.",
46
+ "refReact": "gap"
47
+ },
48
+ "column-fill": {
49
+ "description": "Column-fill algorithm on the root.",
50
+ "refReact": "columnFill"
51
+ },
52
+ "column-width": {
53
+ "description": "Width-based multi-column layout.",
54
+ "refReact": "columnWidth"
55
+ },
56
+ "column-count": {
57
+ "description": "Count-based multi-column layout.",
58
+ "refReact": "columnCount"
59
+ },
60
+ "column-rule-color": {
61
+ "description": "Color of the column rule between columns."
62
+ }
63
+ }
64
+ }
24
65
  }
@@ -10,9 +10,9 @@ var MasonryRoot = ({ children, className, columnCount = 4, columnFill = "balance
10
10
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
11
11
  const usesColumnWidth = columnWidth !== void 0;
12
12
  const dynamicStyle = {
13
- "--masonry-gap": resolveThemeValue(gap, "space", "var(--space-large)"),
14
- "--masonry-column-fill": columnFill,
15
- ...usesColumnWidth ? { "--masonry-column-width": columnWidth } : { "--masonry-column-count": `${columnCount}` },
13
+ "--vui-masonry-gap": resolveThemeValue(gap, "space", "var(--space-large)"),
14
+ "--vui-masonry-column-fill": columnFill,
15
+ ...usesColumnWidth ? { "--vui-masonry-column-width": columnWidth } : { "--vui-masonry-column-count": `${columnCount}` },
16
16
  columnRuleWidth,
17
17
  columnRuleStyle,
18
18
  ...style
@@ -1,6 +1,9 @@
1
+ //#region src/components/masonry/masonry.module.css
2
+ var Masonry = "viraui__masonry-module__Masonry_l7c8U";
3
+ var Item = "viraui__masonry-module__Item_ywXwo";
1
4
  var masonry_module_default = {
2
- Masonry: "viraui__masonry-module__Masonry_l7c8U",
3
- Item: "viraui__masonry-module__Item_ywXwo"
5
+ Masonry,
6
+ Item
4
7
  };
5
8
  //#endregion
6
- export { masonry_module_default as default };
9
+ export { Item, Masonry, masonry_module_default as default };
@@ -0,0 +1,2 @@
1
+ export { Meter } from './meter';
2
+ export type { MeterProps } from './meter';
@@ -0,0 +1 @@
1
+ .viraui__meter-module__Meter_YRI7d{--vui-meter-track-size:var(--space-x-small);--vui-meter-track-background:var(--global-contrast);--vui-meter-indicator-color:var(--global-primary);& .viraui__meter-module__Track_uF9wy{position:relative;overflow:hidden;block-size:var(--vui-meter-track-size);background:var(--vui-meter-track-background);border-radius:var(--radius-infinite)}& .viraui__meter-module__Indicator_dNjqU{block-size:100%;background:var(--vui-meter-indicator-color);border-radius:inherit}}
@@ -0,0 +1,44 @@
1
+ import { MeterRoot } from '@base-ui/react';
2
+ import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
3
+ import type * as React from 'react';
4
+ /**
5
+ * Public Meter props.
6
+ *
7
+ * Includes Base UI meter root props such as `value`, `min`, `max`, `format`,
8
+ * and `getAriaValueText`, plus optional label, description, and value display.
9
+ *
10
+ * @default Base UI pass-through props keep upstream defaults.
11
+ */
12
+ export type MeterProps = MeterRoot.Props & {
13
+ /**
14
+ * Adds `data-grow="false"` to the meter root when false.
15
+ *
16
+ * @default The meter root does not render a grow attribute.
17
+ */
18
+ grow?: IntrinsicViraProps['grow'];
19
+ /**
20
+ * Adds `data-shrink="false"` to the meter root when false.
21
+ *
22
+ * @default The meter root does not render a shrink attribute.
23
+ */
24
+ shrink?: IntrinsicViraProps['shrink'];
25
+ /**
26
+ * Visible label rendered through `Meter.Label` with shared internal `FieldLabel`.
27
+ *
28
+ * @default No label is rendered.
29
+ */
30
+ label?: React.ReactNode;
31
+ /**
32
+ * Static helper copy rendered with `Text` below the meter track.
33
+ *
34
+ * @default No description is rendered.
35
+ */
36
+ description?: React.ReactNode;
37
+ /**
38
+ * Renders the formatted current value via `Meter.Value` and `Text`.
39
+ *
40
+ * @default false
41
+ */
42
+ showValue?: boolean;
43
+ };
44
+ export declare const Meter: React.FC<MeterProps>;
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "Meter",
3
+ "summary": "Shows a determinate metric in a compact horizontal track for static capacity, level, or score values.",
4
+ "whenToUse": [
5
+ "Use for storage usage, battery level, capacity, or score within a known range.",
6
+ "Use with a label when the metric needs a visible name.",
7
+ "Use with `showValue` when the formatted value should appear beside the label."
8
+ ],
9
+ "whenNotToUse": [
10
+ "Use LinearProgress for in-progress tasks or indeterminate work.",
11
+ "Use Slider when the user needs to choose or adjust a value.",
12
+ "Use Spinner for a small standalone loading affordance without metric context."
13
+ ],
14
+ "accessibility": [
15
+ "Provide a visible `label` or an accessible name through `aria-label` / `aria-labelledby` when the metric is not otherwise clear.",
16
+ "Keep `value` numeric and within `min` / `max` for accurate `aria-valuenow` semantics.",
17
+ "Use `description` for supplementary context that should not replace the accessible name."
18
+ ],
19
+ "antiPatterns": [
20
+ "Do not use Meter as an interactive value control.",
21
+ "Do not use Meter for indeterminate or in-progress work.",
22
+ "Do not hide the metric label when multiple meters are visible.",
23
+ "Do not model invalid or disabled meter state; Base UI Meter does not expose those states."
24
+ ],
25
+ "related": ["LinearProgress", "Slider", "Text"],
26
+ "properties": {
27
+ "css": {
28
+ "track-size": {
29
+ "description": "Meter track thickness on the root."
30
+ },
31
+ "track-background": {
32
+ "description": "Meter track background color."
33
+ },
34
+ "indicator-color": {
35
+ "description": "Determinate meter indicator color."
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,59 @@
1
+ import './meter.css';
2
+ import { clsx } from "../../core/clsx.js";
3
+ import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
4
+ import { Text } from "../text/text.js";
5
+ import { FieldLabel } from "../basic-input/field-label.js";
6
+ import { Stack } from "../stack/stack.js";
7
+ import meter_module_default from "./meter.module.js";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { Meter } from "@base-ui/react";
10
+ //#region src/components/meter/meter.tsx
11
+ var Meter$1 = ({ className, description, label, showValue = false, value, ...otherProps }) => {
12
+ const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
13
+ return /* @__PURE__ */ jsxs(Meter.Root, {
14
+ ...componentProps,
15
+ ...intrinsicAttributes,
16
+ className: clsx(meter_module_default.Meter, className),
17
+ value,
18
+ render: /* @__PURE__ */ jsx(Stack, {
19
+ direction: "column",
20
+ fillChildren: false,
21
+ rowGap: "small",
22
+ columnGap: "x-small"
23
+ }),
24
+ children: [
25
+ (label || showValue) && /* @__PURE__ */ jsxs(Stack, {
26
+ direction: "row",
27
+ fillChildren: false,
28
+ columnGap: "small",
29
+ vAlign: "center",
30
+ hAlign: "space-between",
31
+ children: [label && /* @__PURE__ */ jsx(Meter.Label, {
32
+ render: /* @__PURE__ */ jsx(FieldLabel, {}),
33
+ children: label
34
+ }), showValue && /* @__PURE__ */ jsx(Text, {
35
+ size: "small",
36
+ tone: "muted",
37
+ family: "mono",
38
+ whiteSpace: "nowrap",
39
+ selection: false,
40
+ align: "end",
41
+ shrink: false,
42
+ render: /* @__PURE__ */ jsx(Meter.Value, { render: /* @__PURE__ */ jsx("output", {}) })
43
+ })]
44
+ }),
45
+ /* @__PURE__ */ jsx(Meter.Track, {
46
+ className: meter_module_default.Track,
47
+ children: /* @__PURE__ */ jsx(Meter.Indicator, { className: meter_module_default.Indicator })
48
+ }),
49
+ description && /* @__PURE__ */ jsx(Text, {
50
+ className: meter_module_default.Description,
51
+ size: "small",
52
+ tone: "muted",
53
+ children: description
54
+ })
55
+ ]
56
+ });
57
+ };
58
+ //#endregion
59
+ export { Meter$1 as Meter };
@@ -0,0 +1,11 @@
1
+ //#region src/components/meter/meter.module.css
2
+ var Meter = "viraui__meter-module__Meter_YRI7d";
3
+ var Track = "viraui__meter-module__Track_uF9wy";
4
+ var Indicator = "viraui__meter-module__Indicator_dNjqU";
5
+ var meter_module_default = {
6
+ Meter,
7
+ Track,
8
+ Indicator
9
+ };
10
+ //#endregion
11
+ export { Indicator, Meter, Track, meter_module_default as default };
@@ -0,0 +1,4 @@
1
+ export { Popover, PopoverClose, PopoverDescription, PopoverTitle, PopoverTrigger } from './popover';
2
+ export type { PopoverCloseProps, PopoverDescriptionProps, PopoverProps, PopoverTitleProps, PopoverTriggerProps, } from './popover';
3
+ export { PopoverSheet } from './popover-sheet';
4
+ export type { PopoverSheetProps } from './popover-sheet';
@@ -0,0 +1,65 @@
1
+ import { PopoverPositioner } from '@base-ui/react/popover';
2
+ import { StackProps } from '..';
3
+ import type * as React from 'react';
4
+ type PopoverSheetPositionerProps = Omit<PopoverPositioner.Props, 'className' | 'style' | 'render'>;
5
+ type PopoverSheetStyledProps = PopoverSheetPositionerProps & {
6
+ /**
7
+ * Whether to skip the built-in Surface, header, and close chrome and render
8
+ * only the positioning/animation shell (Portal + Positioner + Popup + Viewport).
9
+ *
10
+ * @default false
11
+ */
12
+ unstyled?: false;
13
+ /**
14
+ * Accessible popover title rendered as the popup 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
+ * Whether to show the built-in flat IconButton close control.
25
+ *
26
+ * @default false
27
+ */
28
+ showCloseButton?: boolean;
29
+ /**
30
+ * Aligns the header content.
31
+ *
32
+ * @default `start`
33
+ */
34
+ headerAlign?: Extract<StackProps['hAlign'], 'start' | 'center' | 'end'>;
35
+ };
36
+ type PopoverSheetUnstyledProps = PopoverSheetPositionerProps & {
37
+ /**
38
+ * Renders only the positioning/animation shell; compose `Popover.Title`,
39
+ * `Popover.Description`, and any chrome inside `children`.
40
+ */
41
+ unstyled: true;
42
+ title?: never;
43
+ description?: never;
44
+ showCloseButton?: never;
45
+ headerAlign?: never;
46
+ };
47
+ /**
48
+ * Public Popover.Sheet props.
49
+ *
50
+ * Encapsulates Portal + Positioner + Popup + Viewport + Title + Description +
51
+ * optional body `children`. Positioning props forward to the Positioner; `sideOffset`
52
+ * defaults to `8`. Always renders the internal Viewport so multi-trigger content
53
+ * animations work by default. Compose `Popover.Close` inside `children` when a
54
+ * close control is needed, or set `showCloseButton` for the built-in flat IconButton.
55
+ *
56
+ * With `unstyled`, the built-in Surface, header, and close chrome are skipped and
57
+ * `children` render directly inside the Viewport; the consumer owns the popup markup
58
+ * and must compose `Popover.Title` (and `Popover.Description` when needed) for
59
+ * accessible naming.
60
+ *
61
+ * @default `sideOffset` is `8`; no description, no close button, styled chrome.
62
+ */
63
+ export type PopoverSheetProps = PopoverSheetStyledProps | PopoverSheetUnstyledProps;
64
+ export declare const PopoverSheet: React.FC<PopoverSheetProps>;
65
+ export {};
@@ -0,0 +1,79 @@
1
+ import { Text } from "../text/text.js";
2
+ import { Stack } from "../stack/stack.js";
3
+ import { Icon } from "../icon/icon.js";
4
+ import { IconButton } from "../icon-button/icon-button.js";
5
+ import popover_module_default from "./popover.module.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 { Popover } from "@base-ui/react/popover";
10
+ //#region src/components/popover/popover-sheet.tsx
11
+ var PopoverSheet = ({ unstyled, title, description, children, showCloseButton = false, headerAlign = "start", sideOffset = 8, ...positionerProps }) => /* @__PURE__ */ jsx(Popover.Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, {
12
+ className: popover_module_default.Sheet,
13
+ sideOffset,
14
+ ...positionerProps,
15
+ children: unstyled ? /* @__PURE__ */ jsx(Popover.Popup, {
16
+ className: popover_module_default.Popup,
17
+ children: /* @__PURE__ */ jsx(Popover.Viewport, {
18
+ className: popover_module_default.Viewport,
19
+ "data-unstyled": "",
20
+ children
21
+ })
22
+ }) : /* @__PURE__ */ jsx(Popover.Popup, {
23
+ className: popover_module_default.Popup,
24
+ render: /* @__PURE__ */ jsx(Surface, {
25
+ color: 1,
26
+ border: "all",
27
+ radius: "large",
28
+ vibrant: true,
29
+ render: /* @__PURE__ */ jsx(Stack, {
30
+ rowGap: "medium",
31
+ fillChildren: false
32
+ })
33
+ }),
34
+ children: /* @__PURE__ */ jsxs(Popover.Viewport, {
35
+ className: popover_module_default.Viewport,
36
+ render: /* @__PURE__ */ jsx(Stack, {
37
+ rowGap: "medium",
38
+ vPadding: "medium",
39
+ hPadding: "medium",
40
+ fillChildren: false
41
+ }),
42
+ children: [
43
+ /* @__PURE__ */ jsxs(Stack, {
44
+ hAlign: headerAlign,
45
+ rowGap: "small",
46
+ vAlign: "start",
47
+ vPadding: [0, children ? "medium" : 0],
48
+ children: [/* @__PURE__ */ jsx(Popover.Title, {
49
+ render: /* @__PURE__ */ jsx(Title, {
50
+ align: headerAlign,
51
+ level: "h6",
52
+ lineHeight: "x-small"
53
+ }),
54
+ children: title
55
+ }), description && /* @__PURE__ */ jsx(Popover.Description, {
56
+ render: /* @__PURE__ */ jsx(Text, {
57
+ align: headerAlign,
58
+ tone: "muted",
59
+ render: /* @__PURE__ */ jsx("p", {})
60
+ }),
61
+ children: description
62
+ })]
63
+ }),
64
+ showCloseButton && /* @__PURE__ */ jsx(Popover.Close, {
65
+ className: popover_module_default.CloseButton,
66
+ render: /* @__PURE__ */ jsx(IconButton, {
67
+ "aria-label": "Close popover",
68
+ icon: /* @__PURE__ */ jsx(Icon, { name: "Xmark" }),
69
+ size: "small",
70
+ variant: "flat"
71
+ })
72
+ }),
73
+ children
74
+ ]
75
+ })
76
+ })
77
+ }) });
78
+ //#endregion
79
+ export { PopoverSheet };
@@ -0,0 +1 @@
1
+ .viraui__popover-module__Sheet_4x-7H{width:var(--positioner-width);height:var(--positioner-height);max-width:var(--available-width);transition:top var(--duration-fast) var(--easing-standard),right var(--duration-fast) var(--easing-standard),bottom var(--duration-fast) var(--easing-standard),left var(--duration-fast) var(--easing-standard),transform var(--duration-fast) var(--easing-standard);&[data-instant=click],&[data-instant=dismiss]{transition:none}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__popover-module__Popup_pJyIh{position:relative;box-sizing:border-box;width:var(--popup-width,auto);height:var(--popup-height,auto);transform-origin:var(--transform-origin);transition:width var(--duration-fast) var(--easing-standard),height var(--duration-fast) var(--easing-standard),opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance);&[data-ending-style],&[data-starting-style]{opacity:0;transform:scale(.96)}&[data-instant=click],&[data-instant=dismiss]{transition:none}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style],&[data-starting-style]{opacity:1;transform:none}}}.viraui__popover-module__Viewport_KrjBC{--vui-popover-content-fade-duration:var(--duration-fast);position:relative;display:grid;grid-template-columns:minmax(0,1fr);overflow:clip;width:100%;height:100%;&>[data-current],&>[data-previous]{grid-area:1/1;inline-size:calc(var(--popup-width) - 2px - var(--vui-stack-padding-inline-start) - var(--vui-stack-padding-inline-end))}&[data-unstyled]>:is([data-current],[data-previous]){inline-size:var(--popup-width,100%)}&[data-unstyled]>[data-previous]{block-size:var(--popup-height,100%)}&>[data-previous]{position:absolute;block-size:calc(var(--popup-height) - 2px - var(--vui-stack-padding-block-start) - var(--vui-stack-padding-block-end));overflow:clip;pointer-events:none;opacity:1;transition:opacity var(--vui-popover-content-fade-duration) var(--easing-standard)}&>[data-previous][data-ending-style]{opacity:0}&>[data-current]{opacity:1;transition:opacity var(--vui-popover-content-fade-duration) var(--easing-entrance)}&>[data-current][data-starting-style]{opacity:0}&[data-instant=click]>[data-current],&[data-instant=click]>[data-previous],&[data-instant=dismiss]>[data-current],&[data-instant=dismiss]>[data-previous]{transition:none}@media (prefers-reduced-motion:reduce){&>[data-current],&>[data-previous]{transition:none}&>[data-current][data-starting-style],&>[data-previous][data-ending-style]{opacity:1}}}.viraui__popover-module__CloseButton_YOe2L.viraui__popover-module__CloseButton_YOe2L{position:absolute;inset-block-start:var(--space-small);inset-inline-end:var(--space-small)}