@vinyasa/form 1.0.22
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/README.md +188 -0
- package/dist/cjs/autocomplete.cjs +344 -0
- package/dist/cjs/autocomplete.css +308 -0
- package/dist/cjs/checkbox.cjs +299 -0
- package/dist/cjs/checkbox.css +175 -0
- package/dist/cjs/color-picker.cjs +363 -0
- package/dist/cjs/color-picker.css +248 -0
- package/dist/cjs/combobox.cjs +394 -0
- package/dist/cjs/combobox.css +308 -0
- package/dist/cjs/date-picker.cjs +357 -0
- package/dist/cjs/date-picker.css +295 -0
- package/dist/cjs/dropzone.cjs +438 -0
- package/dist/cjs/dropzone.css +293 -0
- package/dist/cjs/file-upload.cjs +428 -0
- package/dist/cjs/file-upload.css +250 -0
- package/dist/cjs/icon-button.cjs +183 -0
- package/dist/cjs/index.cjs +3780 -0
- package/dist/cjs/index.css +1229 -0
- package/dist/cjs/input.cjs +340 -0
- package/dist/cjs/input.css +139 -0
- package/dist/cjs/multi-select.cjs +436 -0
- package/dist/cjs/multi-select.css +308 -0
- package/dist/cjs/number-input.cjs +458 -0
- package/dist/cjs/number-input.css +250 -0
- package/dist/cjs/otp-input.cjs +355 -0
- package/dist/cjs/otp-input.css +194 -0
- package/dist/cjs/password-input.cjs +368 -0
- package/dist/cjs/password-input.css +139 -0
- package/dist/cjs/radio-group.cjs +301 -0
- package/dist/cjs/radio-group.css +181 -0
- package/dist/cjs/range-slider.cjs +276 -0
- package/dist/cjs/range-slider.css +46 -0
- package/dist/cjs/rich-text-editor.cjs +570 -0
- package/dist/cjs/rich-text-editor.css +213 -0
- package/dist/cjs/search-input.cjs +380 -0
- package/dist/cjs/search-input.css +139 -0
- package/dist/cjs/select.cjs +407 -0
- package/dist/cjs/select.css +213 -0
- package/dist/cjs/slider.cjs +188 -0
- package/dist/cjs/slider.css +46 -0
- package/dist/cjs/switch.cjs +294 -0
- package/dist/cjs/switch.css +183 -0
- package/dist/cjs/tags-input.cjs +348 -0
- package/dist/cjs/tags-input.css +328 -0
- package/dist/cjs/textarea.cjs +361 -0
- package/dist/cjs/textarea.css +139 -0
- package/dist/cjs/time-picker.cjs +408 -0
- package/dist/cjs/time-picker.css +308 -0
- package/dist/cjs/toggle-button.cjs +172 -0
- package/dist/esm/27.css +46 -0
- package/dist/esm/27.js +38 -0
- package/dist/esm/2942.css +111 -0
- package/dist/esm/2942.js +13 -0
- package/dist/esm/2995.css +135 -0
- package/dist/esm/2995.js +117 -0
- package/dist/esm/3876.js +27 -0
- package/dist/esm/4557.js +39 -0
- package/dist/esm/6720.css +164 -0
- package/dist/esm/6720.js +19 -0
- package/dist/esm/autocomplete.d.ts +2 -0
- package/dist/esm/autocomplete.js +95 -0
- package/dist/esm/checkbox.css +36 -0
- package/dist/esm/checkbox.d.ts +2 -0
- package/dist/esm/checkbox.js +38 -0
- package/dist/esm/color-picker.css +109 -0
- package/dist/esm/color-picker.d.ts +2 -0
- package/dist/esm/color-picker.js +130 -0
- package/dist/esm/combobox.d.ts +2 -0
- package/dist/esm/combobox.js +126 -0
- package/dist/esm/components/autocomplete/Autocomplete.d.ts +21 -0
- package/dist/esm/components/autocomplete/index.d.ts +3 -0
- package/dist/esm/components/checkbox/Checkbox.css.d.ts +2 -0
- package/dist/esm/components/checkbox/Checkbox.d.ts +7 -0
- package/dist/esm/components/checkbox/index.d.ts +3 -0
- package/dist/esm/components/color-picker/ColorPicker.css.d.ts +11 -0
- package/dist/esm/components/color-picker/ColorPicker.d.ts +28 -0
- package/dist/esm/components/color-picker/index.d.ts +3 -0
- package/dist/esm/components/combobox/Combobox.d.ts +34 -0
- package/dist/esm/components/combobox/index.d.ts +3 -0
- package/dist/esm/components/date-picker/DatePicker.css.d.ts +18 -0
- package/dist/esm/components/date-picker/DatePicker.d.ts +29 -0
- package/dist/esm/components/date-picker/index.d.ts +3 -0
- package/dist/esm/components/dropzone/Dropzone.css.d.ts +4 -0
- package/dist/esm/components/dropzone/Dropzone.d.ts +20 -0
- package/dist/esm/components/dropzone/index.d.ts +3 -0
- package/dist/esm/components/file-upload/FileUpload.css.d.ts +11 -0
- package/dist/esm/components/file-upload/FileUpload.d.ts +20 -0
- package/dist/esm/components/file-upload/index.d.ts +3 -0
- package/dist/esm/components/icon-button/IconButton.d.ts +8 -0
- package/dist/esm/components/icon-button/index.d.ts +3 -0
- package/dist/esm/components/input/Input.d.ts +11 -0
- package/dist/esm/components/input/index.d.ts +3 -0
- package/dist/esm/components/multi-select/MultiSelect.d.ts +35 -0
- package/dist/esm/components/multi-select/index.d.ts +3 -0
- package/dist/esm/components/number-input/NumberInput.css.d.ts +51 -0
- package/dist/esm/components/number-input/NumberInput.d.ts +13 -0
- package/dist/esm/components/number-input/index.d.ts +3 -0
- package/dist/esm/components/otp-input/OtpInput.css.d.ts +6 -0
- package/dist/esm/components/otp-input/OtpInput.d.ts +16 -0
- package/dist/esm/components/otp-input/index.d.ts +3 -0
- package/dist/esm/components/password-input/PasswordInput.d.ts +11 -0
- package/dist/esm/components/password-input/index.d.ts +3 -0
- package/dist/esm/components/radio-group/RadioGroup.css.d.ts +3 -0
- package/dist/esm/components/radio-group/RadioGroup.d.ts +12 -0
- package/dist/esm/components/radio-group/index.d.ts +3 -0
- package/dist/esm/components/range-slider/RangeSlider.d.ts +11 -0
- package/dist/esm/components/range-slider/index.d.ts +3 -0
- package/dist/esm/components/rich-text-editor/RichTextEditor.css.d.ts +5 -0
- package/dist/esm/components/rich-text-editor/RichTextEditor.d.ts +18 -0
- package/dist/esm/components/rich-text-editor/index.d.ts +3 -0
- package/dist/esm/components/search-input/SearchInput.d.ts +13 -0
- package/dist/esm/components/search-input/index.d.ts +3 -0
- package/dist/esm/components/select/Select.css.d.ts +8 -0
- package/dist/esm/components/select/Select.d.ts +29 -0
- package/dist/esm/components/select/index.d.ts +3 -0
- package/dist/esm/components/slider/Slider.css.d.ts +4 -0
- package/dist/esm/components/slider/Slider.d.ts +12 -0
- package/dist/esm/components/slider/index.d.ts +3 -0
- package/dist/esm/components/switch/Switch.css.d.ts +2 -0
- package/dist/esm/components/switch/Switch.d.ts +7 -0
- package/dist/esm/components/switch/index.d.ts +3 -0
- package/dist/esm/components/tags-input/TagsInput.css.d.ts +1 -0
- package/dist/esm/components/tags-input/TagsInput.d.ts +18 -0
- package/dist/esm/components/tags-input/index.d.ts +3 -0
- package/dist/esm/components/textarea/Textarea.d.ts +13 -0
- package/dist/esm/components/textarea/index.d.ts +3 -0
- package/dist/esm/components/time-picker/TimePicker.d.ts +32 -0
- package/dist/esm/components/time-picker/index.d.ts +3 -0
- package/dist/esm/components/toggle-button/ToggleButton.d.ts +12 -0
- package/dist/esm/components/toggle-button/index.d.ts +3 -0
- package/dist/esm/date-picker.css +153 -0
- package/dist/esm/date-picker.d.ts +2 -0
- package/dist/esm/date-picker.js +118 -0
- package/dist/esm/dropzone.css +43 -0
- package/dist/esm/dropzone.d.ts +2 -0
- package/dist/esm/dropzone.js +137 -0
- package/dist/esm/field.css.d.ts +33 -0
- package/dist/esm/field.d.ts +24 -0
- package/dist/esm/file-upload.d.ts +2 -0
- package/dist/esm/file-upload.js +123 -0
- package/dist/esm/icon-button.d.ts +2 -0
- package/dist/esm/icon-button.js +29 -0
- package/dist/esm/index.d.ts +24 -0
- package/dist/esm/index.js +24 -0
- package/dist/esm/input.d.ts +2 -0
- package/dist/esm/input.js +39 -0
- package/dist/esm/multi-select.d.ts +2 -0
- package/dist/esm/multi-select.js +164 -0
- package/dist/esm/number-input.css +107 -0
- package/dist/esm/number-input.d.ts +2 -0
- package/dist/esm/number-input.js +153 -0
- package/dist/esm/otp-input.css +55 -0
- package/dist/esm/otp-input.d.ts +2 -0
- package/dist/esm/otp-input.js +56 -0
- package/dist/esm/password-input.d.ts +2 -0
- package/dist/esm/password-input.js +56 -0
- package/dist/esm/radio-group.css +42 -0
- package/dist/esm/radio-group.d.ts +2 -0
- package/dist/esm/radio-group.js +44 -0
- package/dist/esm/range-slider.d.ts +2 -0
- package/dist/esm/range-slider.js +22 -0
- package/dist/esm/rich-text-editor.css +74 -0
- package/dist/esm/rich-text-editor.d.ts +2 -0
- package/dist/esm/rich-text-editor.js +212 -0
- package/dist/esm/search-input.d.ts +2 -0
- package/dist/esm/search-input.js +62 -0
- package/dist/esm/select.css +73 -0
- package/dist/esm/select.d.ts +2 -0
- package/dist/esm/select.js +87 -0
- package/dist/esm/selectPopover.css.d.ts +17 -0
- package/dist/esm/slider.d.ts +2 -0
- package/dist/esm/slider.js +4 -0
- package/dist/esm/switch.css +44 -0
- package/dist/esm/switch.d.ts +2 -0
- package/dist/esm/switch.js +36 -0
- package/dist/esm/tags-input.css +16 -0
- package/dist/esm/tags-input.d.ts +2 -0
- package/dist/esm/tags-input.js +100 -0
- package/dist/esm/textarea.d.ts +2 -0
- package/dist/esm/textarea.js +58 -0
- package/dist/esm/time-picker.d.ts +2 -0
- package/dist/esm/time-picker.js +137 -0
- package/dist/esm/toggle-button.d.ts +2 -0
- package/dist/esm/toggle-button.js +4 -0
- package/package.json +255 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CheckIcon, SearchIcon, XIcon } from "@vinyasa/icons";
|
|
3
|
+
import { Command } from "cmdk";
|
|
4
|
+
import { useId, useState } from "react";
|
|
5
|
+
import { field, describedByIds } from "./4557.js";
|
|
6
|
+
import { fieldControl } from "./2995.js";
|
|
7
|
+
import { chip, empty, chipRow, searchIcon, content, placeholder as selectPopover_css_placeholder, chipRemove, itemIndicator, searchInput, item, searchWrapper, list, chipOverflow, triggerBox } from "./6720.js";
|
|
8
|
+
import * as __rspack_external__radix_ui_react_popover_e2827c9f from "@radix-ui/react-popover";
|
|
9
|
+
const optionText = (option)=>'string' == typeof option.label ? option.label : option.value;
|
|
10
|
+
const MultiSelect = ({ options, value, defaultValue = [], onValueChange, placeholder, label, description, error, required, size, emptyMessage = 'No results found.', maxVisibleChips = 2, trigger, id: idProp })=>{
|
|
11
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
12
|
+
const isControlled = void 0 !== value;
|
|
13
|
+
const currentValue = isControlled ? value : internalValue;
|
|
14
|
+
const [open, setOpen] = useState(false);
|
|
15
|
+
const generatedId = useId();
|
|
16
|
+
const id = idProp ?? generatedId;
|
|
17
|
+
const setValue = (next)=>{
|
|
18
|
+
if (!isControlled) setInternalValue(next);
|
|
19
|
+
onValueChange?.(next);
|
|
20
|
+
};
|
|
21
|
+
const toggleValue = (optionValue)=>{
|
|
22
|
+
setValue(currentValue.includes(optionValue) ? currentValue.filter((entry)=>entry !== optionValue) : [
|
|
23
|
+
...currentValue,
|
|
24
|
+
optionValue
|
|
25
|
+
]);
|
|
26
|
+
};
|
|
27
|
+
const removeValue = (optionValue)=>{
|
|
28
|
+
setValue(currentValue.filter((entry)=>entry !== optionValue));
|
|
29
|
+
};
|
|
30
|
+
const selectedOptions = options.filter((option)=>currentValue.includes(option.value));
|
|
31
|
+
const visibleOptions = selectedOptions.slice(0, maxVisibleChips);
|
|
32
|
+
const overflowCount = selectedOptions.length - visibleOptions.length;
|
|
33
|
+
return /*#__PURE__*/ jsx(field, {
|
|
34
|
+
id: id,
|
|
35
|
+
label: label,
|
|
36
|
+
description: description,
|
|
37
|
+
error: error,
|
|
38
|
+
required: required,
|
|
39
|
+
children: /*#__PURE__*/ jsxs(__rspack_external__radix_ui_react_popover_e2827c9f.Root, {
|
|
40
|
+
open: open,
|
|
41
|
+
onOpenChange: setOpen,
|
|
42
|
+
children: [
|
|
43
|
+
/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_popover_e2827c9f.Trigger, {
|
|
44
|
+
asChild: true,
|
|
45
|
+
children: trigger ?? /*#__PURE__*/ jsx("div", {
|
|
46
|
+
id: id,
|
|
47
|
+
role: "combobox",
|
|
48
|
+
"aria-expanded": open,
|
|
49
|
+
"aria-labelledby": label ? `${id}-label` : void 0,
|
|
50
|
+
"aria-describedby": describedByIds(id, {
|
|
51
|
+
description,
|
|
52
|
+
error
|
|
53
|
+
}),
|
|
54
|
+
tabIndex: 0,
|
|
55
|
+
className: `${fieldControl({
|
|
56
|
+
size,
|
|
57
|
+
invalid: Boolean(error)
|
|
58
|
+
})} ${triggerBox}`,
|
|
59
|
+
onKeyDown: (event)=>{
|
|
60
|
+
if ('Enter' === event.key || ' ' === event.key) {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
setOpen((previous)=>!previous);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
children: /*#__PURE__*/ jsxs("span", {
|
|
66
|
+
className: chipRow,
|
|
67
|
+
children: [
|
|
68
|
+
0 === selectedOptions.length ? /*#__PURE__*/ jsx("span", {
|
|
69
|
+
className: selectPopover_css_placeholder,
|
|
70
|
+
children: placeholder
|
|
71
|
+
}) : null,
|
|
72
|
+
visibleOptions.map((option)=>/*#__PURE__*/ jsxs("span", {
|
|
73
|
+
className: chip,
|
|
74
|
+
children: [
|
|
75
|
+
option.label,
|
|
76
|
+
/*#__PURE__*/ jsx("button", {
|
|
77
|
+
type: "button",
|
|
78
|
+
className: chipRemove,
|
|
79
|
+
"aria-label": `Remove ${optionText(option)}`,
|
|
80
|
+
onClick: (event)=>{
|
|
81
|
+
event.stopPropagation();
|
|
82
|
+
removeValue(option.value);
|
|
83
|
+
},
|
|
84
|
+
children: /*#__PURE__*/ jsx(XIcon, {})
|
|
85
|
+
})
|
|
86
|
+
]
|
|
87
|
+
}, option.value)),
|
|
88
|
+
overflowCount > 0 ? /*#__PURE__*/ jsxs("span", {
|
|
89
|
+
className: chipOverflow,
|
|
90
|
+
children: [
|
|
91
|
+
"+",
|
|
92
|
+
overflowCount
|
|
93
|
+
]
|
|
94
|
+
}) : null
|
|
95
|
+
]
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
}),
|
|
99
|
+
/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_popover_e2827c9f.Content, {
|
|
100
|
+
className: content,
|
|
101
|
+
align: "start",
|
|
102
|
+
sideOffset: 4,
|
|
103
|
+
onOpenAutoFocus: (event)=>{
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
},
|
|
106
|
+
children: /*#__PURE__*/ jsxs(Command, {
|
|
107
|
+
loop: true,
|
|
108
|
+
label: "Search options",
|
|
109
|
+
children: [
|
|
110
|
+
/*#__PURE__*/ jsxs("div", {
|
|
111
|
+
className: searchWrapper,
|
|
112
|
+
children: [
|
|
113
|
+
/*#__PURE__*/ jsx("span", {
|
|
114
|
+
className: searchIcon,
|
|
115
|
+
"aria-hidden": "true",
|
|
116
|
+
children: /*#__PURE__*/ jsx(SearchIcon, {})
|
|
117
|
+
}),
|
|
118
|
+
/*#__PURE__*/ jsx(Command.Input, {
|
|
119
|
+
placeholder: "Search…",
|
|
120
|
+
className: searchInput
|
|
121
|
+
})
|
|
122
|
+
]
|
|
123
|
+
}),
|
|
124
|
+
/*#__PURE__*/ jsxs(Command.List, {
|
|
125
|
+
className: list,
|
|
126
|
+
children: [
|
|
127
|
+
/*#__PURE__*/ jsx(Command.Empty, {
|
|
128
|
+
className: empty,
|
|
129
|
+
children: emptyMessage
|
|
130
|
+
}),
|
|
131
|
+
options.map((option)=>{
|
|
132
|
+
const isSelected = currentValue.includes(option.value);
|
|
133
|
+
return /*#__PURE__*/ jsxs(Command.Item, {
|
|
134
|
+
value: optionText(option),
|
|
135
|
+
disabled: option.disabled,
|
|
136
|
+
onSelect: ()=>{
|
|
137
|
+
toggleValue(option.value);
|
|
138
|
+
},
|
|
139
|
+
className: item,
|
|
140
|
+
"data-selected": isSelected,
|
|
141
|
+
"data-disabled": option.disabled,
|
|
142
|
+
children: [
|
|
143
|
+
option.label,
|
|
144
|
+
isSelected ? /*#__PURE__*/ jsx("span", {
|
|
145
|
+
className: itemIndicator,
|
|
146
|
+
children: /*#__PURE__*/ jsx(CheckIcon, {})
|
|
147
|
+
}) : null
|
|
148
|
+
]
|
|
149
|
+
}, option.value);
|
|
150
|
+
})
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
]
|
|
154
|
+
})
|
|
155
|
+
})
|
|
156
|
+
]
|
|
157
|
+
})
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
MultiSelect.displayName = 'MultiSelect';
|
|
161
|
+
const multi_select_MultiSelect = MultiSelect;
|
|
162
|
+
const multi_select = multi_select_MultiSelect;
|
|
163
|
+
export default multi_select;
|
|
164
|
+
export { multi_select as MultiSelect };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
._1wyztbj0 {
|
|
2
|
+
width: 100%;
|
|
3
|
+
font-family: var(--vinyasa-font-family-sans);
|
|
4
|
+
color: var(--vinyasa-on-secondary);
|
|
5
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
6
|
+
border-radius: var(--vinyasa-radius-sm);
|
|
7
|
+
transition: border-color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard), box-shadow var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
|
|
8
|
+
align-items: stretch;
|
|
9
|
+
display: inline-flex;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
._1wyztbj0:focus-within {
|
|
14
|
+
border-color: var(--vinyasa-focus);
|
|
15
|
+
box-shadow: 0 0 0 1px var(--vinyasa-focus), 0 0 0 4px color-mix(in srgb, var(--vinyasa-focus) 16%, transparent);
|
|
16
|
+
outline: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
._1wyztbj1, ._1wyztbj2 {
|
|
20
|
+
font-size: var(--vinyasa-font-size-sm);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
._1wyztbj3 {
|
|
24
|
+
font-size: var(--vinyasa-font-size-md);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
._1wyztbj4 {
|
|
28
|
+
border-color: var(--vinyasa-error);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
._1wyztbj5 {
|
|
32
|
+
opacity: var(--vinyasa-opacity-disabled);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
._1wyztbj6 {
|
|
36
|
+
color: var(--vinyasa-text-muted);
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
background: none;
|
|
39
|
+
border: none;
|
|
40
|
+
flex-shrink: 0;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
align-items: center;
|
|
43
|
+
display: inline-flex;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
._1wyztbj6:hover:not(:disabled) {
|
|
47
|
+
background-color: var(--vinyasa-secondary);
|
|
48
|
+
color: var(--vinyasa-on-secondary);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
._1wyztbj6:disabled {
|
|
52
|
+
cursor: not-allowed;
|
|
53
|
+
opacity: var(--vinyasa-opacity-disabled);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
._1wyztbj7 {
|
|
57
|
+
width: 1.75rem;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
._1wyztbj8 {
|
|
61
|
+
width: 2rem;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
._1wyztbj9 {
|
|
65
|
+
width: 2.25rem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
._1wyztbja {
|
|
69
|
+
border-right: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
._1wyztbjb {
|
|
73
|
+
border-left: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
._1wyztbjc {
|
|
77
|
+
text-align: center;
|
|
78
|
+
min-width: 0;
|
|
79
|
+
font-family: inherit;
|
|
80
|
+
font-size: inherit;
|
|
81
|
+
color: inherit;
|
|
82
|
+
background: none;
|
|
83
|
+
border: none;
|
|
84
|
+
outline: none;
|
|
85
|
+
flex: 1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
._1wyztbjc::placeholder {
|
|
89
|
+
color: var(--vinyasa-text-muted);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
._1wyztbjc:disabled {
|
|
93
|
+
cursor: not-allowed;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
._1wyztbjd {
|
|
97
|
+
padding: var(--vinyasa-space1) 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
._1wyztbje {
|
|
101
|
+
padding: var(--vinyasa-space2) 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
._1wyztbjf {
|
|
105
|
+
padding: var(--vinyasa-space3) 0;
|
|
106
|
+
}
|
|
107
|
+
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import "./number-input.css";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { MinusIcon, PlusIcon } from "@vinyasa/icons";
|
|
4
|
+
import { forwardRef, useId, useRef } from "react";
|
|
5
|
+
import { fieldControl, createRuntimeFn } from "./2995.js";
|
|
6
|
+
import { field, describedByIds } from "./4557.js";
|
|
7
|
+
var group = createRuntimeFn({
|
|
8
|
+
defaultClassName: '_1wyztbj0',
|
|
9
|
+
variantClassNames: {
|
|
10
|
+
size: {
|
|
11
|
+
sm: '_1wyztbj1',
|
|
12
|
+
md: '_1wyztbj2',
|
|
13
|
+
lg: '_1wyztbj3'
|
|
14
|
+
},
|
|
15
|
+
invalid: {
|
|
16
|
+
true: '_1wyztbj4'
|
|
17
|
+
},
|
|
18
|
+
disabled: {
|
|
19
|
+
true: '_1wyztbj5'
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
defaultVariants: {
|
|
23
|
+
size: 'md'
|
|
24
|
+
},
|
|
25
|
+
compoundVariants: []
|
|
26
|
+
});
|
|
27
|
+
var groupButton = createRuntimeFn({
|
|
28
|
+
defaultClassName: '_1wyztbj6',
|
|
29
|
+
variantClassNames: {
|
|
30
|
+
size: {
|
|
31
|
+
sm: '_1wyztbj7',
|
|
32
|
+
md: '_1wyztbj8',
|
|
33
|
+
lg: '_1wyztbj9'
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: {
|
|
37
|
+
size: 'md'
|
|
38
|
+
},
|
|
39
|
+
compoundVariants: []
|
|
40
|
+
});
|
|
41
|
+
var groupButtonLeading = '_1wyztbja';
|
|
42
|
+
var groupButtonTrailing = '_1wyztbjb';
|
|
43
|
+
var groupInput = createRuntimeFn({
|
|
44
|
+
defaultClassName: '_1wyztbjc',
|
|
45
|
+
variantClassNames: {
|
|
46
|
+
size: {
|
|
47
|
+
sm: '_1wyztbjd',
|
|
48
|
+
md: '_1wyztbje',
|
|
49
|
+
lg: '_1wyztbjf'
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
defaultVariants: {
|
|
53
|
+
size: 'md'
|
|
54
|
+
},
|
|
55
|
+
compoundVariants: []
|
|
56
|
+
});
|
|
57
|
+
const step = (input, direction)=>{
|
|
58
|
+
if (!input) return;
|
|
59
|
+
if ('up' === direction) input.stepUp();
|
|
60
|
+
else input.stepDown();
|
|
61
|
+
input.dispatchEvent(new Event('input', {
|
|
62
|
+
bubbles: true
|
|
63
|
+
}));
|
|
64
|
+
};
|
|
65
|
+
const mergeRefs = (...refs)=>(node)=>{
|
|
66
|
+
for (const ref of refs)if ('function' == typeof ref) ref(node);
|
|
67
|
+
else if (ref) ref.current = node;
|
|
68
|
+
};
|
|
69
|
+
const NumberInput = /*#__PURE__*/ forwardRef(({ label, description, error, required, size, showSteppers = true, disabled, id: idProp, className, ...rest }, ref)=>{
|
|
70
|
+
const generatedId = useId();
|
|
71
|
+
const id = idProp ?? generatedId;
|
|
72
|
+
const innerRef = useRef(null);
|
|
73
|
+
const invalid = Boolean(error);
|
|
74
|
+
return /*#__PURE__*/ jsx(field, {
|
|
75
|
+
id: id,
|
|
76
|
+
label: label,
|
|
77
|
+
description: description,
|
|
78
|
+
error: error,
|
|
79
|
+
required: required,
|
|
80
|
+
children: showSteppers ? /*#__PURE__*/ jsxs("div", {
|
|
81
|
+
className: group({
|
|
82
|
+
size,
|
|
83
|
+
invalid,
|
|
84
|
+
disabled
|
|
85
|
+
}),
|
|
86
|
+
children: [
|
|
87
|
+
/*#__PURE__*/ jsx("button", {
|
|
88
|
+
type: "button",
|
|
89
|
+
className: `${groupButton({
|
|
90
|
+
size
|
|
91
|
+
})} ${groupButtonLeading}`,
|
|
92
|
+
disabled: disabled,
|
|
93
|
+
tabIndex: -1,
|
|
94
|
+
"aria-label": "Decrement",
|
|
95
|
+
onClick: ()=>{
|
|
96
|
+
step(innerRef.current, 'down');
|
|
97
|
+
},
|
|
98
|
+
children: /*#__PURE__*/ jsx(MinusIcon, {})
|
|
99
|
+
}),
|
|
100
|
+
/*#__PURE__*/ jsx("input", {
|
|
101
|
+
ref: mergeRefs(ref, innerRef),
|
|
102
|
+
id: id,
|
|
103
|
+
type: "number",
|
|
104
|
+
disabled: disabled,
|
|
105
|
+
className: `${groupInput({
|
|
106
|
+
size
|
|
107
|
+
})} ${className ?? ''}`,
|
|
108
|
+
required: required,
|
|
109
|
+
"aria-invalid": invalid ? true : void 0,
|
|
110
|
+
"aria-describedby": describedByIds(id, {
|
|
111
|
+
description,
|
|
112
|
+
error
|
|
113
|
+
}),
|
|
114
|
+
...rest
|
|
115
|
+
}),
|
|
116
|
+
/*#__PURE__*/ jsx("button", {
|
|
117
|
+
type: "button",
|
|
118
|
+
className: `${groupButton({
|
|
119
|
+
size
|
|
120
|
+
})} ${groupButtonTrailing}`,
|
|
121
|
+
disabled: disabled,
|
|
122
|
+
tabIndex: -1,
|
|
123
|
+
"aria-label": "Increment",
|
|
124
|
+
onClick: ()=>{
|
|
125
|
+
step(innerRef.current, 'up');
|
|
126
|
+
},
|
|
127
|
+
children: /*#__PURE__*/ jsx(PlusIcon, {})
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
}) : /*#__PURE__*/ jsx("input", {
|
|
131
|
+
ref: mergeRefs(ref, innerRef),
|
|
132
|
+
id: id,
|
|
133
|
+
type: "number",
|
|
134
|
+
disabled: disabled,
|
|
135
|
+
className: `${fieldControl({
|
|
136
|
+
size,
|
|
137
|
+
invalid
|
|
138
|
+
})} ${className ?? ''}`,
|
|
139
|
+
required: required,
|
|
140
|
+
"aria-invalid": invalid ? true : void 0,
|
|
141
|
+
"aria-describedby": describedByIds(id, {
|
|
142
|
+
description,
|
|
143
|
+
error
|
|
144
|
+
}),
|
|
145
|
+
...rest
|
|
146
|
+
})
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
NumberInput.displayName = 'NumberInput';
|
|
150
|
+
const number_input_NumberInput = NumberInput;
|
|
151
|
+
const number_input = number_input_NumberInput;
|
|
152
|
+
export default number_input;
|
|
153
|
+
export { number_input as NumberInput };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@keyframes _14kw5nt5 {
|
|
2
|
+
0%, 100% {
|
|
3
|
+
opacity: 1;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
50% {
|
|
7
|
+
opacity: 0;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
._14kw5nt0 {
|
|
12
|
+
align-items: center;
|
|
13
|
+
gap: var(--vinyasa-space2);
|
|
14
|
+
display: inline-flex;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
._14kw5nt1 {
|
|
18
|
+
opacity: var(--vinyasa-opacity-disabled);
|
|
19
|
+
cursor: not-allowed;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
._14kw5nt2 {
|
|
23
|
+
width: 2.5rem;
|
|
24
|
+
height: 2.75rem;
|
|
25
|
+
font-size: var(--vinyasa-font-size-lg);
|
|
26
|
+
font-family: var(--vinyasa-font-family-mono);
|
|
27
|
+
color: var(--vinyasa-on-secondary);
|
|
28
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
29
|
+
border-radius: var(--vinyasa-radius-sm);
|
|
30
|
+
transition: border-color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
|
|
31
|
+
justify-content: center;
|
|
32
|
+
align-items: center;
|
|
33
|
+
display: flex;
|
|
34
|
+
position: relative;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
._14kw5nt3 {
|
|
38
|
+
border-color: var(--vinyasa-focus);
|
|
39
|
+
box-shadow: 0 0 0 1px var(--vinyasa-focus), 0 0 0 4px color-mix(in srgb, var(--vinyasa-focus) 16%, transparent);
|
|
40
|
+
outline: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
._14kw5nt4 {
|
|
44
|
+
border-color: var(--vinyasa-error);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
._14kw5nt6 {
|
|
48
|
+
pointer-events: none;
|
|
49
|
+
background-color: var(--vinyasa-on-secondary);
|
|
50
|
+
width: 1px;
|
|
51
|
+
height: 1.25rem;
|
|
52
|
+
animation: 1s step-end infinite _14kw5nt5;
|
|
53
|
+
position: absolute;
|
|
54
|
+
}
|
|
55
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "./otp-input.css";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { OTPInput, REGEXP_ONLY_DIGITS } from "input-otp";
|
|
4
|
+
import { forwardRef, useId } from "react";
|
|
5
|
+
import { field, describedByIds } from "./4557.js";
|
|
6
|
+
var fakeCaret = '_14kw5nt6';
|
|
7
|
+
var group = '_14kw5nt0';
|
|
8
|
+
var groupDisabled = '_14kw5nt1';
|
|
9
|
+
var slot = '_14kw5nt2';
|
|
10
|
+
var slotActive = '_14kw5nt3';
|
|
11
|
+
var slotInvalid = '_14kw5nt4';
|
|
12
|
+
const OtpInput = /*#__PURE__*/ forwardRef(({ label, description, error, length = 6, disabled, id: idProp, onChange, ...rest }, ref)=>{
|
|
13
|
+
const generatedId = useId();
|
|
14
|
+
const id = idProp ?? generatedId;
|
|
15
|
+
return /*#__PURE__*/ jsx(field, {
|
|
16
|
+
id: id,
|
|
17
|
+
label: label,
|
|
18
|
+
description: description,
|
|
19
|
+
error: error,
|
|
20
|
+
children: /*#__PURE__*/ jsx(OTPInput, {
|
|
21
|
+
ref: ref,
|
|
22
|
+
id: id,
|
|
23
|
+
maxLength: length,
|
|
24
|
+
pattern: REGEXP_ONLY_DIGITS,
|
|
25
|
+
disabled: disabled,
|
|
26
|
+
onChange: onChange,
|
|
27
|
+
"aria-invalid": error ? true : void 0,
|
|
28
|
+
"aria-describedby": describedByIds(id, {
|
|
29
|
+
description,
|
|
30
|
+
error
|
|
31
|
+
}),
|
|
32
|
+
containerClassName: `${group} ${disabled ? groupDisabled : ''}`.trim(),
|
|
33
|
+
render: ({ slots })=>/*#__PURE__*/ jsx(Fragment, {
|
|
34
|
+
children: slots.map((slotProps, index)=>/*#__PURE__*/ jsxs("div", {
|
|
35
|
+
className: [
|
|
36
|
+
slot,
|
|
37
|
+
slotProps.isActive ? slotActive : '',
|
|
38
|
+
error ? slotInvalid : ''
|
|
39
|
+
].filter(Boolean).join(' '),
|
|
40
|
+
children: [
|
|
41
|
+
slotProps.char,
|
|
42
|
+
slotProps.hasFakeCaret ? /*#__PURE__*/ jsx("span", {
|
|
43
|
+
className: fakeCaret
|
|
44
|
+
}) : null
|
|
45
|
+
]
|
|
46
|
+
}, index))
|
|
47
|
+
}),
|
|
48
|
+
...rest
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
OtpInput.displayName = 'OtpInput';
|
|
53
|
+
const otp_input_OtpInput = OtpInput;
|
|
54
|
+
const otp_input = otp_input_OtpInput;
|
|
55
|
+
export default otp_input;
|
|
56
|
+
export { otp_input as OtpInput };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { EyeIcon, EyeOffIcon } from "@vinyasa/icons";
|
|
3
|
+
import { forwardRef, useId, useState } from "react";
|
|
4
|
+
import { fieldControl, fieldIconButton, fieldGroup, fieldControlWithTrailingIcon, fieldIconTrailing } from "./2995.js";
|
|
5
|
+
import { field, describedByIds } from "./4557.js";
|
|
6
|
+
const PasswordInput = /*#__PURE__*/ forwardRef(({ label, description, error, required, size, id: idProp, className, ...rest }, ref)=>{
|
|
7
|
+
const generatedId = useId();
|
|
8
|
+
const id = idProp ?? generatedId;
|
|
9
|
+
const [revealed, setRevealed] = useState(false);
|
|
10
|
+
const classes = className ? `${fieldControl({
|
|
11
|
+
size,
|
|
12
|
+
invalid: Boolean(error)
|
|
13
|
+
})} ${fieldControlWithTrailingIcon} ${className}` : `${fieldControl({
|
|
14
|
+
size,
|
|
15
|
+
invalid: Boolean(error)
|
|
16
|
+
})} ${fieldControlWithTrailingIcon}`;
|
|
17
|
+
return /*#__PURE__*/ jsx(field, {
|
|
18
|
+
id: id,
|
|
19
|
+
label: label,
|
|
20
|
+
description: description,
|
|
21
|
+
error: error,
|
|
22
|
+
required: required,
|
|
23
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
24
|
+
className: fieldGroup,
|
|
25
|
+
children: [
|
|
26
|
+
/*#__PURE__*/ jsx("input", {
|
|
27
|
+
ref: ref,
|
|
28
|
+
id: id,
|
|
29
|
+
type: revealed ? 'text' : 'password',
|
|
30
|
+
className: classes,
|
|
31
|
+
required: required,
|
|
32
|
+
"aria-invalid": error ? true : void 0,
|
|
33
|
+
"aria-describedby": describedByIds(id, {
|
|
34
|
+
description,
|
|
35
|
+
error
|
|
36
|
+
}),
|
|
37
|
+
...rest
|
|
38
|
+
}),
|
|
39
|
+
/*#__PURE__*/ jsx("button", {
|
|
40
|
+
type: "button",
|
|
41
|
+
className: `${fieldIconTrailing} ${fieldIconButton}`,
|
|
42
|
+
onClick: ()=>{
|
|
43
|
+
setRevealed((value)=>!value);
|
|
44
|
+
},
|
|
45
|
+
"aria-label": revealed ? 'Hide password' : 'Show password',
|
|
46
|
+
children: revealed ? /*#__PURE__*/ jsx(EyeOffIcon, {}) : /*#__PURE__*/ jsx(EyeIcon, {})
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
PasswordInput.displayName = 'PasswordInput';
|
|
53
|
+
const password_input_PasswordInput = PasswordInput;
|
|
54
|
+
const password_input = password_input_PasswordInput;
|
|
55
|
+
export default password_input;
|
|
56
|
+
export { password_input as PasswordInput };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
.n31tav0 {
|
|
2
|
+
gap: var(--vinyasa-space2);
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
display: flex;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.n31tav1 {
|
|
8
|
+
all: unset;
|
|
9
|
+
border-radius: var(--vinyasa-radius-full);
|
|
10
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
background-color: #0000;
|
|
13
|
+
flex-shrink: 0;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
align-items: center;
|
|
16
|
+
width: 1.125rem;
|
|
17
|
+
height: 1.125rem;
|
|
18
|
+
display: inline-flex;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.n31tav1[data-state="checked"] {
|
|
22
|
+
border-color: var(--vinyasa-primary);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.n31tav1:focus-visible {
|
|
26
|
+
border-color: var(--vinyasa-focus);
|
|
27
|
+
box-shadow: 0 0 0 1px var(--vinyasa-focus), 0 0 0 4px color-mix(in srgb, var(--vinyasa-focus) 16%, transparent);
|
|
28
|
+
outline: none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.n31tav1[data-disabled] {
|
|
32
|
+
opacity: var(--vinyasa-opacity-disabled);
|
|
33
|
+
cursor: not-allowed;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.n31tav2 {
|
|
37
|
+
border-radius: var(--vinyasa-radius-full);
|
|
38
|
+
background-color: var(--vinyasa-primary);
|
|
39
|
+
width: .625rem;
|
|
40
|
+
height: .625rem;
|
|
41
|
+
}
|
|
42
|
+
|