@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,109 @@
|
|
|
1
|
+
._1o9um0f0 {
|
|
2
|
+
align-items: center;
|
|
3
|
+
gap: var(--vinyasa-space2);
|
|
4
|
+
text-align: left;
|
|
5
|
+
cursor: pointer;
|
|
6
|
+
background-color: #0000;
|
|
7
|
+
width: 100%;
|
|
8
|
+
min-width: 10rem;
|
|
9
|
+
max-width: 20rem;
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
._1o9um0f1 {
|
|
14
|
+
text-overflow: ellipsis;
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
flex: 1;
|
|
17
|
+
min-width: 0;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
._1o9um0f2 {
|
|
22
|
+
border-radius: var(--vinyasa-radius-sm);
|
|
23
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
24
|
+
flex-shrink: 0;
|
|
25
|
+
width: 1.25rem;
|
|
26
|
+
height: 1.25rem;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
._1o9um0f3 {
|
|
30
|
+
z-index: var(--vinyasa-z-index-dropdown);
|
|
31
|
+
gap: var(--vinyasa-space3);
|
|
32
|
+
padding: var(--vinyasa-space3);
|
|
33
|
+
background-color: var(--vinyasa-surface);
|
|
34
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
35
|
+
border-radius: var(--vinyasa-radius-md);
|
|
36
|
+
box-shadow: var(--vinyasa-elevation-overlay);
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
display: flex;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
._1o9um0f4 {
|
|
42
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
43
|
+
border-radius: var(--vinyasa-radius-sm);
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
._1o9um0f5 {
|
|
48
|
+
width: 13.75rem;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
._1o9um0f5 .react-colorful {
|
|
52
|
+
width: 100%;
|
|
53
|
+
height: 11rem;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
._1o9um0f6 {
|
|
57
|
+
padding: var(--vinyasa-space1) var(--vinyasa-space2);
|
|
58
|
+
border-top: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
59
|
+
background-color: var(--vinyasa-surface);
|
|
60
|
+
align-items: center;
|
|
61
|
+
display: flex;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
._1o9um0f7 {
|
|
65
|
+
min-width: 0;
|
|
66
|
+
font-family: var(--vinyasa-font-family-mono);
|
|
67
|
+
font-size: var(--vinyasa-font-size-sm);
|
|
68
|
+
color: var(--vinyasa-on-secondary);
|
|
69
|
+
text-transform: uppercase;
|
|
70
|
+
background: none;
|
|
71
|
+
border: none;
|
|
72
|
+
outline: none;
|
|
73
|
+
flex: 1;
|
|
74
|
+
padding: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
._1o9um0f8 {
|
|
78
|
+
font-size: var(--vinyasa-font-size-xs);
|
|
79
|
+
color: var(--vinyasa-text-muted);
|
|
80
|
+
margin-bottom: var(--vinyasa-space1);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
._1o9um0f9 {
|
|
84
|
+
gap: var(--vinyasa-space1);
|
|
85
|
+
flex-wrap: wrap;
|
|
86
|
+
display: flex;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
._1o9um0fa {
|
|
90
|
+
border-radius: var(--vinyasa-radius-sm);
|
|
91
|
+
border: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
|
|
92
|
+
cursor: pointer;
|
|
93
|
+
width: 1.5rem;
|
|
94
|
+
height: 1.5rem;
|
|
95
|
+
transition: transform var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
|
|
96
|
+
flex-shrink: 0;
|
|
97
|
+
padding: 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
._1o9um0fa:hover {
|
|
101
|
+
transform: scale(1.1);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
._1o9um0fa:focus-visible {
|
|
105
|
+
border-color: var(--vinyasa-focus);
|
|
106
|
+
box-shadow: 0 0 0 1px var(--vinyasa-focus), 0 0 0 4px color-mix(in srgb, var(--vinyasa-focus) 16%, transparent);
|
|
107
|
+
outline: none;
|
|
108
|
+
}
|
|
109
|
+
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import "./color-picker.css";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId, useState } from "react";
|
|
4
|
+
import { HexColorInput, HexColorPicker } from "react-colorful";
|
|
5
|
+
import { field, describedByIds } from "./4557.js";
|
|
6
|
+
import { fieldControl } from "./2995.js";
|
|
7
|
+
import * as __rspack_external__radix_ui_react_popover_e2827c9f from "@radix-ui/react-popover";
|
|
8
|
+
var content = '_1o9um0f3';
|
|
9
|
+
var hexInput = '_1o9um0f7';
|
|
10
|
+
var hexRow = '_1o9um0f6';
|
|
11
|
+
var pickerCard = '_1o9um0f4';
|
|
12
|
+
var pickerWrapper = '_1o9um0f5';
|
|
13
|
+
var presetSwatch = '_1o9um0fa';
|
|
14
|
+
var presetsLabel = '_1o9um0f8';
|
|
15
|
+
var presetsRow = '_1o9um0f9';
|
|
16
|
+
var swatch = '_1o9um0f2';
|
|
17
|
+
var ColorPicker_css_trigger = '_1o9um0f0';
|
|
18
|
+
var triggerText = '_1o9um0f1';
|
|
19
|
+
const ColorPicker = ({ value, defaultValue = '#4f46e5', onValueChange, label, description, error, required, size, disabled, presets, trigger, id: idProp })=>{
|
|
20
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
21
|
+
const isControlled = void 0 !== value;
|
|
22
|
+
const currentValue = isControlled ? value : internalValue;
|
|
23
|
+
const [open, setOpen] = useState(false);
|
|
24
|
+
const generatedId = useId();
|
|
25
|
+
const id = idProp ?? generatedId;
|
|
26
|
+
const setValue = (next)=>{
|
|
27
|
+
if (!isControlled) setInternalValue(next);
|
|
28
|
+
onValueChange?.(next);
|
|
29
|
+
};
|
|
30
|
+
return /*#__PURE__*/ jsx(field, {
|
|
31
|
+
id: id,
|
|
32
|
+
label: label,
|
|
33
|
+
description: description,
|
|
34
|
+
error: error,
|
|
35
|
+
required: required,
|
|
36
|
+
children: /*#__PURE__*/ jsxs(__rspack_external__radix_ui_react_popover_e2827c9f.Root, {
|
|
37
|
+
open: open,
|
|
38
|
+
onOpenChange: setOpen,
|
|
39
|
+
children: [
|
|
40
|
+
/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_popover_e2827c9f.Trigger, {
|
|
41
|
+
asChild: true,
|
|
42
|
+
children: trigger ?? /*#__PURE__*/ jsxs("button", {
|
|
43
|
+
type: "button",
|
|
44
|
+
id: id,
|
|
45
|
+
disabled: disabled,
|
|
46
|
+
className: `${fieldControl({
|
|
47
|
+
size,
|
|
48
|
+
invalid: Boolean(error)
|
|
49
|
+
})} ${ColorPicker_css_trigger}`,
|
|
50
|
+
"aria-describedby": describedByIds(id, {
|
|
51
|
+
description,
|
|
52
|
+
error
|
|
53
|
+
}),
|
|
54
|
+
children: [
|
|
55
|
+
/*#__PURE__*/ jsx("span", {
|
|
56
|
+
className: swatch,
|
|
57
|
+
style: {
|
|
58
|
+
backgroundColor: currentValue
|
|
59
|
+
},
|
|
60
|
+
"aria-hidden": "true"
|
|
61
|
+
}),
|
|
62
|
+
/*#__PURE__*/ jsx("span", {
|
|
63
|
+
className: triggerText,
|
|
64
|
+
children: currentValue.toUpperCase()
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
})
|
|
68
|
+
}),
|
|
69
|
+
/*#__PURE__*/ jsxs(__rspack_external__radix_ui_react_popover_e2827c9f.Content, {
|
|
70
|
+
className: content,
|
|
71
|
+
align: "start",
|
|
72
|
+
sideOffset: 4,
|
|
73
|
+
onOpenAutoFocus: (event)=>{
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
},
|
|
76
|
+
children: [
|
|
77
|
+
/*#__PURE__*/ jsxs("div", {
|
|
78
|
+
className: pickerCard,
|
|
79
|
+
children: [
|
|
80
|
+
/*#__PURE__*/ jsx("div", {
|
|
81
|
+
className: pickerWrapper,
|
|
82
|
+
children: /*#__PURE__*/ jsx(HexColorPicker, {
|
|
83
|
+
color: currentValue,
|
|
84
|
+
onChange: setValue
|
|
85
|
+
})
|
|
86
|
+
}),
|
|
87
|
+
/*#__PURE__*/ jsx("div", {
|
|
88
|
+
className: hexRow,
|
|
89
|
+
children: /*#__PURE__*/ jsx(HexColorInput, {
|
|
90
|
+
color: currentValue,
|
|
91
|
+
onChange: setValue,
|
|
92
|
+
prefixed: true,
|
|
93
|
+
className: hexInput
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
}),
|
|
98
|
+
presets && presets.length > 0 ? /*#__PURE__*/ jsxs("div", {
|
|
99
|
+
children: [
|
|
100
|
+
/*#__PURE__*/ jsx("p", {
|
|
101
|
+
className: presetsLabel,
|
|
102
|
+
children: "Presets"
|
|
103
|
+
}),
|
|
104
|
+
/*#__PURE__*/ jsx("div", {
|
|
105
|
+
className: presetsRow,
|
|
106
|
+
children: presets.map((preset)=>/*#__PURE__*/ jsx("button", {
|
|
107
|
+
type: "button",
|
|
108
|
+
className: presetSwatch,
|
|
109
|
+
style: {
|
|
110
|
+
backgroundColor: preset
|
|
111
|
+
},
|
|
112
|
+
"aria-label": preset,
|
|
113
|
+
onClick: ()=>{
|
|
114
|
+
setValue(preset);
|
|
115
|
+
}
|
|
116
|
+
}, preset))
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
}) : null
|
|
120
|
+
]
|
|
121
|
+
})
|
|
122
|
+
]
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
ColorPicker.displayName = 'ColorPicker';
|
|
127
|
+
const color_picker_ColorPicker = ColorPicker;
|
|
128
|
+
const color_picker = color_picker_ColorPicker;
|
|
129
|
+
export default color_picker;
|
|
130
|
+
export { color_picker as ColorPicker };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CheckIcon, ChevronDownIcon, SearchIcon } 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 { triggerText, empty, triggerIcon, searchIcon, placeholder as selectPopover_css_placeholder, content, searchInput, item, itemIndicator, searchWrapper, trigger as selectPopover_css_trigger, list } 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 Combobox = ({ options, value, defaultValue, onValueChange, placeholder = 'Select an option', label, description, error, required, size, disabled, emptyMessage = 'No results found.', trigger, id: idProp })=>{
|
|
11
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
12
|
+
const isControlled = void 0 !== value;
|
|
13
|
+
const currentValue = isControlled ? value : internalValue;
|
|
14
|
+
const selectedOption = options.find((option)=>option.value === currentValue);
|
|
15
|
+
const [open, setOpen] = useState(false);
|
|
16
|
+
const [search, setSearch] = useState('');
|
|
17
|
+
const generatedId = useId();
|
|
18
|
+
const id = idProp ?? generatedId;
|
|
19
|
+
const handleSelect = (optionValue)=>{
|
|
20
|
+
if (!isControlled) setInternalValue(optionValue);
|
|
21
|
+
onValueChange?.(optionValue);
|
|
22
|
+
setOpen(false);
|
|
23
|
+
};
|
|
24
|
+
return /*#__PURE__*/ jsx(field, {
|
|
25
|
+
id: id,
|
|
26
|
+
label: label,
|
|
27
|
+
description: description,
|
|
28
|
+
error: error,
|
|
29
|
+
required: required,
|
|
30
|
+
children: /*#__PURE__*/ jsxs(__rspack_external__radix_ui_react_popover_e2827c9f.Root, {
|
|
31
|
+
open: open,
|
|
32
|
+
onOpenChange: (next)=>{
|
|
33
|
+
setOpen(next);
|
|
34
|
+
if (!next) setSearch('');
|
|
35
|
+
},
|
|
36
|
+
children: [
|
|
37
|
+
/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_popover_e2827c9f.Trigger, {
|
|
38
|
+
asChild: true,
|
|
39
|
+
children: trigger ?? /*#__PURE__*/ jsxs("button", {
|
|
40
|
+
type: "button",
|
|
41
|
+
id: id,
|
|
42
|
+
disabled: disabled,
|
|
43
|
+
className: `${fieldControl({
|
|
44
|
+
size,
|
|
45
|
+
invalid: Boolean(error)
|
|
46
|
+
})} ${selectPopover_css_trigger}`,
|
|
47
|
+
"aria-describedby": describedByIds(id, {
|
|
48
|
+
description,
|
|
49
|
+
error
|
|
50
|
+
}),
|
|
51
|
+
children: [
|
|
52
|
+
/*#__PURE__*/ jsx("span", {
|
|
53
|
+
className: selectedOption ? triggerText : `${triggerText} ${selectPopover_css_placeholder}`,
|
|
54
|
+
children: selectedOption ? selectedOption.label : placeholder
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ jsx("span", {
|
|
57
|
+
className: triggerIcon,
|
|
58
|
+
"aria-hidden": "true",
|
|
59
|
+
children: /*#__PURE__*/ jsx(ChevronDownIcon, {})
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
})
|
|
63
|
+
}),
|
|
64
|
+
/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_popover_e2827c9f.Content, {
|
|
65
|
+
className: content,
|
|
66
|
+
align: "start",
|
|
67
|
+
sideOffset: 4,
|
|
68
|
+
children: /*#__PURE__*/ jsxs(Command, {
|
|
69
|
+
loop: true,
|
|
70
|
+
label: 'string' == typeof label ? label : 'Search options',
|
|
71
|
+
children: [
|
|
72
|
+
/*#__PURE__*/ jsxs("div", {
|
|
73
|
+
className: searchWrapper,
|
|
74
|
+
children: [
|
|
75
|
+
/*#__PURE__*/ jsx("span", {
|
|
76
|
+
className: searchIcon,
|
|
77
|
+
"aria-hidden": "true",
|
|
78
|
+
children: /*#__PURE__*/ jsx(SearchIcon, {})
|
|
79
|
+
}),
|
|
80
|
+
/*#__PURE__*/ jsx(Command.Input, {
|
|
81
|
+
autoFocus: true,
|
|
82
|
+
value: search,
|
|
83
|
+
onValueChange: setSearch,
|
|
84
|
+
placeholder: "Search…",
|
|
85
|
+
className: searchInput
|
|
86
|
+
})
|
|
87
|
+
]
|
|
88
|
+
}),
|
|
89
|
+
/*#__PURE__*/ jsxs(Command.List, {
|
|
90
|
+
className: list,
|
|
91
|
+
children: [
|
|
92
|
+
/*#__PURE__*/ jsx(Command.Empty, {
|
|
93
|
+
className: empty,
|
|
94
|
+
children: emptyMessage
|
|
95
|
+
}),
|
|
96
|
+
options.map((option)=>/*#__PURE__*/ jsxs(Command.Item, {
|
|
97
|
+
value: optionText(option),
|
|
98
|
+
disabled: option.disabled,
|
|
99
|
+
onSelect: ()=>{
|
|
100
|
+
handleSelect(option.value);
|
|
101
|
+
},
|
|
102
|
+
className: item,
|
|
103
|
+
"data-selected": option.value === currentValue,
|
|
104
|
+
"data-disabled": option.disabled,
|
|
105
|
+
children: [
|
|
106
|
+
option.label,
|
|
107
|
+
option.value === currentValue ? /*#__PURE__*/ jsx("span", {
|
|
108
|
+
className: itemIndicator,
|
|
109
|
+
children: /*#__PURE__*/ jsx(CheckIcon, {})
|
|
110
|
+
}) : null
|
|
111
|
+
]
|
|
112
|
+
}, option.value))
|
|
113
|
+
]
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
})
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
Combobox.displayName = 'Combobox';
|
|
123
|
+
const combobox_Combobox = Combobox;
|
|
124
|
+
const combobox = combobox_Combobox;
|
|
125
|
+
export default combobox;
|
|
126
|
+
export { combobox as Combobox };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface AutocompleteProps {
|
|
3
|
+
/** Suggestions shown while typing — picking one fills the field with it. */
|
|
4
|
+
suggestions: string[];
|
|
5
|
+
value?: string;
|
|
6
|
+
defaultValue?: string;
|
|
7
|
+
onValueChange?: (value: string) => void;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
label?: ReactNode;
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
error?: ReactNode;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
size?: 'sm' | 'md' | 'lg';
|
|
14
|
+
emptyMessage?: ReactNode;
|
|
15
|
+
id?: string;
|
|
16
|
+
}
|
|
17
|
+
declare const Autocomplete: {
|
|
18
|
+
({ suggestions, value, defaultValue, onValueChange, placeholder, label, description, error, required, size, emptyMessage, id: idProp, }: AutocompleteProps): import("react").JSX.Element;
|
|
19
|
+
displayName: string;
|
|
20
|
+
};
|
|
21
|
+
export default Autocomplete;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as RadixCheckbox from '@radix-ui/react-checkbox';
|
|
2
|
+
import { type ReactNode } from 'react';
|
|
3
|
+
export interface CheckboxProps extends RadixCheckbox.CheckboxProps {
|
|
4
|
+
label?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
export default Checkbox;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const trigger: string;
|
|
2
|
+
export declare const triggerText: string;
|
|
3
|
+
export declare const swatch: string;
|
|
4
|
+
export declare const content: string;
|
|
5
|
+
export declare const pickerCard: string;
|
|
6
|
+
export declare const pickerWrapper: string;
|
|
7
|
+
export declare const hexRow: string;
|
|
8
|
+
export declare const hexInput: string;
|
|
9
|
+
export declare const presetsLabel: string;
|
|
10
|
+
export declare const presetsRow: string;
|
|
11
|
+
export declare const presetSwatch: string;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface ColorPickerProps {
|
|
3
|
+
value?: string;
|
|
4
|
+
defaultValue?: string;
|
|
5
|
+
onValueChange?: (color: string) => void;
|
|
6
|
+
label?: ReactNode;
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
error?: ReactNode;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
size?: 'sm' | 'md' | 'lg';
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** A row of preset swatches shown above the hex field — click applies the color without closing the popover. */
|
|
13
|
+
presets?: string[];
|
|
14
|
+
/**
|
|
15
|
+
* Replaces the built-in trigger button entirely — passed straight through
|
|
16
|
+
* to Popover.Trigger's `asChild`, so it keeps the same open/close click
|
|
17
|
+
* and keyboard wiring. The element is responsible for its own styling and
|
|
18
|
+
* accessibility attributes (id, aria-describedby, disabled) since those
|
|
19
|
+
* aren't applied automatically the way they are to the default button.
|
|
20
|
+
*/
|
|
21
|
+
trigger?: ReactNode;
|
|
22
|
+
id?: string;
|
|
23
|
+
}
|
|
24
|
+
declare const ColorPicker: {
|
|
25
|
+
({ value, defaultValue, onValueChange, label, description, error, required, size, disabled, presets, trigger, id: idProp, }: ColorPickerProps): import("react").JSX.Element;
|
|
26
|
+
displayName: string;
|
|
27
|
+
};
|
|
28
|
+
export default ColorPicker;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface ComboboxOption {
|
|
3
|
+
value: string;
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ComboboxProps {
|
|
8
|
+
options: ComboboxOption[];
|
|
9
|
+
value?: string;
|
|
10
|
+
defaultValue?: string;
|
|
11
|
+
onValueChange?: (value: string) => void;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
label?: ReactNode;
|
|
14
|
+
description?: ReactNode;
|
|
15
|
+
error?: ReactNode;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
size?: 'sm' | 'md' | 'lg';
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
emptyMessage?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Replaces the built-in trigger button entirely — passed straight through
|
|
22
|
+
* to Popover.Trigger's `asChild`, so it keeps the same open/close click
|
|
23
|
+
* and keyboard wiring. The element is responsible for its own styling and
|
|
24
|
+
* accessibility attributes (id, aria-describedby, disabled) since those
|
|
25
|
+
* aren't applied automatically the way they are to the default button.
|
|
26
|
+
*/
|
|
27
|
+
trigger?: ReactNode;
|
|
28
|
+
id?: string;
|
|
29
|
+
}
|
|
30
|
+
declare const Combobox: {
|
|
31
|
+
({ options, value, defaultValue, onValueChange, placeholder, label, description, error, required, size, disabled, emptyMessage, trigger, id: idProp, }: ComboboxProps): import("react").JSX.Element;
|
|
32
|
+
displayName: string;
|
|
33
|
+
};
|
|
34
|
+
export default Combobox;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const content: string;
|
|
2
|
+
export declare const trigger: string;
|
|
3
|
+
export declare const triggerPlaceholder: string;
|
|
4
|
+
export declare const triggerText: string;
|
|
5
|
+
export declare const triggerIcon: string;
|
|
6
|
+
export declare const root: string;
|
|
7
|
+
export declare const months: string;
|
|
8
|
+
export declare const month: string;
|
|
9
|
+
export declare const monthCaption: string;
|
|
10
|
+
export declare const nav: string;
|
|
11
|
+
export declare const navButton: string;
|
|
12
|
+
export declare const weekday: string;
|
|
13
|
+
export declare const day: string;
|
|
14
|
+
export declare const dayButton: string;
|
|
15
|
+
export declare const today: string;
|
|
16
|
+
export declare const outside: string;
|
|
17
|
+
export declare const disabled: string;
|
|
18
|
+
export declare const selected: string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface DatePickerProps {
|
|
3
|
+
value?: Date;
|
|
4
|
+
defaultValue?: Date;
|
|
5
|
+
onValueChange?: (date: Date | undefined) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
/** date-fns format string for the trigger's display text. Defaults to 'PPP' (e.g. "April 29th, 2026"). */
|
|
8
|
+
dateFormat?: string;
|
|
9
|
+
label?: ReactNode;
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
error?: ReactNode;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
size?: 'sm' | 'md' | 'lg';
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Replaces the built-in trigger button entirely — passed straight through
|
|
17
|
+
* to Popover.Trigger's `asChild`, so it keeps the same open/close click
|
|
18
|
+
* and keyboard wiring. The element is responsible for its own styling and
|
|
19
|
+
* accessibility attributes (id, aria-describedby, disabled) since those
|
|
20
|
+
* aren't applied automatically the way they are to the default button.
|
|
21
|
+
*/
|
|
22
|
+
trigger?: ReactNode;
|
|
23
|
+
id?: string;
|
|
24
|
+
}
|
|
25
|
+
declare const DatePicker: {
|
|
26
|
+
({ value, defaultValue, onValueChange, placeholder, dateFormat, label, description, error, required, size, disabled, trigger, id: idProp, }: DatePickerProps): import("react").JSX.Element;
|
|
27
|
+
displayName: string;
|
|
28
|
+
};
|
|
29
|
+
export default DatePicker;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type Accept } from 'react-dropzone';
|
|
3
|
+
export interface DropzoneProps {
|
|
4
|
+
value?: File[];
|
|
5
|
+
onValueChange?: (files: File[]) => void;
|
|
6
|
+
accept?: Accept;
|
|
7
|
+
maxFiles?: number;
|
|
8
|
+
maxSize?: number;
|
|
9
|
+
label?: ReactNode;
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
error?: ReactNode;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
id?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const Dropzone: {
|
|
17
|
+
({ value, onValueChange, accept, maxFiles, maxSize, label, description, error, required, disabled, id: idProp, }: DropzoneProps): import("react").JSX.Element;
|
|
18
|
+
displayName: string;
|
|
19
|
+
};
|
|
20
|
+
export default Dropzone;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const trigger: string;
|
|
2
|
+
export declare const fileListWrapper: string;
|
|
3
|
+
export declare const fileList: string;
|
|
4
|
+
export declare const fileRow: string;
|
|
5
|
+
export declare const fileName: string;
|
|
6
|
+
export declare const fileNameIcon: string;
|
|
7
|
+
export declare const fileNameText: string;
|
|
8
|
+
export declare const fileMeta: string;
|
|
9
|
+
export declare const fileSize: string;
|
|
10
|
+
export declare const fileRemove: string;
|
|
11
|
+
export declare const rejectionText: string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type Accept } from 'react-dropzone';
|
|
3
|
+
export interface FileUploadProps {
|
|
4
|
+
value?: File[];
|
|
5
|
+
onValueChange?: (files: File[]) => void;
|
|
6
|
+
accept?: Accept;
|
|
7
|
+
maxFiles?: number;
|
|
8
|
+
maxSize?: number;
|
|
9
|
+
label?: ReactNode;
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
error?: ReactNode;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
id?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const FileUpload: {
|
|
17
|
+
({ value, onValueChange, accept, maxFiles, maxSize, label, description, error, required, disabled, id: idProp, }: FileUploadProps): import("react").JSX.Element;
|
|
18
|
+
displayName: string;
|
|
19
|
+
};
|
|
20
|
+
export default FileUpload;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ButtonProps } from '@vinyasa/button';
|
|
2
|
+
import { type ReactNode } from 'react';
|
|
3
|
+
export interface IconButtonProps extends Omit<ButtonProps, 'children' | 'leadingIcon' | 'trailingIcon'> {
|
|
4
|
+
icon: ReactNode;
|
|
5
|
+
'aria-label': string;
|
|
6
|
+
}
|
|
7
|
+
declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
export default IconButton;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
2
|
+
export type InputSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export interface InputProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size'> {
|
|
4
|
+
label?: ReactNode;
|
|
5
|
+
description?: ReactNode;
|
|
6
|
+
error?: ReactNode;
|
|
7
|
+
required?: boolean;
|
|
8
|
+
size?: InputSize;
|
|
9
|
+
}
|
|
10
|
+
declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
11
|
+
export default Input;
|