@viraui/react 2026.0.19 → 2026.0.20

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.
@@ -1,5 +1,5 @@
1
- import { FieldRoot } from '@base-ui/react/field';
2
1
  import { AutocompleteRoot, Autocomplete as PrimitiveAutocomplete } from '@base-ui/react/autocomplete';
2
+ import { FieldRoot } from '@base-ui/react/field';
3
3
  import { BasicInputProps } from '../basic-input';
4
4
  import { AutocompleteGroup } from './autocomplete-group';
5
5
  import { AutocompleteItemPart } from './autocomplete-item';
@@ -13,8 +13,8 @@ import { AutocompleteItemPart } from "./autocomplete-item.js";
13
13
  import { Elevator } from "../elevator/elevator.js";
14
14
  import { Surface } from "../surface/surface.js";
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
16
- import { Field } from "@base-ui/react/field";
17
16
  import { Autocomplete } from "@base-ui/react/autocomplete";
17
+ import { Field } from "@base-ui/react/field";
18
18
  import { useId } from "react";
19
19
  //#region src/components/autocomplete/autocomplete.tsx
20
20
  var AutocompletePrimitiveRoot = Autocomplete.Root;
@@ -76,7 +76,7 @@ function AutocompleteRootComponent({ children, className, container, description
76
76
  border: "all",
77
77
  className: autocomplete_module_default.PopupChrome,
78
78
  color: 1,
79
- "data-vibrant": "",
79
+ "data-vibrant": true,
80
80
  hPadding: "x-small",
81
81
  overflow: "auto",
82
82
  radius: "medium",
@@ -31,7 +31,7 @@ var DialogSheet = ({ children, description, title, showCloseButton = false, fitC
31
31
  hAlign: "center"
32
32
  }),
33
33
  color: 1,
34
- "data-vibrant": "",
34
+ "data-vibrant": true,
35
35
  radius: "large",
36
36
  vPadding: ["medium", 0]
37
37
  }),
@@ -1,4 +1,4 @@
1
- import { ProgressRoot } from '@base-ui/react/progress';
1
+ import { ProgressRoot, Progress as PrimitiveProgress } from '@base-ui/react/progress';
2
2
  import type * as React from 'react';
3
3
  /**
4
4
  * Public LinearProgress props.
@@ -22,10 +22,13 @@ export type LinearProgressProps = ProgressRoot.Props & {
22
22
  */
23
23
  description?: React.ReactNode;
24
24
  /**
25
- * Renders the formatted current value via `Progress.Value` and `Text`.
25
+ * Shows the current value beside the label.
26
26
  *
27
- * @default false
27
+ * Pass `true` for Base UI default formatting, or a function matching
28
+ * `Progress.Value` `children` to customize the printed label.
29
+ *
30
+ * @default Value UI is hidden.
28
31
  */
29
- showValue?: boolean;
32
+ renderValue?: boolean | Exclude<React.ComponentProps<typeof PrimitiveProgress.Value>['children'], null | undefined>;
30
33
  };
31
34
  export declare const LinearProgress: React.FC<LinearProgressProps>;
@@ -34,8 +34,8 @@
34
34
  "label": {
35
35
  "description": "Visible label rendered through `Progress.Label` with shared internal `FieldLabel`."
36
36
  },
37
- "showValue": {
38
- "description": "Renders the formatted current value via `Progress.Value` and `Text`."
37
+ "renderValue": {
38
+ "description": "Shows the current value beside the label. Pass `true` for Base UI default formatting, or a function matching `Progress.Value` `children` to customize the printed label."
39
39
  }
40
40
  },
41
41
  "css": {
@@ -7,46 +7,52 @@ import linear_progress_module_default from "./linear-progress.module.js";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { Progress } from "@base-ui/react/progress";
9
9
  //#region src/components/linear-progress/linear-progress.tsx
10
- var LinearProgress = ({ className, description, label, showValue = false, value, ref, ...progressRootProps }) => /* @__PURE__ */ jsxs(Progress.Root, {
11
- ...progressRootProps,
12
- ref,
13
- className: clsx(linear_progress_module_default.LinearProgress, className),
14
- value,
15
- render: /* @__PURE__ */ jsx(Stack, {
16
- direction: "column",
17
- rowGap: "small",
18
- columnGap: "x-small"
19
- }),
20
- children: [
21
- (label || showValue) && /* @__PURE__ */ jsxs(Stack, {
22
- direction: "row",
23
- columnGap: "small",
24
- vAlign: "center",
25
- hAlign: "space-between",
26
- children: [label && /* @__PURE__ */ jsx(Progress.Label, {
27
- render: /* @__PURE__ */ jsx(FieldLabel, {}),
28
- children: label
29
- }), showValue && /* @__PURE__ */ jsx(Text, {
10
+ var LinearProgress = ({ className, description, label, renderValue, value, ref, ...progressRootProps }) => {
11
+ const showRenderedValue = renderValue === true || typeof renderValue === "function";
12
+ return /* @__PURE__ */ jsxs(Progress.Root, {
13
+ ...progressRootProps,
14
+ ref,
15
+ className: clsx(linear_progress_module_default.LinearProgress, className),
16
+ value,
17
+ render: /* @__PURE__ */ jsx(Stack, {
18
+ direction: "column",
19
+ rowGap: "medium",
20
+ columnGap: "x-small"
21
+ }),
22
+ children: [
23
+ (label || showRenderedValue) && /* @__PURE__ */ jsxs(Stack, {
24
+ direction: "row",
25
+ columnGap: "small",
26
+ vAlign: "center",
27
+ hAlign: "space-between",
28
+ children: [label && /* @__PURE__ */ jsx(Progress.Label, {
29
+ render: /* @__PURE__ */ jsx(FieldLabel, {}),
30
+ children: label
31
+ }), showRenderedValue && /* @__PURE__ */ jsx(Text, {
32
+ size: "small",
33
+ tone: "muted",
34
+ family: "mono",
35
+ whiteSpace: "nowrap",
36
+ selection: false,
37
+ align: "center",
38
+ "data-shrink": "false",
39
+ render: /* @__PURE__ */ jsx(Progress.Value, {
40
+ render: /* @__PURE__ */ jsx("output", {}),
41
+ children: typeof renderValue === "function" ? renderValue : void 0
42
+ })
43
+ })]
44
+ }),
45
+ /* @__PURE__ */ jsx(Progress.Track, {
46
+ className: linear_progress_module_default.Track,
47
+ children: /* @__PURE__ */ jsx(Progress.Indicator, { className: linear_progress_module_default.Indicator })
48
+ }),
49
+ description && /* @__PURE__ */ jsx(Text, {
30
50
  size: "small",
31
51
  tone: "muted",
32
- family: "mono",
33
- whiteSpace: "nowrap",
34
- selection: false,
35
- align: "end",
36
- "data-shrink": "false",
37
- render: /* @__PURE__ */ jsx(Progress.Value, { render: /* @__PURE__ */ jsx("output", {}) })
38
- })]
39
- }),
40
- /* @__PURE__ */ jsx(Progress.Track, {
41
- className: linear_progress_module_default.Track,
42
- children: /* @__PURE__ */ jsx(Progress.Indicator, { className: linear_progress_module_default.Indicator })
43
- }),
44
- description && /* @__PURE__ */ jsx(Text, {
45
- size: "small",
46
- tone: "muted",
47
- children: description
48
- })
49
- ]
50
- });
52
+ children: description
53
+ })
54
+ ]
55
+ });
56
+ };
51
57
  //#endregion
52
58
  export { LinearProgress };
@@ -1,4 +1,4 @@
1
- import { MeterRoot } from '@base-ui/react';
1
+ import { Meter as PrimitiveMeter, MeterRoot } from '@base-ui/react';
2
2
  import type * as React from 'react';
3
3
  /**
4
4
  * Public Meter props.
@@ -22,10 +22,13 @@ export type MeterProps = MeterRoot.Props & {
22
22
  */
23
23
  description?: React.ReactNode;
24
24
  /**
25
- * Renders the formatted current value via `Meter.Value` and `Text`.
25
+ * Shows the current value beside the label.
26
26
  *
27
- * @default false
27
+ * Pass `true` for Base UI default formatting, or a function matching
28
+ * `Meter.Value` `children` to customize the printed label.
29
+ *
30
+ * @default Value UI is hidden.
28
31
  */
29
- showValue?: boolean;
32
+ renderValue?: boolean | Exclude<React.ComponentProps<typeof PrimitiveMeter.Value>['children'], null | undefined>;
30
33
  };
31
34
  export declare const Meter: React.FC<MeterProps>;
@@ -6,7 +6,7 @@
6
6
  "whenToUse": [
7
7
  "Use for storage usage, battery level, capacity, or score within a known range.",
8
8
  "Use with a label when the metric needs a visible name.",
9
- "Use with `showValue` when the formatted value should appear beside the label."
9
+ "Use with `renderValue` when the formatted value should appear beside the label."
10
10
  ],
11
11
  "whenNotToUse": [
12
12
  "Use LinearProgress for in-progress tasks or indeterminate work.",
@@ -33,8 +33,8 @@
33
33
  "label": {
34
34
  "description": "Visible label rendered through `Meter.Label` with shared internal `FieldLabel`."
35
35
  },
36
- "showValue": {
37
- "description": "Renders the formatted current value via `Meter.Value` and `Text`."
36
+ "renderValue": {
37
+ "description": "Shows the current value beside the label. Pass `true` for Base UI default formatting, or a function matching `Meter.Value` `children` to customize the printed label."
38
38
  }
39
39
  },
40
40
  "css": {
@@ -7,45 +7,51 @@ import meter_module_default from "./meter.module.js";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { Meter } from "@base-ui/react";
9
9
  //#region src/components/meter/meter.tsx
10
- var Meter$1 = ({ className, description, label, showValue = false, value, ...otherProps }) => /* @__PURE__ */ jsxs(Meter.Root, {
11
- ...otherProps,
12
- className: clsx(meter_module_default.Meter, className),
13
- value,
14
- render: /* @__PURE__ */ jsx(Stack, {
15
- direction: "column",
16
- rowGap: "small",
17
- columnGap: "x-small"
18
- }),
19
- children: [
20
- (label || showValue) && /* @__PURE__ */ jsxs(Stack, {
21
- direction: "row",
22
- columnGap: "small",
23
- vAlign: "center",
24
- hAlign: "space-between",
25
- children: [label && /* @__PURE__ */ jsx(Meter.Label, {
26
- render: /* @__PURE__ */ jsx(FieldLabel, {}),
27
- children: label
28
- }), showValue && /* @__PURE__ */ jsx(Text, {
10
+ var Meter$1 = ({ className, description, label, renderValue, value, ...otherProps }) => {
11
+ const showRenderedValue = renderValue === true || typeof renderValue === "function";
12
+ return /* @__PURE__ */ jsxs(Meter.Root, {
13
+ ...otherProps,
14
+ className: clsx(meter_module_default.Meter, className),
15
+ value,
16
+ render: /* @__PURE__ */ jsx(Stack, {
17
+ direction: "column",
18
+ rowGap: "medium",
19
+ columnGap: "x-small"
20
+ }),
21
+ children: [
22
+ (label || showRenderedValue) && /* @__PURE__ */ jsxs(Stack, {
23
+ direction: "row",
24
+ columnGap: "small",
25
+ vAlign: "center",
26
+ hAlign: "space-between",
27
+ children: [label && /* @__PURE__ */ jsx(Meter.Label, {
28
+ render: /* @__PURE__ */ jsx(FieldLabel, {}),
29
+ children: label
30
+ }), showRenderedValue && /* @__PURE__ */ jsx(Text, {
31
+ size: "small",
32
+ tone: "muted",
33
+ family: "mono",
34
+ whiteSpace: "nowrap",
35
+ selection: false,
36
+ align: "center",
37
+ "data-shrink": "false",
38
+ render: /* @__PURE__ */ jsx(Meter.Value, {
39
+ render: /* @__PURE__ */ jsx("output", {}),
40
+ children: typeof renderValue === "function" ? renderValue : void 0
41
+ })
42
+ })]
43
+ }),
44
+ /* @__PURE__ */ jsx(Meter.Track, {
45
+ className: meter_module_default.Track,
46
+ children: /* @__PURE__ */ jsx(Meter.Indicator, { className: meter_module_default.Indicator })
47
+ }),
48
+ description && /* @__PURE__ */ jsx(Text, {
29
49
  size: "small",
30
50
  tone: "muted",
31
- family: "mono",
32
- whiteSpace: "nowrap",
33
- selection: false,
34
- align: "end",
35
- "data-shrink": "false",
36
- render: /* @__PURE__ */ jsx(Meter.Value, { render: /* @__PURE__ */ jsx("output", {}) })
37
- })]
38
- }),
39
- /* @__PURE__ */ jsx(Meter.Track, {
40
- className: meter_module_default.Track,
41
- children: /* @__PURE__ */ jsx(Meter.Indicator, { className: meter_module_default.Indicator })
42
- }),
43
- description && /* @__PURE__ */ jsx(Text, {
44
- size: "small",
45
- tone: "muted",
46
- children: description
47
- })
48
- ]
49
- });
51
+ children: description
52
+ })
53
+ ]
54
+ });
55
+ };
50
56
  //#endregion
51
57
  export { Meter$1 as Meter };
@@ -27,7 +27,7 @@ var PopoverSheet = ({ unstyled, title, description, children, showCloseButton =
27
27
  color: 1,
28
28
  border: "all",
29
29
  radius: "large",
30
- "data-vibrant": "",
30
+ "data-vibrant": true,
31
31
  render: /* @__PURE__ */ jsx(Stack, { rowGap: "medium" })
32
32
  }),
33
33
  children: /* @__PURE__ */ jsxs(Popover.Viewport, {
@@ -91,7 +91,7 @@ function SelectRootComponent({ alignListWithTrigger = true, children, className,
91
91
  children: [
92
92
  /* @__PURE__ */ jsx(Select.ScrollUpArrow, {
93
93
  className: clsx(select_module_default.ScrollArrow, select_module_default.ScrollArrowUp),
94
- "data-vibrant": "",
94
+ "data-vibrant": true,
95
95
  render: /* @__PURE__ */ jsx(Stack, {
96
96
  hAlign: "center",
97
97
  vAlign: "center"
@@ -117,14 +117,14 @@ function SelectRootComponent({ alignListWithTrigger = true, children, className,
117
117
  overflow: "auto",
118
118
  radius: "medium",
119
119
  vPadding: "x-small",
120
- "data-vibrant": ""
120
+ "data-vibrant": true
121
121
  }),
122
122
  children
123
123
  })
124
124
  }),
125
125
  /* @__PURE__ */ jsx(Select.ScrollDownArrow, {
126
126
  className: clsx(select_module_default.ScrollArrow, select_module_default.ScrollArrowDown),
127
- "data-vibrant": "",
127
+ "data-vibrant": true,
128
128
  render: /* @__PURE__ */ jsx(Stack, {
129
129
  hAlign: "center",
130
130
  vAlign: "center"
@@ -1,5 +1,5 @@
1
1
  import { FieldRoot } from '@base-ui/react/field';
2
- import { SliderRoot } from '@base-ui/react/slider';
2
+ import { SliderRoot, Slider as PrimitiveSlider } from '@base-ui/react/slider';
3
3
  import type * as React from 'react';
4
4
  /**
5
5
  * Public Slider props.
@@ -35,11 +35,14 @@ export type SliderProps = SliderRoot.Props & FieldRoot.Props & {
35
35
  */
36
36
  required?: boolean;
37
37
  /**
38
- * Renders the formatted current value via `Slider.Value` and `Text`.
38
+ * Shows the current value beside the label.
39
39
  *
40
- * @default false
40
+ * Pass `true` for Base UI default formatting, or a function matching
41
+ * `Slider.Value` `children` to customize the printed label.
42
+ *
43
+ * @default Value UI is hidden.
41
44
  */
42
- showValue?: boolean;
45
+ renderValue?: boolean | Exclude<React.ComponentProps<typeof PrimitiveSlider.Value>['children'], null | undefined>;
43
46
  /**
44
47
  * Accessible name for the thumb when `label` is omitted.
45
48
  *
@@ -36,8 +36,8 @@
36
36
  "required": {
37
37
  "description": "Marks the slider as required and shows a required indicator on the label."
38
38
  },
39
- "showValue": {
40
- "description": "Renders the formatted current value via `Slider.Value` and `Text`."
39
+ "renderValue": {
40
+ "description": "Shows the current value beside the label. Pass `true` for Base UI default formatting, or a function matching `Slider.Value` `children` to customize the printed label."
41
41
  },
42
42
  "thumbAriaLabel": {
43
43
  "description": "Accessible name for the thumb when `label` is omitted. Pass a string to name the first thumb (single-thumb slider, or the minimum thumb on a range). Pass a two-element tuple to name each range thumb in order; on a single-thumb slider only the first tuple value is applied."
@@ -11,9 +11,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { Field } from "@base-ui/react/field";
12
12
  import { Slider } from "@base-ui/react/slider";
13
13
  //#region src/components/slider/slider.tsx
14
- var Slider$1 = ({ className, defaultValue, description, dirty, disabled, error, invalid, label, name, orientation = "horizontal", showValue = false, thumbAriaLabel, touched, validate, validationDebounceTime, validationMode, value, ref, ...sliderRootProps }) => {
14
+ var Slider$1 = ({ className, defaultValue, description, dirty, disabled, error, invalid, label, name, orientation = "horizontal", renderValue, thumbAriaLabel, touched, validate, validationDebounceTime, validationMode, value, ref, ...sliderRootProps }) => {
15
15
  const isRange = isRangeSlider(value, defaultValue);
16
16
  const isVertical = orientation === "vertical";
17
+ const showRenderedValue = renderValue === true || typeof renderValue === "function";
17
18
  return /* @__PURE__ */ jsxs(Field.Root, {
18
19
  className: slider_module_default.Slider,
19
20
  dirty,
@@ -44,17 +45,17 @@ var Slider$1 = ({ className, defaultValue, description, dirty, disabled, error,
44
45
  vAlign: isVertical ? "stretch" : "center",
45
46
  hAlign: isVertical ? "center" : "initial"
46
47
  }),
47
- children: [(label || showValue) && /* @__PURE__ */ jsxs(Stack, {
48
+ children: [(label || showRenderedValue) && /* @__PURE__ */ jsxs(Stack, {
48
49
  fillChildren: true,
49
50
  className: slider_module_default.SliderHeader,
50
51
  direction: isVertical ? "column" : "row",
51
52
  columnGap: "small",
52
- vAlign: "end",
53
+ vAlign: "center",
53
54
  hAlign: isVertical ? "center" : "space-between",
54
55
  children: [label && /* @__PURE__ */ jsx(Field.Label, {
55
56
  className: slider_module_default.Label,
56
57
  children: /* @__PURE__ */ jsx(FieldLabel, { children: label })
57
- }), showValue && /* @__PURE__ */ jsx(Text, {
58
+ }), showRenderedValue && /* @__PURE__ */ jsx(Text, {
58
59
  className: slider_module_default.Value,
59
60
  size: "small",
60
61
  tone: "muted",
@@ -62,7 +63,7 @@ var Slider$1 = ({ className, defaultValue, description, dirty, disabled, error,
62
63
  whiteSpace: "nowrap",
63
64
  selection: false,
64
65
  align: isVertical ? "center" : "end",
65
- render: /* @__PURE__ */ jsx(Slider.Value, {})
66
+ render: /* @__PURE__ */ jsx(Slider.Value, { children: typeof renderValue === "function" ? renderValue : void 0 })
66
67
  })]
67
68
  }), /* @__PURE__ */ jsx(SliderControl, {
68
69
  isRange,
@@ -17,7 +17,7 @@ var TooltipContent = ({ children, sideOffset = 8, container, ...positionerProps
17
17
  color: 1,
18
18
  border: "all",
19
19
  radius: "medium",
20
- "data-vibrant": ""
20
+ "data-vibrant": true
21
21
  }),
22
22
  children: /* @__PURE__ */ jsx(Tooltip.Viewport, {
23
23
  className: tooltip_module_default.Viewport,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viraui/react",
3
- "version": "2026.0.19",
3
+ "version": "2026.0.20",
4
4
  "private": false,
5
5
  "files": [
6
6
  "dist"
@@ -35,10 +35,10 @@
35
35
  "unplugin-dts": "1.0.3",
36
36
  "vite": "8.1.4",
37
37
  "vite-plugin-static-copy": "4.1.1",
38
- "@viraui/foundation": "2026.0.19",
39
- "@viraui/icons": "2026.0.0",
38
+ "@viraui/foundation": "2026.0.20",
40
39
  "@viraui/postcss-config": "2026.0.0",
41
- "@viraui/tsconfig": "2026.0.0"
40
+ "@viraui/tsconfig": "2026.0.0",
41
+ "@viraui/icons": "2026.0.0"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@base-ui/react": ">=1.6.0",