@viraui/react 2026.7.0-next.0 → 2026.7.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog.json +13 -1
- 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/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 +1 -1
- package/dist/components/basic-input/input-control-group.d.ts +2 -2
- package/dist/components/beam/beam.d.ts +12 -12
- 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-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 +2 -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-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.d.ts +5 -5
- 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 +1 -1
- package/dist/components/otp-field/otp-field-input.d.ts +1 -1
- package/dist/components/otp-field/otp-field-separator.d.ts +3 -1
- package/dist/components/otp-field/otp-field-separator.js +5 -1
- package/dist/components/otp-field/otp-field.d.ts +4 -5
- package/dist/components/otp-field/otp-field.js +0 -1
- 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/prose.css +1 -1
- package/dist/components/prose/prose.d.ts +4 -4
- 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/separator/separator.d.ts +9 -9
- 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.d.ts +23 -23
- package/dist/components/textarea/textarea.d.ts +6 -6
- package/dist/components/textfield/textfield.d.ts +1 -1
- package/dist/components/title/title.d.ts +21 -21
- 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-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 +3 -1
- package/dist/specs/components/accordion/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/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/meta.xml +1 -4
- package/dist/specs/components/otp-field/patterns.xml +8 -8
- package/dist/specs/components/otp-field/props.xml +2 -2
- package/dist/specs/components/otp-field/usage.xml +4 -4
- package/dist/specs/index.xml +22 -2
- package/package.json +2 -2
|
@@ -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>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import './number-field.css';
|
|
3
|
+
import { clsx } from "../../core/clsx.js";
|
|
4
|
+
import { ChromeMinus, ChromePlus } from "../../internal/chrome-icons/chrome-icons.js";
|
|
5
|
+
import { BasicInput } from "../basic-input/basic-input.js";
|
|
6
|
+
import { FieldHelperCopy } from "../basic-input/field-helper-copy.js";
|
|
7
|
+
import { FieldLabel } from "../basic-input/field-label.js";
|
|
8
|
+
import { Stack } from "../stack/stack.js";
|
|
9
|
+
import { IconButton } from "../icon-button/icon-button.js";
|
|
10
|
+
import number_field_module_default from "./number-field.module.js";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
import { Field } from "@base-ui/react/field";
|
|
13
|
+
import { NumberField } from "@base-ui/react/number-field";
|
|
14
|
+
//#region src/components/number-field/number-field.tsx
|
|
15
|
+
var renderStepperAddon = (position, children) => /* @__PURE__ */ jsx(Stack, {
|
|
16
|
+
className: number_field_module_default.Addon,
|
|
17
|
+
"data-grow": "false",
|
|
18
|
+
"data-position": position,
|
|
19
|
+
"data-shrink": "false",
|
|
20
|
+
hAlign: "center",
|
|
21
|
+
hPadding: "xs",
|
|
22
|
+
inline: true,
|
|
23
|
+
vAlign: "center",
|
|
24
|
+
vPadding: "xs",
|
|
25
|
+
children
|
|
26
|
+
});
|
|
27
|
+
var NumberField$1 = ({ className, description, dirty, disabled, error, fitContent, fullWidth = false, invalid, label, labelScrub = true, ref, stepperPlacement = "split", style, touched, validate, validationDebounceTime, validationMode, ...rootProps }) => {
|
|
28
|
+
const decrement = /* @__PURE__ */ jsx(NumberField.Decrement, { render: /* @__PURE__ */ jsx(IconButton, {
|
|
29
|
+
"aria-label": "Decrement",
|
|
30
|
+
icon: /* @__PURE__ */ jsx(ChromeMinus, {}),
|
|
31
|
+
size: "s",
|
|
32
|
+
type: "button",
|
|
33
|
+
variant: "secondary"
|
|
34
|
+
}) });
|
|
35
|
+
const increment = /* @__PURE__ */ jsx(NumberField.Increment, { render: /* @__PURE__ */ jsx(IconButton, {
|
|
36
|
+
"aria-label": "Increment",
|
|
37
|
+
icon: /* @__PURE__ */ jsx(ChromePlus, {}),
|
|
38
|
+
size: "s",
|
|
39
|
+
type: "button",
|
|
40
|
+
variant: "secondary"
|
|
41
|
+
}) });
|
|
42
|
+
const stepperPair = /* @__PURE__ */ jsxs(Stack, {
|
|
43
|
+
columnGap: "xs",
|
|
44
|
+
direction: "row",
|
|
45
|
+
vAlign: "center",
|
|
46
|
+
children: [decrement, increment]
|
|
47
|
+
});
|
|
48
|
+
let startAddon;
|
|
49
|
+
let endAddon;
|
|
50
|
+
if (stepperPlacement === "grouped") endAddon = renderStepperAddon("end", stepperPair);
|
|
51
|
+
else {
|
|
52
|
+
startAddon = renderStepperAddon("start", decrement);
|
|
53
|
+
endAddon = renderStepperAddon("end", increment);
|
|
54
|
+
}
|
|
55
|
+
const labelContent = label ? /* @__PURE__ */ jsx(FieldLabel, { children: label }) : null;
|
|
56
|
+
return /* @__PURE__ */ jsx(NumberField.Root, {
|
|
57
|
+
className: number_field_module_default.NumberField,
|
|
58
|
+
disabled,
|
|
59
|
+
...rootProps,
|
|
60
|
+
children: /* @__PURE__ */ jsxs(Field.Root, {
|
|
61
|
+
className: clsx(number_field_module_default.Field, className),
|
|
62
|
+
dirty,
|
|
63
|
+
disabled,
|
|
64
|
+
invalid,
|
|
65
|
+
render: /* @__PURE__ */ jsx(Stack, {
|
|
66
|
+
expandChildren: true,
|
|
67
|
+
fullWidth,
|
|
68
|
+
rowGap: "s",
|
|
69
|
+
style
|
|
70
|
+
}),
|
|
71
|
+
touched,
|
|
72
|
+
validate,
|
|
73
|
+
validationDebounceTime,
|
|
74
|
+
validationMode,
|
|
75
|
+
children: [
|
|
76
|
+
label && labelScrub && /* @__PURE__ */ jsx(NumberField.ScrubArea, {
|
|
77
|
+
className: number_field_module_default.ScrubArea,
|
|
78
|
+
children: /* @__PURE__ */ jsx(Field.Label, {
|
|
79
|
+
className: number_field_module_default.Label,
|
|
80
|
+
children: labelContent
|
|
81
|
+
})
|
|
82
|
+
}),
|
|
83
|
+
label && !labelScrub && /* @__PURE__ */ jsx(Field.Label, {
|
|
84
|
+
className: number_field_module_default.Label,
|
|
85
|
+
children: labelContent
|
|
86
|
+
}),
|
|
87
|
+
/* @__PURE__ */ jsxs(NumberField.Group, {
|
|
88
|
+
render: /* @__PURE__ */ jsx(Stack, {
|
|
89
|
+
className: number_field_module_default.ControlGroup,
|
|
90
|
+
direction: "row",
|
|
91
|
+
expandChildren: true,
|
|
92
|
+
vPadding: "xs",
|
|
93
|
+
fullWidth: true,
|
|
94
|
+
vAlign: "stretch"
|
|
95
|
+
}),
|
|
96
|
+
children: [
|
|
97
|
+
startAddon,
|
|
98
|
+
/* @__PURE__ */ jsx(BasicInput, {
|
|
99
|
+
className: number_field_module_default.CustomBasicInput,
|
|
100
|
+
disabled,
|
|
101
|
+
fitContent,
|
|
102
|
+
render: /* @__PURE__ */ jsx(NumberField.Input, {
|
|
103
|
+
"aria-roledescription": typeof description === "string" ? description : void 0,
|
|
104
|
+
ref
|
|
105
|
+
})
|
|
106
|
+
}),
|
|
107
|
+
endAddon
|
|
108
|
+
]
|
|
109
|
+
}),
|
|
110
|
+
/* @__PURE__ */ jsx(FieldHelperCopy, {
|
|
111
|
+
className: number_field_module_default.Description,
|
|
112
|
+
description,
|
|
113
|
+
error
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
//#endregion
|
|
120
|
+
export { NumberField$1 as NumberField };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/components/number-field/number-field.module.css
|
|
2
|
+
var NumberField = "viraui__number-field-module__NumberField_l7i9a";
|
|
3
|
+
var Field = "viraui__number-field-module__Field_Ud43i";
|
|
4
|
+
var Label = "viraui__number-field-module__Label_-Sji0";
|
|
5
|
+
var ControlGroup = "viraui__number-field-module__ControlGroup_CX5th";
|
|
6
|
+
var CustomBasicInput = "viraui__number-field-module__CustomBasicInput_6fmMO";
|
|
7
|
+
var Addon = "viraui__number-field-module__Addon_QwT1q";
|
|
8
|
+
var ScrubArea = "viraui__number-field-module__ScrubArea_3Wzje";
|
|
9
|
+
var Description = "viraui__number-field-module__Description_GWcij";
|
|
10
|
+
var number_field_module_default = {
|
|
11
|
+
NumberField,
|
|
12
|
+
Field,
|
|
13
|
+
Label,
|
|
14
|
+
ControlGroup,
|
|
15
|
+
CustomBasicInput,
|
|
16
|
+
Addon,
|
|
17
|
+
ScrubArea,
|
|
18
|
+
Description
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { Addon, ControlGroup, CustomBasicInput, Description, Field, Label, NumberField, ScrubArea, number_field_module_default as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { OTPField } from './otp-field';
|
|
2
|
-
export type {
|
|
2
|
+
export type { OTPFieldProps } from './otp-field';
|
|
3
3
|
export type { OTPFieldInputProps } from './otp-field-input';
|
|
4
4
|
export type { OTPFieldSeparatorProps } from './otp-field-separator';
|
|
@@ -6,7 +6,7 @@ import * as React from 'react';
|
|
|
6
6
|
* Base UI OTP Input. Chrome is `render={<Textfield controlOnly fitContent size={1} />}`.
|
|
7
7
|
* No per-slot label, description, error, addons, or public `render`.
|
|
8
8
|
*
|
|
9
|
-
* @
|
|
9
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
10
10
|
*/
|
|
11
11
|
export type OTPFieldInputProps = Omit<PrimitiveOTPFieldInput.Props, 'render'>;
|
|
12
12
|
export declare const OTPFieldInput: React.FC<OTPFieldInputProps>;
|
|
@@ -5,7 +5,9 @@ import * as React from 'react';
|
|
|
5
5
|
*
|
|
6
6
|
* Base UI OTP Separator with Vira `Separator` chrome. Not an input.
|
|
7
7
|
*
|
|
8
|
-
* @
|
|
8
|
+
* @defaultValue `orientation` is `'horizontal'`. Default `render` is a short Vira `Separator`
|
|
9
|
+
* with `minWidth` + `maxWidth` `var(--space-m)` so the dash stays visible in the slot row
|
|
10
|
+
* (`data-shrink="false"` alone is not enough — content size stays 0 under flex).
|
|
9
11
|
*/
|
|
10
12
|
export type OTPFieldSeparatorProps = React.ComponentPropsWithRef<typeof PrimitiveOTPField.Separator>;
|
|
11
13
|
export declare const OTPFieldSeparator: React.FC<OTPFieldSeparatorProps>;
|
|
@@ -3,9 +3,13 @@ import { jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import "react";
|
|
4
4
|
import { OTPField } from "@base-ui/react/otp-field";
|
|
5
5
|
//#region src/components/otp-field/otp-field-separator.tsx
|
|
6
|
+
var otpSeparatorChrome = {
|
|
7
|
+
maxWidth: "var(--space-m)",
|
|
8
|
+
minWidth: "var(--space-m)"
|
|
9
|
+
};
|
|
6
10
|
var OTPFieldSeparator = ({ className, orientation = "horizontal", render, ...separatorProps }) => /* @__PURE__ */ jsx(OTPField.Separator, {
|
|
7
11
|
render: render ?? /* @__PURE__ */ jsx(Separator, {
|
|
8
|
-
|
|
12
|
+
...otpSeparatorChrome,
|
|
9
13
|
orientation
|
|
10
14
|
}),
|
|
11
15
|
...separatorProps,
|
|
@@ -4,15 +4,15 @@ import { OTPFieldInputProps } from './otp-field-input';
|
|
|
4
4
|
import { OTPFieldSeparatorProps } from './otp-field-separator';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
/**
|
|
7
|
-
* Public OTPField
|
|
7
|
+
* Public OTPField props.
|
|
8
8
|
*
|
|
9
9
|
* Field chrome plus Base UI OTP Root. `length` is required and does not spawn Inputs —
|
|
10
10
|
* list exactly that many `OTPField.Input` children. `render` replaces the OTP primitive
|
|
11
11
|
* root (slot cluster), not the Field wrapper.
|
|
12
12
|
*
|
|
13
|
-
* @
|
|
13
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
14
14
|
*/
|
|
15
|
-
export type
|
|
15
|
+
export type OTPFieldProps = PrimitiveOTPFieldRoot.Props & Omit<FieldRoot.Props, 'ref' | 'render'> & {
|
|
16
16
|
/**
|
|
17
17
|
* Visible label rendered with shared internal `FieldLabel`. Names the first slot.
|
|
18
18
|
*
|
|
@@ -40,8 +40,7 @@ export type OTPFieldRootProps = PrimitiveOTPFieldRoot.Props & Omit<FieldRoot.Pro
|
|
|
40
40
|
*/
|
|
41
41
|
fullWidth?: boolean;
|
|
42
42
|
};
|
|
43
|
-
type OTPFieldComponent = React.FC<
|
|
44
|
-
Root: React.FC<OTPFieldRootProps>;
|
|
43
|
+
type OTPFieldComponent = React.FC<OTPFieldProps> & {
|
|
45
44
|
Input: React.FC<OTPFieldInputProps>;
|
|
46
45
|
Separator: React.FC<OTPFieldSeparatorProps>;
|
|
47
46
|
};
|
|
@@ -8,7 +8,7 @@ type PopoverSheetContainerProps = {
|
|
|
8
8
|
* Omit for Base UI default (`document.body` from the module window —
|
|
9
9
|
* iframe hosts must pass the iframe document body explicitly).
|
|
10
10
|
*
|
|
11
|
-
* @
|
|
11
|
+
* @defaultValue Base UI FloatingPortal resolution
|
|
12
12
|
*/
|
|
13
13
|
container?: React.ComponentProps<typeof PrimitivePopover.Portal>['container'];
|
|
14
14
|
};
|
|
@@ -17,7 +17,7 @@ type PopoverSheetStyledProps = PopoverSheetPositionerProps & PopoverSheetContain
|
|
|
17
17
|
* Whether to skip the built-in Surface, header, and close chrome and render
|
|
18
18
|
* only the positioning/animation shell (Portal + Positioner + Popup + Viewport).
|
|
19
19
|
*
|
|
20
|
-
* @
|
|
20
|
+
* @defaultValue false
|
|
21
21
|
*/
|
|
22
22
|
unstyled?: false;
|
|
23
23
|
/**
|
|
@@ -27,19 +27,19 @@ type PopoverSheetStyledProps = PopoverSheetPositionerProps & PopoverSheetContain
|
|
|
27
27
|
/**
|
|
28
28
|
* Supporting copy announced with the title.
|
|
29
29
|
*
|
|
30
|
-
* @
|
|
30
|
+
* @defaultValue No description is rendered.
|
|
31
31
|
*/
|
|
32
32
|
description?: React.ReactNode;
|
|
33
33
|
/**
|
|
34
34
|
* Whether to show the built-in flat IconButton close control.
|
|
35
35
|
*
|
|
36
|
-
* @
|
|
36
|
+
* @defaultValue false
|
|
37
37
|
*/
|
|
38
38
|
showCloseButton?: boolean;
|
|
39
39
|
/**
|
|
40
40
|
* Aligns the header content.
|
|
41
41
|
*
|
|
42
|
-
* @
|
|
42
|
+
* @defaultValue `start`
|
|
43
43
|
*/
|
|
44
44
|
headerAlign?: Extract<StackProps['hAlign'], 'start' | 'center' | 'end'>;
|
|
45
45
|
};
|
|
@@ -68,7 +68,7 @@ type PopoverSheetUnstyledProps = PopoverSheetPositionerProps & PopoverSheetConta
|
|
|
68
68
|
* and must compose `Popover.Title` (and `Popover.Description` when needed) for
|
|
69
69
|
* accessible naming.
|
|
70
70
|
*
|
|
71
|
-
* @
|
|
71
|
+
* @defaultValue `sideOffset` is `8`; no description, no close button, styled chrome.
|
|
72
72
|
*/
|
|
73
73
|
export type PopoverSheetProps = PopoverSheetStyledProps | PopoverSheetUnstyledProps;
|
|
74
74
|
export declare const PopoverSheet: React.FC<PopoverSheetProps>;
|
|
@@ -9,7 +9,7 @@ import type * as React from 'react';
|
|
|
9
9
|
* and `handle` for detached/multiple triggers. `children` may be a node or a
|
|
10
10
|
* `({ payload }) => ReactNode` render function for per-trigger content.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
13
13
|
*/
|
|
14
14
|
export type PopoverProps = PopoverRoot.Props;
|
|
15
15
|
/**
|
|
@@ -21,7 +21,7 @@ export type PopoverProps = PopoverRoot.Props;
|
|
|
21
21
|
* `payload` for per-trigger content, `openOnHover`/`delay`/`closeDelay` for hover
|
|
22
22
|
* open behavior, and `id` for controlled activation via the Root `triggerId` prop.
|
|
23
23
|
*
|
|
24
|
-
* @
|
|
24
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
25
25
|
*/
|
|
26
26
|
export type PopoverTriggerProps = PopoverTriggerNamespace.Props;
|
|
27
27
|
/**
|
|
@@ -33,7 +33,7 @@ export type PopoverTriggerProps = PopoverTriggerNamespace.Props;
|
|
|
33
33
|
*
|
|
34
34
|
* Compose inside `Popover.Sheet` so the control closes the open popover.
|
|
35
35
|
*
|
|
36
|
-
* @
|
|
36
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
37
37
|
*/
|
|
38
38
|
export type PopoverCloseProps = PopoverCloseNamespace.Props;
|
|
39
39
|
/**
|
|
@@ -44,7 +44,7 @@ export type PopoverCloseProps = PopoverCloseNamespace.Props;
|
|
|
44
44
|
* `Popover.Sheet` so the popup keeps an accessible name; the styled sheet
|
|
45
45
|
* renders it internally from its `title` prop.
|
|
46
46
|
*
|
|
47
|
-
* @
|
|
47
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
48
48
|
*/
|
|
49
49
|
export type PopoverTitleProps = PopoverTitleNamespace.Props;
|
|
50
50
|
/**
|
|
@@ -55,7 +55,7 @@ export type PopoverTitleProps = PopoverTitleNamespace.Props;
|
|
|
55
55
|
* `Popover.Sheet`; the styled sheet renders it internally from its
|
|
56
56
|
* `description` prop.
|
|
57
57
|
*
|
|
58
|
-
* @
|
|
58
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
59
59
|
*/
|
|
60
60
|
export type PopoverDescriptionProps = PopoverDescriptionNamespace.Props;
|
|
61
61
|
export declare const PopoverTrigger: PrimitivePopover.Trigger;
|
|
@@ -6,31 +6,31 @@ import type * as React from 'react';
|
|
|
6
6
|
* Includes standard `div` attributes such as `id`, `className`, and event handlers,
|
|
7
7
|
* plus Vira-owned progressive backdrop blur controls.
|
|
8
8
|
*
|
|
9
|
-
* @
|
|
9
|
+
* @defaultValue Native div pass-through props keep React defaults.
|
|
10
10
|
*/
|
|
11
11
|
export type ProgressiveBlurProps = React.ComponentPropsWithRef<'div'> & {
|
|
12
12
|
/**
|
|
13
13
|
* Sets the maximum blur radius applied to the first layer at the selected edge.
|
|
14
14
|
*
|
|
15
|
-
* @
|
|
15
|
+
* @defaultValue '16px'
|
|
16
16
|
*/
|
|
17
17
|
blur?: string;
|
|
18
18
|
/**
|
|
19
19
|
* Selects the edge where maximum blur starts and fades toward the opposite edge.
|
|
20
20
|
*
|
|
21
|
-
* @
|
|
21
|
+
* @defaultValue 'bottom'
|
|
22
22
|
*/
|
|
23
23
|
direction?: ProgressiveBlurDirection;
|
|
24
24
|
/**
|
|
25
25
|
* Selects the easing curve used to distribute blur factors across internal layers.
|
|
26
26
|
*
|
|
27
|
-
* @
|
|
27
|
+
* @defaultValue 'exponential'
|
|
28
28
|
*/
|
|
29
29
|
easing?: ProgressiveBlurEasing;
|
|
30
30
|
/**
|
|
31
31
|
* Sets the number of internal blur layers. Values are clamped to `2..16`.
|
|
32
32
|
*
|
|
33
|
-
* @
|
|
33
|
+
* @defaultValue Varies by easing: linear `6`, ease-in/out `8`, ease-in-out `10`, exponential `8`.
|
|
34
34
|
*/
|
|
35
35
|
steps?: number;
|
|
36
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-prose-align{syntax:"*";inherits:false;initial-value:start}@property --vui-prose-gap-blocks{syntax:"<length>";inherits:true;initial-value:2em}@property --vui-prose-gap-heading-start{syntax:"<length>";inherits:true;initial-value:1.3em}@property --vui-prose-gap-heading-end{syntax:"<length>";inherits:true;initial-value:.8em}.viraui__prose-module__Prose_8yO9h{--vui-prose-gap-blocks:2em;--vui-prose-gap-heading-start:1.3em;--vui-prose-gap-heading-end:0.8em;&[data-prose-gap=s]{--vui-prose-gap-blocks:1em;--vui-prose-gap-heading-start:0.7em;--vui-prose-gap-heading-end:0.3em}&[data-prose-gap=m]{--vui-prose-gap-blocks:1.5em;--vui-prose-gap-heading-start:1em;--vui-prose-gap-heading-end:0.6em}&[data-prose-has-align=true]{text-align:var(--vui-prose-align)}
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-prose-align{syntax:"*";inherits:false;initial-value:start}@property --vui-prose-gap-blocks{syntax:"<length>";inherits:true;initial-value:2em}@property --vui-prose-gap-heading-start{syntax:"<length>";inherits:true;initial-value:1.3em}@property --vui-prose-gap-heading-end{syntax:"<length>";inherits:true;initial-value:.8em}.viraui__prose-module__Prose_8yO9h{--vui-prose-gap-blocks:2em;--vui-prose-gap-heading-start:1.3em;--vui-prose-gap-heading-end:0.8em;&[data-prose-gap=s]{--vui-prose-gap-blocks:1em;--vui-prose-gap-heading-start:0.7em;--vui-prose-gap-heading-end:0.3em}&[data-prose-gap=m]{--vui-prose-gap-blocks:1.5em;--vui-prose-gap-heading-start:1em;--vui-prose-gap-heading-end:0.6em}&[data-prose-has-align=true]{text-align:var(--vui-prose-align)}&>:is(h1,h2,h3,h4,h5,h6,hgroup,ul,ol,dd,p,figure,img,pre,table,fieldset,blockquote,picture,div):where(:not(:first-child)){margin-block:var(--vui-prose-gap-blocks)}&>:is(h1,h2,h3,h4,h5,h6)+*{margin-block-start:var(--vui-prose-gap-heading-start)}&>:is(h1,h2,h3,h4,h5,h6){margin-block-end:var(--vui-prose-gap-heading-end);text-box:trim-both cap alphabetic}}}
|
|
@@ -7,7 +7,7 @@ type ProseGap = 's' | 'm' | 'l';
|
|
|
7
7
|
* Grouping wrapper for document blocks. Native `div` attributes pass through.
|
|
8
8
|
* Replace the root with Base UI `render` (for example `article`). No `as` prop.
|
|
9
9
|
*
|
|
10
|
-
* @
|
|
10
|
+
* @defaultValue Native div pass-through props keep React defaults.
|
|
11
11
|
*/
|
|
12
12
|
export type ProseProps = React.ComponentPropsWithoutRef<'div'> & {
|
|
13
13
|
/**
|
|
@@ -20,19 +20,19 @@ export type ProseProps = React.ComponentPropsWithoutRef<'div'> & {
|
|
|
20
20
|
* Aligns the region using logical alignment values.
|
|
21
21
|
* Omit so `text-align` inherits from the parent. Title/Text children that omit `align` inherit this value.
|
|
22
22
|
*
|
|
23
|
-
* @
|
|
23
|
+
* @defaultValue Inherits parent `text-align`.
|
|
24
24
|
*/
|
|
25
25
|
align?: React.CSSProperties['textAlign'];
|
|
26
26
|
/**
|
|
27
27
|
* Replaces the default `div` root using Base UI render semantics.
|
|
28
28
|
*
|
|
29
|
-
* @
|
|
29
|
+
* @defaultValue The prose region renders a `div` root.
|
|
30
30
|
*/
|
|
31
31
|
render?: useRender.RenderProp;
|
|
32
32
|
/**
|
|
33
33
|
* Ref forwarded to the rendered prose root element.
|
|
34
34
|
*
|
|
35
|
-
* @
|
|
35
|
+
* @defaultValue No ref is attached.
|
|
36
36
|
*/
|
|
37
37
|
ref?: React.Ref<HTMLElement>;
|
|
38
38
|
};
|
|
@@ -5,7 +5,7 @@ import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react';
|
|
|
5
5
|
* Thin wrapper around Base UI `RadioGroup` with default option spacing.
|
|
6
6
|
* Compose with `Field.Root` and `Fieldset` for group labels, validation, and copy.
|
|
7
7
|
*
|
|
8
|
-
* @
|
|
8
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
9
9
|
*/
|
|
10
10
|
export type RadioGroupProps<Value = string> = RadioGroupPrimitive.Props<Value>;
|
|
11
11
|
export declare const RadioGroup: <Value>({ children, className, ...otherProps }: RadioGroupProps<Value>) => import('react').JSX.Element;
|
|
@@ -7,37 +7,37 @@ import type * as React from 'react';
|
|
|
7
7
|
* Self-contained option row for use inside `RadioGroup`. Group-level `name`,
|
|
8
8
|
* `invalid`, and `error` belong on an external `Field.Root` and `Fieldset`, not on individual options.
|
|
9
9
|
*
|
|
10
|
-
* @
|
|
10
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
11
11
|
*/
|
|
12
12
|
export type RadioProps = RadioRoot.Props & {
|
|
13
13
|
/**
|
|
14
14
|
* Visible label rendered with shared internal `FieldLabel`.
|
|
15
15
|
*
|
|
16
|
-
* @
|
|
16
|
+
* @defaultValue No label is rendered.
|
|
17
17
|
*/
|
|
18
18
|
label?: React.ReactNode;
|
|
19
19
|
/**
|
|
20
20
|
* Helper copy rendered with `Field.Description` and `Text` for this option.
|
|
21
21
|
*
|
|
22
|
-
* @
|
|
22
|
+
* @defaultValue No description is rendered.
|
|
23
23
|
*/
|
|
24
24
|
description?: React.ReactNode;
|
|
25
25
|
/**
|
|
26
26
|
* Controls the visual radio size.
|
|
27
27
|
*
|
|
28
|
-
* @
|
|
28
|
+
* @defaultValue 's'
|
|
29
29
|
*/
|
|
30
30
|
size?: 'm' | 's';
|
|
31
31
|
/**
|
|
32
32
|
* Sets block padding using one token for both sides or a `[start, end]` tuple.
|
|
33
33
|
*
|
|
34
|
-
* @
|
|
34
|
+
* @defaultValue No block padding.
|
|
35
35
|
*/
|
|
36
36
|
vPadding?: StackProps['vPadding'];
|
|
37
37
|
/**
|
|
38
38
|
* Sets inline padding using one token for both sides or a `[start, end]` tuple.
|
|
39
39
|
*
|
|
40
|
-
* @
|
|
40
|
+
* @defaultValue No inline padding.
|
|
41
41
|
*/
|
|
42
42
|
hPadding?: StackProps['hPadding'];
|
|
43
43
|
};
|
|
@@ -5,7 +5,7 @@ export type SelectIndicatorSlotProps = {
|
|
|
5
5
|
* When true, renders as Base UI `ItemIndicator` with `keepMounted`.
|
|
6
6
|
* When false, renders an empty spacer with the same inline footprint.
|
|
7
7
|
*
|
|
8
|
-
* @
|
|
8
|
+
* @defaultValue false
|
|
9
9
|
*/
|
|
10
10
|
interactive?: boolean;
|
|
11
11
|
};
|
|
@@ -4,25 +4,25 @@ import type * as React from 'react';
|
|
|
4
4
|
/**
|
|
5
5
|
* Public Select.Option props.
|
|
6
6
|
*
|
|
7
|
-
* @
|
|
7
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
8
8
|
*/
|
|
9
9
|
export type SelectOptionProps = SelectItem.Props & {
|
|
10
10
|
/**
|
|
11
11
|
* Decorative leading node rendered before the option label.
|
|
12
12
|
*
|
|
13
|
-
* @
|
|
13
|
+
* @defaultValue No addon is rendered.
|
|
14
14
|
*/
|
|
15
15
|
addon?: React.ReactNode;
|
|
16
16
|
/**
|
|
17
17
|
* Vertical alignment of the addon relative to the option label row.
|
|
18
18
|
*
|
|
19
|
-
* @
|
|
19
|
+
* @defaultValue 'center'
|
|
20
20
|
*/
|
|
21
21
|
addonAlign?: StackProps['vAlign'];
|
|
22
22
|
/**
|
|
23
23
|
* Custom indicator node rendered when the option is selected.
|
|
24
24
|
*
|
|
25
|
-
* @
|
|
25
|
+
* @defaultValue Built-in Check chrome SVG at size 16
|
|
26
26
|
*/
|
|
27
27
|
indicator?: React.ReactNode;
|
|
28
28
|
};
|
|
@@ -3,7 +3,7 @@ import type * as React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Public Select.Separator props.
|
|
5
5
|
*
|
|
6
|
-
* @
|
|
6
|
+
* @defaultValue `orientation` is `'horizontal'`.
|
|
7
7
|
*/
|
|
8
8
|
export type SelectSeparatorProps = React.ComponentProps<typeof PrimitiveSelect.Separator>;
|
|
9
9
|
export declare function SelectSeparator({ className, orientation, ...separatorProps }: SelectSeparatorProps): React.JSX.Element;
|
|
@@ -11,59 +11,59 @@ import type * as React from 'react';
|
|
|
11
11
|
* and change handlers, plus optional field copy rendered with the shared Vira
|
|
12
12
|
* field label/helper pattern.
|
|
13
13
|
*
|
|
14
|
-
* @
|
|
14
|
+
* @defaultValue Base UI pass-through props keep upstream defaults.
|
|
15
15
|
*/
|
|
16
16
|
export type SelectProps = SelectRoot.Props<string> & Omit<FieldRoot.Props, 'ref'> & {
|
|
17
17
|
/**
|
|
18
18
|
* Visible label rendered with shared internal `FieldLabel`.
|
|
19
19
|
*
|
|
20
|
-
* @
|
|
20
|
+
* @defaultValue No label is rendered.
|
|
21
21
|
*/
|
|
22
22
|
label?: React.ReactNode;
|
|
23
23
|
/**
|
|
24
24
|
* Helper copy rendered with `Field.Description` and `Text` while the field is valid.
|
|
25
25
|
*
|
|
26
|
-
* @
|
|
26
|
+
* @defaultValue No description is rendered.
|
|
27
27
|
*/
|
|
28
28
|
description?: React.ReactNode;
|
|
29
29
|
/**
|
|
30
30
|
* Error copy rendered with `Field.Error` and `Text` in the same slot as `description`.
|
|
31
31
|
* Replaces description while the field is invalid and dirty.
|
|
32
32
|
*
|
|
33
|
-
* @
|
|
33
|
+
* @defaultValue No static error copy is rendered.
|
|
34
34
|
*/
|
|
35
35
|
error?: React.ReactNode;
|
|
36
36
|
/**
|
|
37
37
|
* Placeholder text shown in the trigger when no value is selected.
|
|
38
38
|
*
|
|
39
|
-
* @
|
|
39
|
+
* @defaultValue No placeholder is rendered.
|
|
40
40
|
*/
|
|
41
41
|
placeholder?: React.ReactNode;
|
|
42
42
|
/**
|
|
43
43
|
* Trigger addon rendered inside `Select.Icon`.
|
|
44
44
|
* Pass any React node; use a named icon from `@viraui/icons/react` for content icons.
|
|
45
45
|
*
|
|
46
|
-
* @
|
|
46
|
+
* @defaultValue Built-in ChevronExpandY chrome SVG at size 16
|
|
47
47
|
*/
|
|
48
48
|
addon?: React.ReactNode;
|
|
49
49
|
/**
|
|
50
50
|
* Ref forwarded to the select trigger button.
|
|
51
51
|
*
|
|
52
|
-
* @
|
|
52
|
+
* @defaultValue No ref is attached.
|
|
53
53
|
*/
|
|
54
54
|
ref?: React.Ref<HTMLButtonElement>;
|
|
55
55
|
/**
|
|
56
56
|
* When `true`, aligns the list popup width with the trigger via Base UI `alignItemWithTrigger`.
|
|
57
57
|
* Prefer `false` when options use a leading `addon`.
|
|
58
58
|
*
|
|
59
|
-
* @
|
|
59
|
+
* @defaultValue true
|
|
60
60
|
*/
|
|
61
61
|
alignListWithTrigger?: boolean;
|
|
62
62
|
/**
|
|
63
63
|
* When `true`, open select locks page scroll and blocks outside pointer interaction
|
|
64
64
|
* (Base UI modal). Vira defaults to non-modal so the page stays scrollable.
|
|
65
65
|
*
|
|
66
|
-
* @
|
|
66
|
+
* @defaultValue false
|
|
67
67
|
*/
|
|
68
68
|
modal?: boolean;
|
|
69
69
|
/**
|
|
@@ -71,7 +71,7 @@ export type SelectProps = SelectRoot.Props<string> & Omit<FieldRoot.Props, 'ref'
|
|
|
71
71
|
* Omit for Base UI default (`document.body` from the module window —
|
|
72
72
|
* iframe hosts must pass the iframe document body explicitly).
|
|
73
73
|
*
|
|
74
|
-
* @
|
|
74
|
+
* @defaultValue Base UI FloatingPortal resolution
|
|
75
75
|
*/
|
|
76
76
|
container?: React.ComponentProps<typeof PrimitiveSelect.Portal>['container'];
|
|
77
77
|
};
|