@viraui/react 2026.6.5 → 2026.7.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog.json +24 -0
- package/dist/components/accordion/accordion-item.d.ts +10 -10
- package/dist/components/accordion/accordion.d.ts +2 -2
- package/dist/components/annotate/annotate.d.ts +15 -15
- package/dist/components/autocomplete/autocomplete-item.d.ts +3 -3
- package/dist/components/autocomplete/autocomplete.d.ts +12 -12
- package/dist/components/autocomplete/autocomplete.js +1 -1
- package/dist/components/avatar/avatar.d.ts +6 -6
- package/dist/components/avatar-group/avatar-group.d.ts +6 -6
- package/dist/components/badge/badge.d.ts +5 -5
- package/dist/components/basic-input/basic-input.d.ts +3 -2
- package/dist/components/basic-input/basic-input.js +7 -0
- package/dist/components/basic-input/input-control-group.d.ts +2 -2
- package/dist/components/beam/beam-pulse-driver.d.ts +1 -0
- package/dist/components/beam/beam-pulse-driver.js +2 -2
- package/dist/components/beam/beam.css +1 -1
- package/dist/components/beam/beam.d.ts +17 -14
- package/dist/components/beam/beam.js +31 -26
- package/dist/components/bleed/bleed.d.ts +3 -3
- package/dist/components/button/button-link.d.ts +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/checkbox/checkbox-group.d.ts +1 -1
- package/dist/components/checkbox/checkbox.d.ts +7 -7
- package/dist/components/chip/chip.d.ts +6 -6
- package/dist/components/clamp-text/clamp-text.d.ts +5 -5
- package/dist/components/dialog/dialog-close.d.ts +1 -1
- package/dist/components/dialog/dialog-indent-background.d.ts +1 -1
- package/dist/components/dialog/dialog-indent.d.ts +1 -1
- package/dist/components/dialog/dialog-sheet.d.ts +10 -10
- package/dist/components/dialog/dialog-sheet.js +1 -1
- package/dist/components/dialog/dialog-trigger.d.ts +1 -1
- package/dist/components/dialog/dialog.d.ts +1 -1
- package/dist/components/disclosure/disclosure-panel.d.ts +12 -0
- package/dist/components/disclosure/disclosure-panel.js +13 -0
- package/dist/components/disclosure/disclosure-trigger.d.ts +46 -0
- package/dist/components/disclosure/disclosure-trigger.js +82 -0
- package/dist/components/disclosure/disclosure.css +1 -0
- package/dist/components/disclosure/disclosure.d.ts +25 -0
- package/dist/components/disclosure/disclosure.js +30 -0
- package/dist/components/disclosure/disclosure.module.js +15 -0
- package/dist/components/disclosure/index.d.ts +4 -0
- package/dist/components/elevator/elevator.d.ts +7 -7
- package/dist/components/fieldset/fieldset.d.ts +4 -4
- package/dist/components/fit-text/fit-text.d.ts +2 -2
- package/dist/components/glow/glow.d.ts +12 -12
- package/dist/components/grid/grid-item.d.ts +8 -8
- package/dist/components/grid/grid.d.ts +12 -12
- package/dist/components/icon-button/icon-button-link.d.ts +2 -2
- package/dist/components/icon-button/icon-button.d.ts +2 -2
- package/dist/components/index.d.ts +4 -0
- package/dist/components/linear-progress/linear-progress.d.ts +4 -4
- package/dist/components/masonry/masonry-item.d.ts +3 -3
- package/dist/components/masonry/masonry.d.ts +4 -4
- package/dist/components/menu/menu-checkbox-item.d.ts +4 -4
- package/dist/components/menu/menu-item.d.ts +4 -4
- package/dist/components/menu/menu-link-item.d.ts +4 -4
- package/dist/components/menu/menu-popup.d.ts +2 -2
- package/dist/components/menu/menu-popup.js +1 -1
- package/dist/components/menu/menu-radio-group.d.ts +2 -2
- package/dist/components/menu/menu-radio-item.d.ts +4 -4
- package/dist/components/menu/menu-separator.d.ts +1 -1
- package/dist/components/menu/menu-submenu-trigger.d.ts +3 -3
- package/dist/components/menu/menu.d.ts +3 -3
- package/dist/components/meter/meter.css +1 -1
- package/dist/components/meter/meter.d.ts +15 -5
- package/dist/components/meter/meter.js +2 -1
- package/dist/components/number-field/index.d.ts +2 -0
- package/dist/components/number-field/number-field.css +1 -0
- package/dist/components/number-field/number-field.d.ts +78 -0
- package/dist/components/number-field/number-field.js +120 -0
- package/dist/components/number-field/number-field.module.js +21 -0
- package/dist/components/otp-field/index.d.ts +4 -0
- package/dist/components/otp-field/otp-field-input.d.ts +12 -0
- package/dist/components/otp-field/otp-field-input.js +29 -0
- package/dist/components/otp-field/otp-field-separator.d.ts +13 -0
- package/dist/components/otp-field/otp-field-separator.js +20 -0
- package/dist/components/otp-field/otp-field.css +1 -0
- package/dist/components/otp-field/otp-field.d.ts +48 -0
- package/dist/components/otp-field/otp-field.js +78 -0
- package/dist/components/otp-field/otp-field.module.js +23 -0
- package/dist/components/popover/popover-sheet.d.ts +6 -6
- package/dist/components/popover/popover.d.ts +5 -5
- package/dist/components/progressive-blur/progressive-blur.d.ts +5 -5
- package/dist/components/prose/index.d.ts +2 -0
- package/dist/components/prose/prose.css +1 -0
- package/dist/components/prose/prose.d.ts +40 -0
- package/dist/components/prose/prose.js +27 -0
- package/dist/components/prose/prose.module.js +5 -0
- package/dist/components/radio/radio-group.d.ts +1 -1
- package/dist/components/radio/radio.d.ts +6 -6
- package/dist/components/select/select-indicator-slot.d.ts +1 -1
- package/dist/components/select/select-option.d.ts +4 -4
- package/dist/components/select/select-separator.d.ts +1 -1
- package/dist/components/select/select.d.ts +10 -10
- package/dist/components/select/select.js +1 -1
- package/dist/components/separator/separator.d.ts +15 -8
- package/dist/components/separator/separator.js +2 -1
- package/dist/components/shimmer/shimmer.d.ts +6 -6
- package/dist/components/skeleton/skeleton-overlay.d.ts +5 -5
- package/dist/components/skeleton/skeleton.d.ts +9 -9
- package/dist/components/slider/slider.d.ts +7 -7
- package/dist/components/spinner/spinner.d.ts +3 -3
- package/dist/components/stack/stack.d.ts +17 -17
- package/dist/components/static-noise/static-noise.d.ts +5 -5
- package/dist/components/surface/surface.d.ts +12 -12
- package/dist/components/switch/switch.d.ts +7 -7
- package/dist/components/tabs/tabs-list.d.ts +1 -1
- package/dist/components/tabs/tabs-panel.d.ts +1 -1
- package/dist/components/tabs/tabs-tab.d.ts +3 -3
- package/dist/components/tabs/tabs.d.ts +2 -2
- package/dist/components/text/text.css +1 -1
- package/dist/components/text/text.d.ts +24 -23
- package/dist/components/text/text.js +4 -2
- package/dist/components/textarea/textarea.d.ts +6 -6
- package/dist/components/textfield/textfield.css +1 -1
- package/dist/components/textfield/textfield.d.ts +19 -11
- package/dist/components/textfield/textfield.js +43 -39
- package/dist/components/textfield/textfield.module.js +3 -1
- package/dist/components/title/title.css +1 -1
- package/dist/components/title/title.d.ts +22 -21
- package/dist/components/title/title.js +4 -2
- package/dist/components/toast/toast-action.d.ts +1 -1
- package/dist/components/toast/toast-banner.d.ts +7 -7
- package/dist/components/toast/toast-banner.js +1 -1
- package/dist/components/toast/toast-viewport.d.ts +2 -2
- package/dist/components/toggle-button/toggle-button.d.ts +6 -6
- package/dist/components/toggle-group/toggle-group.d.ts +1 -1
- package/dist/components/tooltip/tooltip-content.d.ts +2 -2
- package/dist/components/typewriter/typewriter.d.ts +10 -10
- package/dist/index.js +7 -3
- package/dist/specs/components/accordion/usage.xml +1 -0
- package/dist/specs/components/beam/a11y.xml +3 -3
- package/dist/specs/components/beam/props.xml +22 -1
- package/dist/specs/components/beam/usage.xml +1 -0
- package/dist/specs/components/disclosure/a11y.xml +9 -0
- package/dist/specs/components/disclosure/meta.xml +20 -0
- package/dist/specs/components/disclosure/patterns.xml +55 -0
- package/dist/specs/components/disclosure/props.xml +54 -0
- package/dist/specs/components/disclosure/usage.xml +11 -0
- package/dist/specs/components/meter/patterns.xml +12 -0
- package/dist/specs/components/meter/props.xml +7 -0
- package/dist/specs/components/meter/usage.xml +2 -0
- package/dist/specs/components/number-field/a11y.xml +10 -0
- package/dist/specs/components/number-field/meta.xml +21 -0
- package/dist/specs/components/number-field/patterns.xml +43 -0
- package/dist/specs/components/number-field/props.xml +35 -0
- package/dist/specs/components/number-field/usage.xml +12 -0
- package/dist/specs/components/otp-field/a11y.xml +10 -0
- package/dist/specs/components/otp-field/meta.xml +20 -0
- package/dist/specs/components/otp-field/patterns.xml +66 -0
- package/dist/specs/components/otp-field/props.xml +29 -0
- package/dist/specs/components/otp-field/usage.xml +13 -0
- package/dist/specs/components/prose/a11y.xml +7 -0
- package/dist/specs/components/prose/meta.xml +18 -0
- package/dist/specs/components/prose/patterns.xml +59 -0
- package/dist/specs/components/prose/props.xml +37 -0
- package/dist/specs/components/prose/usage.xml +12 -0
- package/dist/specs/components/separator/props.xml +3 -0
- package/dist/specs/components/separator/usage.xml +1 -0
- package/dist/specs/components/text/props.xml +2 -2
- package/dist/specs/components/text/usage.xml +1 -0
- package/dist/specs/components/textfield/meta.xml +1 -0
- package/dist/specs/components/textfield/props.xml +6 -1
- package/dist/specs/components/textfield/usage.xml +2 -1
- package/dist/specs/components/title/props.xml +2 -2
- package/dist/specs/components/title/usage.xml +1 -0
- package/dist/specs/index.xml +41 -1
- package/package.json +2 -2
|
@@ -10,19 +10,19 @@ type GridAxisPadding = GridSpace | [GridSpace | 0, GridSpace | 0];
|
|
|
10
10
|
* Includes standard `div` attributes such as `id`, `role`, `title`, and event handlers,
|
|
11
11
|
* plus Vira-owned CSS Grid controls and Base UI `render` support for replacing the root element.
|
|
12
12
|
*
|
|
13
|
-
* @
|
|
13
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
14
14
|
*/
|
|
15
15
|
export type GridProps = React.ComponentPropsWithoutRef<'div'> & {
|
|
16
16
|
/**
|
|
17
17
|
* Replaces the default `div` root using Base UI render semantics.
|
|
18
18
|
*
|
|
19
|
-
* @
|
|
19
|
+
* @defaultValue The grid renders a `div` root.
|
|
20
20
|
*/
|
|
21
21
|
render?: useRender.RenderProp;
|
|
22
22
|
/**
|
|
23
23
|
* Ref forwarded to the rendered grid root element.
|
|
24
24
|
*
|
|
25
|
-
* @
|
|
25
|
+
* @defaultValue No ref is attached.
|
|
26
26
|
*/
|
|
27
27
|
ref?: React.Ref<HTMLElement>;
|
|
28
28
|
/**
|
|
@@ -33,32 +33,32 @@ export type GridProps = React.ComponentPropsWithoutRef<'div'> & {
|
|
|
33
33
|
* explicit `colMinWidth` as well for fixed-breadth tracks and
|
|
34
34
|
* `data-grid-fixed-breadth="true"` (`inline-size: max-content`).
|
|
35
35
|
*
|
|
36
|
-
* @
|
|
36
|
+
* @defaultValue No fixed column count (uses `filling` auto tracks).
|
|
37
37
|
*/
|
|
38
38
|
columns?: number;
|
|
39
39
|
/**
|
|
40
40
|
* Fixes the number of row tracks via `--vui-grid-rows`.
|
|
41
41
|
*
|
|
42
|
-
* @
|
|
42
|
+
* @defaultValue No fixed row count.
|
|
43
43
|
*/
|
|
44
44
|
rows?: number;
|
|
45
45
|
/**
|
|
46
46
|
* Sets the gap between grid rows using the Vira space token scale.
|
|
47
47
|
*
|
|
48
|
-
* @
|
|
48
|
+
* @defaultValue No row gap (`0`).
|
|
49
49
|
*/
|
|
50
50
|
rowGap?: GridSpace;
|
|
51
51
|
/**
|
|
52
52
|
* Sets the gap between grid columns using the Vira space token scale.
|
|
53
53
|
*
|
|
54
|
-
* @
|
|
54
|
+
* @defaultValue No column gap (`0`).
|
|
55
55
|
*/
|
|
56
56
|
columnGap?: GridSpace;
|
|
57
57
|
/**
|
|
58
58
|
* Controls `repeat(auto-fill|auto-fit, …)` when `columns` is unset.
|
|
59
59
|
* Pass `false` to skip the filling data attribute.
|
|
60
60
|
*
|
|
61
|
-
* @
|
|
61
|
+
* @defaultValue 'fill'
|
|
62
62
|
*/
|
|
63
63
|
filling?: 'fit' | 'fill' | false;
|
|
64
64
|
/**
|
|
@@ -67,25 +67,25 @@ export type GridProps = React.ComponentPropsWithoutRef<'div'> & {
|
|
|
67
67
|
* tracks (`repeat(N, var(--vui-grid-column-min-w))`) and sets
|
|
68
68
|
* `data-grid-fixed-breadth`; omit this prop to keep fluid `1fr` tracks.
|
|
69
69
|
*
|
|
70
|
-
* @
|
|
70
|
+
* @defaultValue '10rem'
|
|
71
71
|
*/
|
|
72
72
|
colMinWidth?: string;
|
|
73
73
|
/**
|
|
74
74
|
* Minimum row track size used when `rows` is set.
|
|
75
75
|
*
|
|
76
|
-
* @
|
|
76
|
+
* @defaultValue '1fr'
|
|
77
77
|
*/
|
|
78
78
|
rowMinHeight?: string;
|
|
79
79
|
/**
|
|
80
80
|
* Sets inline padding using one token for both sides or a `[start, end]` tuple.
|
|
81
81
|
*
|
|
82
|
-
* @
|
|
82
|
+
* @defaultValue No inline padding.
|
|
83
83
|
*/
|
|
84
84
|
hPadding?: GridAxisPadding;
|
|
85
85
|
/**
|
|
86
86
|
* Sets block padding using one token for both sides or a `[start, end]` tuple.
|
|
87
87
|
*
|
|
88
|
-
* @
|
|
88
|
+
* @defaultValue No block padding.
|
|
89
89
|
*/
|
|
90
90
|
vPadding?: GridAxisPadding;
|
|
91
91
|
};
|
|
@@ -18,13 +18,13 @@ export type IconButtonLinkProps = Omit<ButtonLinkProps, 'children' | 'addon' | '
|
|
|
18
18
|
/**
|
|
19
19
|
* Controls the visual button size.
|
|
20
20
|
*
|
|
21
|
-
* @
|
|
21
|
+
* @defaultValue 'm'
|
|
22
22
|
*/
|
|
23
23
|
size?: ButtonLinkProps['size'];
|
|
24
24
|
/**
|
|
25
25
|
* Icon rendered as the sole visible control content.
|
|
26
26
|
*
|
|
27
|
-
* @
|
|
27
|
+
* @defaultValue No default; required for every IconButtonLink.
|
|
28
28
|
*/
|
|
29
29
|
icon: ReactNode;
|
|
30
30
|
};
|
|
@@ -17,13 +17,13 @@ export type IconButtonProps = Omit<ButtonProps, 'children' | 'addon' | 'addonPos
|
|
|
17
17
|
/**
|
|
18
18
|
* Controls the visual button size.
|
|
19
19
|
*
|
|
20
|
-
* @
|
|
20
|
+
* @defaultValue 'm'
|
|
21
21
|
*/
|
|
22
22
|
size?: ButtonProps['size'];
|
|
23
23
|
/**
|
|
24
24
|
* Icon rendered as the sole visible control content.
|
|
25
25
|
*
|
|
26
|
-
* @
|
|
26
|
+
* @defaultValue No default; required for every IconButton.
|
|
27
27
|
*/
|
|
28
28
|
icon: ReactNode;
|
|
29
29
|
};
|
|
@@ -12,6 +12,7 @@ export * from './checkbox';
|
|
|
12
12
|
export * from './chip';
|
|
13
13
|
export * from './clamp-text';
|
|
14
14
|
export * from './dialog';
|
|
15
|
+
export * from './disclosure';
|
|
15
16
|
export * from './elevator';
|
|
16
17
|
export * from './fieldset';
|
|
17
18
|
export * from './fit-text';
|
|
@@ -22,8 +23,11 @@ export * from './linear-progress';
|
|
|
22
23
|
export * from './masonry';
|
|
23
24
|
export * from './menu';
|
|
24
25
|
export * from './meter';
|
|
26
|
+
export * from './number-field';
|
|
27
|
+
export * from './otp-field';
|
|
25
28
|
export * from './popover';
|
|
26
29
|
export * from './progressive-blur';
|
|
30
|
+
export * from './prose';
|
|
27
31
|
export * from './radio';
|
|
28
32
|
export * from './select';
|
|
29
33
|
export * from './separator';
|
|
@@ -6,19 +6,19 @@ import type * as React from 'react';
|
|
|
6
6
|
* Includes Base UI progress root props such as `value`, `min`, `max`, `format`,
|
|
7
7
|
* and `getAriaValueText`, plus optional label, description, and value display.
|
|
8
8
|
*
|
|
9
|
-
* @
|
|
9
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
10
10
|
*/
|
|
11
11
|
export type LinearProgressProps = ProgressRoot.Props & {
|
|
12
12
|
/**
|
|
13
13
|
* Visible label rendered through `Progress.Label` with shared internal `FieldLabel`.
|
|
14
14
|
*
|
|
15
|
-
* @
|
|
15
|
+
* @defaultValue No label is rendered.
|
|
16
16
|
*/
|
|
17
17
|
label?: React.ReactNode;
|
|
18
18
|
/**
|
|
19
19
|
* Static helper copy rendered with `Text` below the progress track.
|
|
20
20
|
*
|
|
21
|
-
* @
|
|
21
|
+
* @defaultValue No description is rendered.
|
|
22
22
|
*/
|
|
23
23
|
description?: React.ReactNode;
|
|
24
24
|
/**
|
|
@@ -27,7 +27,7 @@ export type LinearProgressProps = ProgressRoot.Props & {
|
|
|
27
27
|
* Pass `true` for Base UI default formatting, or a function matching
|
|
28
28
|
* `Progress.Value` `children` to customize the printed label.
|
|
29
29
|
*
|
|
30
|
-
* @
|
|
30
|
+
* @defaultValue Value UI is hidden.
|
|
31
31
|
*/
|
|
32
32
|
renderValue?: boolean | Exclude<React.ComponentProps<typeof PrimitiveProgress.Value>['children'], null | undefined>;
|
|
33
33
|
};
|
|
@@ -6,19 +6,19 @@ import type * as React from 'react';
|
|
|
6
6
|
* Includes standard `div` attributes such as `id`, `role`, `title`, data attributes, and event handlers,
|
|
7
7
|
* plus Base UI `render` support for replacing the default item root.
|
|
8
8
|
*
|
|
9
|
-
* @
|
|
9
|
+
* @defaultValue Native div pass-through props keep React defaults.
|
|
10
10
|
*/
|
|
11
11
|
export type MasonryItemProps = React.ComponentPropsWithRef<'div'> & {
|
|
12
12
|
/**
|
|
13
13
|
* Replaces the default `div` root using Base UI render semantics.
|
|
14
14
|
*
|
|
15
|
-
* @
|
|
15
|
+
* @defaultValue The item renders a `div` root.
|
|
16
16
|
*/
|
|
17
17
|
render?: useRender.RenderProp;
|
|
18
18
|
/**
|
|
19
19
|
* Ref forwarded to the rendered item root element.
|
|
20
20
|
*
|
|
21
|
-
* @
|
|
21
|
+
* @defaultValue No ref is attached.
|
|
22
22
|
*/
|
|
23
23
|
ref?: React.Ref<HTMLElement>;
|
|
24
24
|
};
|
|
@@ -19,19 +19,19 @@ export type MasonryBreakpointCols = {
|
|
|
19
19
|
* Includes standard `div` attributes such as `id`, `role`, `title`, data attributes, and event handlers,
|
|
20
20
|
* plus mobile-first React column distribution controls.
|
|
21
21
|
*
|
|
22
|
-
* @
|
|
22
|
+
* @defaultValue Native div pass-through props keep React defaults.
|
|
23
23
|
*/
|
|
24
24
|
export type MasonryProps = React.ComponentPropsWithRef<'div'> & {
|
|
25
25
|
/**
|
|
26
26
|
* Replaces the default `div` root using Base UI render semantics.
|
|
27
27
|
*
|
|
28
|
-
* @
|
|
28
|
+
* @defaultValue The masonry renders a `div` root.
|
|
29
29
|
*/
|
|
30
30
|
render?: useRender.RenderProp;
|
|
31
31
|
/**
|
|
32
32
|
* Sets the gap between columns (`--vui-masonry-gap`) and the `rowGap` on each column `Stack`.
|
|
33
33
|
*
|
|
34
|
-
* @
|
|
34
|
+
* @defaultValue 'l'
|
|
35
35
|
*/
|
|
36
36
|
gap?: StackProps['columnGap'];
|
|
37
37
|
/**
|
|
@@ -41,7 +41,7 @@ export type MasonryProps = React.ComponentPropsWithRef<'div'> & {
|
|
|
41
41
|
* root's content-box inline size. Keys may be in any order; the largest
|
|
42
42
|
* matching breakpoint wins. Non-finite keys are ignored.
|
|
43
43
|
*
|
|
44
|
-
* @
|
|
44
|
+
* @defaultValue { default: 1, 480: 2, 768: 3, 960: 4, 1280: 5, 2560: 6 }
|
|
45
45
|
*/
|
|
46
46
|
breakpointCols?: MasonryBreakpointCols;
|
|
47
47
|
};
|
|
@@ -3,26 +3,26 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.CheckboxItem props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue `closeOnClick` is `false`.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuCheckboxItemProps = MenuCheckboxItemPrimitive.Props & {
|
|
9
9
|
/**
|
|
10
10
|
* Decorative leading node rendered before the item label.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue No addon is rendered.
|
|
13
13
|
*/
|
|
14
14
|
addon?: React.ReactNode;
|
|
15
15
|
/**
|
|
16
16
|
* End-aligned secondary text (e.g. keyboard shortcut) before the check indicator.
|
|
17
17
|
* Rendered muted `xs`.
|
|
18
18
|
*
|
|
19
|
-
* @
|
|
19
|
+
* @defaultValue No note is rendered.
|
|
20
20
|
*/
|
|
21
21
|
note?: React.ReactNode;
|
|
22
22
|
/**
|
|
23
23
|
* Visual sentiment. `destructive` uses highlight-red wash + text.
|
|
24
24
|
*
|
|
25
|
-
* @
|
|
25
|
+
* @defaultValue Neutral item styling.
|
|
26
26
|
*/
|
|
27
27
|
sentiment?: 'destructive';
|
|
28
28
|
};
|
|
@@ -3,25 +3,25 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.Item props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuItemProps = MenuItemPrimitive.Props & {
|
|
9
9
|
/**
|
|
10
10
|
* Decorative leading node rendered before the item label.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue No addon is rendered.
|
|
13
13
|
*/
|
|
14
14
|
addon?: React.ReactNode;
|
|
15
15
|
/**
|
|
16
16
|
* End-aligned secondary text (e.g. keyboard shortcut). Rendered muted `xs`.
|
|
17
17
|
*
|
|
18
|
-
* @
|
|
18
|
+
* @defaultValue No note is rendered.
|
|
19
19
|
*/
|
|
20
20
|
note?: React.ReactNode;
|
|
21
21
|
/**
|
|
22
22
|
* Visual sentiment. `destructive` uses highlight-red wash + text.
|
|
23
23
|
*
|
|
24
|
-
* @
|
|
24
|
+
* @defaultValue Neutral item styling.
|
|
25
25
|
*/
|
|
26
26
|
sentiment?: 'destructive';
|
|
27
27
|
};
|
|
@@ -3,25 +3,25 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.LinkItem props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuLinkItemProps = MenuLinkItemPrimitive.Props & {
|
|
9
9
|
/**
|
|
10
10
|
* Decorative leading node rendered before the item label.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue No addon is rendered.
|
|
13
13
|
*/
|
|
14
14
|
addon?: React.ReactNode;
|
|
15
15
|
/**
|
|
16
16
|
* End-aligned secondary text (e.g. keyboard shortcut). Rendered muted `xs`.
|
|
17
17
|
*
|
|
18
|
-
* @
|
|
18
|
+
* @defaultValue No note is rendered.
|
|
19
19
|
*/
|
|
20
20
|
note?: React.ReactNode;
|
|
21
21
|
/**
|
|
22
22
|
* Visual sentiment. `destructive` uses highlight-red wash + text.
|
|
23
23
|
*
|
|
24
|
-
* @
|
|
24
|
+
* @defaultValue Neutral item styling.
|
|
25
25
|
*/
|
|
26
26
|
sentiment?: 'destructive';
|
|
27
27
|
};
|
|
@@ -9,7 +9,7 @@ type MenuPopupPositionerProps = Omit<MenuPositioner.Props, 'className' | 'style'
|
|
|
9
9
|
* defaults to `2`. RTL placement comes from Base UI `DirectionProvider`;
|
|
10
10
|
* app must also set HTML/`dir` (or `direction`) so portaled CSS inherits RTL.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue `sideOffset` is `2`.
|
|
13
13
|
*/
|
|
14
14
|
export type MenuPopupProps = MenuPopupPositionerProps & {
|
|
15
15
|
children?: React.ReactNode;
|
|
@@ -18,7 +18,7 @@ export type MenuPopupProps = MenuPopupPositionerProps & {
|
|
|
18
18
|
* Omit for Base UI default (`document.body` from the module window —
|
|
19
19
|
* iframe hosts must pass the iframe document body explicitly).
|
|
20
20
|
*
|
|
21
|
-
* @
|
|
21
|
+
* @defaultValue Base UI FloatingPortal resolution
|
|
22
22
|
*/
|
|
23
23
|
container?: React.ComponentProps<typeof PrimitiveMenu.Portal>['container'];
|
|
24
24
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Elevator } from "../elevator/elevator.js";
|
|
2
1
|
import { Surface } from "../surface/surface.js";
|
|
2
|
+
import { Elevator } from "../elevator/elevator.js";
|
|
3
3
|
import menu_module_default from "./menu.module.js";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Menu } from "@base-ui/react/menu";
|
|
@@ -3,13 +3,13 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.RadioGroup props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue No label is rendered.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuRadioGroupProps = MenuRadioGroupPrimitive.Props & {
|
|
9
9
|
/**
|
|
10
10
|
* Optional accessible group label rendered with `Menu.GroupLabel`.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue No label is rendered.
|
|
13
13
|
*/
|
|
14
14
|
label?: React.ReactNode;
|
|
15
15
|
};
|
|
@@ -3,26 +3,26 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.RadioItem props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue `closeOnClick` is `false`.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuRadioItemProps = MenuRadioItemPrimitive.Props & {
|
|
9
9
|
/**
|
|
10
10
|
* Decorative leading node rendered before the item label.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue No addon is rendered.
|
|
13
13
|
*/
|
|
14
14
|
addon?: React.ReactNode;
|
|
15
15
|
/**
|
|
16
16
|
* End-aligned secondary text (e.g. keyboard shortcut) before the check indicator.
|
|
17
17
|
* Rendered muted `xs`.
|
|
18
18
|
*
|
|
19
|
-
* @
|
|
19
|
+
* @defaultValue No note is rendered.
|
|
20
20
|
*/
|
|
21
21
|
note?: React.ReactNode;
|
|
22
22
|
/**
|
|
23
23
|
* Visual sentiment. `destructive` uses highlight-red wash + text.
|
|
24
24
|
*
|
|
25
|
-
* @
|
|
25
|
+
* @defaultValue Neutral item styling.
|
|
26
26
|
*/
|
|
27
27
|
sentiment?: 'destructive';
|
|
28
28
|
};
|
|
@@ -3,7 +3,7 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.Separator props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue `orientation` is `'horizontal'`.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuSeparatorProps = React.ComponentProps<typeof PrimitiveMenu.Separator>;
|
|
9
9
|
export declare const MenuSeparator: React.FC<MenuSeparatorProps>;
|
|
@@ -3,19 +3,19 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Menu.SubmenuTrigger props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue Trailing end chevron; RTL mirror via CSS `:dir(rtl)`.
|
|
7
7
|
*/
|
|
8
8
|
export type MenuSubmenuTriggerProps = MenuSubmenuTriggerPrimitive.Props & {
|
|
9
9
|
/**
|
|
10
10
|
* Decorative leading node rendered before the item label.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue No addon is rendered.
|
|
13
13
|
*/
|
|
14
14
|
addon?: React.ReactNode;
|
|
15
15
|
/**
|
|
16
16
|
* Visual sentiment. `destructive` uses highlight-red wash + text.
|
|
17
17
|
*
|
|
18
|
-
* @
|
|
18
|
+
* @defaultValue Neutral item styling.
|
|
19
19
|
*/
|
|
20
20
|
sentiment?: 'destructive';
|
|
21
21
|
};
|
|
@@ -17,7 +17,7 @@ import type * as React from 'react';
|
|
|
17
17
|
* triggers. `children` may be a node or a `({ payload }) => ReactNode` render function
|
|
18
18
|
* for per-trigger content.
|
|
19
19
|
*
|
|
20
|
-
* @
|
|
20
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
21
21
|
*/
|
|
22
22
|
export type MenuProps = MenuRoot.Props;
|
|
23
23
|
/**
|
|
@@ -26,7 +26,7 @@ export type MenuProps = MenuRoot.Props;
|
|
|
26
26
|
* Pass-through to Base UI `Menu.Trigger`. Use `render` for the visible control
|
|
27
27
|
* (`Button`, `IconButton`, or another element).
|
|
28
28
|
*
|
|
29
|
-
* @
|
|
29
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
30
30
|
*/
|
|
31
31
|
export type MenuTriggerProps = MenuTriggerNamespace.Props;
|
|
32
32
|
/**
|
|
@@ -35,7 +35,7 @@ export type MenuTriggerProps = MenuTriggerNamespace.Props;
|
|
|
35
35
|
* Pass-through to Base UI `Menu.SubmenuRoot`. Compose `Menu.SubmenuTrigger` and
|
|
36
36
|
* nested `Menu.Popup` as children.
|
|
37
37
|
*
|
|
38
|
-
* @
|
|
38
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
39
39
|
*/
|
|
40
40
|
export type MenuSubmenuProps = React.ComponentProps<typeof PrimitiveMenu.SubmenuRoot>;
|
|
41
41
|
export declare const MenuTrigger: PrimitiveMenu.Trigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-meter-track-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-meter-track-background{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-meter-indicator-color{syntax:"<color>";inherits:true;initial-value:#0000}.viraui__meter-module__Meter_YRI7d{--vui-meter-track-size:var(--space-xs);--vui-meter-track-background:var(--global-contrast)
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-meter-track-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-meter-track-background{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-meter-indicator-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-meter-track-opacity{syntax:"<number> | <percentage>";inherits:false;initial-value:15%}.viraui__meter-module__Meter_YRI7d{--vui-meter-track-size:var(--space-xs);--vui-meter-indicator-color:var(--global-primary);--vui-meter-track-background:oklab(from var(--vui-meter-indicator-color) l a b / var(--vui-meter-track-opacity));&[data-variant=primary]{--vui-meter-track-background:var(--global-contrast)}&[data-variant=gray]{--vui-meter-indicator-color:var(--highlight-gray)}&[data-variant=slate]{--vui-meter-indicator-color:var(--highlight-slate)}&[data-variant=yellow]{--vui-meter-indicator-color:var(--highlight-yellow)}&[data-variant=green]{--vui-meter-indicator-color:var(--highlight-green)}&[data-variant=blue]{--vui-meter-indicator-color:var(--highlight-blue)}&[data-variant=red]{--vui-meter-indicator-color:var(--highlight-red)}&[data-variant=cyan]{--vui-meter-indicator-color:var(--highlight-cyan)}&[data-variant=purple]{--vui-meter-indicator-color:var(--highlight-purple)}&[data-variant=indigo]{--vui-meter-indicator-color:var(--highlight-indigo)}&[data-variant=acid]{--vui-meter-indicator-color:var(--highlight-acid)}&[data-variant=salmon]{--vui-meter-indicator-color:var(--highlight-salmon)}&[data-variant=magenta]{--vui-meter-indicator-color:var(--highlight-magenta)}& .viraui__meter-module__Track_uF9wy{--__corner-shape:round;position:relative;overflow:hidden;block-size:round(to-zero,var(--vui-meter-track-size),2px);background:var(--vui-meter-track-background);border-radius:var(--radius-full)}& .viraui__meter-module__Indicator_dNjqU{block-size:100%;background:var(--vui-meter-indicator-color);border-radius:inherit}}}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
import { Meter as PrimitiveMeter, MeterRoot } from '@base-ui/react';
|
|
2
|
+
import { ThemeTypes } from '@viraui/foundation/vira/types';
|
|
2
3
|
import type * as React from 'react';
|
|
3
4
|
/**
|
|
4
5
|
* Public Meter props.
|
|
5
6
|
*
|
|
6
7
|
* Includes Base UI meter root props such as `value`, `min`, `max`, `format`,
|
|
7
|
-
* and `getAriaValueText`, plus optional label, description,
|
|
8
|
+
* and `getAriaValueText`, plus optional label, description, value display, and
|
|
9
|
+
* highlight `variant` for track/indicator color.
|
|
8
10
|
*
|
|
9
|
-
* @
|
|
11
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
10
12
|
*/
|
|
11
13
|
export type MeterProps = MeterRoot.Props & {
|
|
12
14
|
/**
|
|
13
15
|
* Visible label rendered through `Meter.Label` with shared internal `FieldLabel`.
|
|
14
16
|
*
|
|
15
|
-
* @
|
|
17
|
+
* @defaultValue No label is rendered.
|
|
16
18
|
*/
|
|
17
19
|
label?: React.ReactNode;
|
|
18
20
|
/**
|
|
19
21
|
* Static helper copy rendered with `Text` below the meter track.
|
|
20
22
|
*
|
|
21
|
-
* @
|
|
23
|
+
* @defaultValue No description is rendered.
|
|
22
24
|
*/
|
|
23
25
|
description?: React.ReactNode;
|
|
24
26
|
/**
|
|
@@ -27,8 +29,16 @@ export type MeterProps = MeterRoot.Props & {
|
|
|
27
29
|
* Pass `true` for Base UI default formatting, or a function matching
|
|
28
30
|
* `Meter.Value` `children` to customize the printed label.
|
|
29
31
|
*
|
|
30
|
-
* @
|
|
32
|
+
* @defaultValue Value UI is hidden.
|
|
31
33
|
*/
|
|
32
34
|
renderValue?: boolean | Exclude<React.ComponentProps<typeof PrimitiveMeter.Value>['children'], null | undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Selects track and indicator colors. `primary` uses brand primary on the
|
|
37
|
+
* indicator; highlight token names tint both track (wash) and indicator
|
|
38
|
+
* via `--highlight-*`, matching Chip highlight variants.
|
|
39
|
+
*
|
|
40
|
+
* @defaultValue 'primary'
|
|
41
|
+
*/
|
|
42
|
+
variant?: 'primary' | ThemeTypes['highlight'];
|
|
33
43
|
};
|
|
34
44
|
export declare const Meter: React.FC<MeterProps>;
|
|
@@ -7,11 +7,12 @@ 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, renderValue, value, ...otherProps }) => {
|
|
10
|
+
var Meter$1 = ({ className, description, label, renderValue, value, variant = "primary", ...otherProps }) => {
|
|
11
11
|
const showRenderedValue = renderValue === true || typeof renderValue === "function";
|
|
12
12
|
return /* @__PURE__ */ jsxs(Meter.Root, {
|
|
13
13
|
...otherProps,
|
|
14
14
|
className: clsx(meter_module_default.Meter, className),
|
|
15
|
+
"data-variant": variant,
|
|
15
16
|
value,
|
|
16
17
|
render: /* @__PURE__ */ jsx(Stack, {
|
|
17
18
|
rowGap: "m",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{.viraui__number-field-module__NumberField_l7i9a{display:contents}.viraui__number-field-module__Field_Ud43i{--vui-textfield-input-height:var(--space-2xl);--vui-textfield-control-group-background:var(--base-1);--vui-textfield-control-group-color:var(--global-foreground);--vui-textfield-control-group-border-color:var(--global-contrast);--vui-textfield-control-group-border-radius:var(--radius-m);--vui-field-label-padding-inline:calc(var(--vui-textfield-control-group-border-radius) / 2);max-block-size:min-content;&:has([required]) .viraui__number-field-module__Label_-Sji0:after{content:" *";color:var(--highlight-red)}}.viraui__number-field-module__ControlGroup_CX5th{box-sizing:border-box;block-size:round(to-zero,var(--vui-textfield-input-height),2px);background:var(--vui-textfield-control-group-background);color:var(--vui-textfield-control-group-color);border:1px solid var(--vui-textfield-control-group-border-color);border-radius:var(--vui-textfield-control-group-border-radius);&:has(.viraui__number-field-module__CustomBasicInput_6fmMO:focus),&:has(.viraui__number-field-module__CustomBasicInput_6fmMO:focus-visible),&:has(.viraui__number-field-module__CustomBasicInput_6fmMO[data-focused]){outline:var(--outline);outline-offset:var(--outline-offset)}&:has(.viraui__number-field-module__CustomBasicInput_6fmMO[data-invalid][data-dirty]){--vui-textfield-control-group-border-color:var(--highlight-red);box-shadow:none;outline-color:oklab(from var(--highlight-red) l a b/.5)}&:has(.viraui__number-field-module__CustomBasicInput_6fmMO:disabled),&:has(.viraui__number-field-module__CustomBasicInput_6fmMO[data-disabled]){--vui-textfield-control-group-background:var(--global-disabled-background);--vui-textfield-control-group-border-color:#0000;--vui-textfield-control-group-color:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__number-field-module__Addon_QwT1q{min-inline-size:var(--space-xl)}.viraui__number-field-module__ScrubArea_3Wzje{-webkit-user-select:none;user-select:none;:where(& *){cursor:ew-resize;-webkit-user-select:none;user-select:none}}.viraui__number-field-module__Description_GWcij{padding-inline:calc(var(--vui-textfield-control-group-border-radius) / 2)}}@layer viraui.overrides{.viraui__number-field-module__CustomBasicInput_6fmMO{text-align:center;&:focus,&:focus-visible{outline:none}}}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { FieldRoot } from '@base-ui/react/field';
|
|
2
|
+
import { NumberFieldRoot as PrimitiveNumberFieldRoot } from '@base-ui/react/number-field';
|
|
3
|
+
import { BasicInputProps } from '../basic-input';
|
|
4
|
+
import type * as React from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Public NumberField props.
|
|
7
|
+
*
|
|
8
|
+
* Base UI Number Field Root pass-through (`value`, `min`/`max`/`step`, `format`, `name`,
|
|
9
|
+
* `disabled`, `readOnly`, …) plus Field chrome, IconButton steppers, scrub, and width knobs.
|
|
10
|
+
* String `description` also sets numeric-input `aria-roledescription`. Group / Decrement /
|
|
11
|
+
* Increment / ScrubArea stay internal.
|
|
12
|
+
*
|
|
13
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
14
|
+
*/
|
|
15
|
+
export type NumberFieldProps = Omit<PrimitiveNumberFieldRoot.Props, 'render' | 'children' | 'ref' | 'style'> & Omit<FieldRoot.Props, 'ref' | 'render' | 'name' | 'style' | keyof PrimitiveNumberFieldRoot.Props> & {
|
|
16
|
+
/**
|
|
17
|
+
* Ref to the visible numeric input.
|
|
18
|
+
*
|
|
19
|
+
* @defaultValue No ref is attached.
|
|
20
|
+
*/
|
|
21
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
22
|
+
/**
|
|
23
|
+
* Presentation styles on the Field chrome host (not the `display: contents` Root).
|
|
24
|
+
*
|
|
25
|
+
* @defaultValue No inline style is applied.
|
|
26
|
+
*/
|
|
27
|
+
style?: React.CSSProperties;
|
|
28
|
+
/**
|
|
29
|
+
* Visible label rendered with shared internal `FieldLabel`. When present and
|
|
30
|
+
* `labelScrub` is true, the label hosts Base UI scrub.
|
|
31
|
+
*
|
|
32
|
+
* @defaultValue No label is rendered.
|
|
33
|
+
*/
|
|
34
|
+
label?: React.ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* Helper copy rendered with `Field.Description` and `Text` while the field is valid.
|
|
37
|
+
* When a string, also sets `aria-roledescription` on the numeric input.
|
|
38
|
+
*
|
|
39
|
+
* @defaultValue No description is rendered.
|
|
40
|
+
*/
|
|
41
|
+
description?: React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Error copy rendered with `Field.Error` and `Text` in the same slot as `description`.
|
|
44
|
+
* Replaces description while the field is invalid and dirty.
|
|
45
|
+
*
|
|
46
|
+
* @defaultValue No static error copy is rendered.
|
|
47
|
+
*/
|
|
48
|
+
error?: React.ReactNode;
|
|
49
|
+
/**
|
|
50
|
+
* Where decrement/increment sit relative to the numeric input.
|
|
51
|
+
* `split` = button | input | button; `grouped` = both steppers at inline-end
|
|
52
|
+
* (physical right in LTR, left in RTL — follows document/`dir` / Base UI direction).
|
|
53
|
+
*
|
|
54
|
+
* @defaultValue 'split'
|
|
55
|
+
*/
|
|
56
|
+
stepperPlacement?: 'split' | 'grouped';
|
|
57
|
+
/**
|
|
58
|
+
* When `true` and `label` is set, wrap the label in Base UI `ScrubArea`.
|
|
59
|
+
* When `false` or no label, render a plain field label.
|
|
60
|
+
*
|
|
61
|
+
* @defaultValue true
|
|
62
|
+
*/
|
|
63
|
+
labelScrub?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* When `true`, field and control row fill the column; only the numeric input flex-grows.
|
|
66
|
+
* Steppers stay intrinsic size (`data-grow="false"`).
|
|
67
|
+
*
|
|
68
|
+
* @defaultValue false
|
|
69
|
+
*/
|
|
70
|
+
fullWidth?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* When `true`, sets `field-sizing: content` on the numeric input only.
|
|
73
|
+
*
|
|
74
|
+
* @defaultValue undefined (browser fixed)
|
|
75
|
+
*/
|
|
76
|
+
fitContent?: BasicInputProps['fitContent'];
|
|
77
|
+
};
|
|
78
|
+
export declare const NumberField: React.FC<NumberFieldProps>;
|