@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.
Files changed (185) hide show
  1. package/README.md +188 -0
  2. package/dist/cjs/autocomplete.cjs +344 -0
  3. package/dist/cjs/autocomplete.css +308 -0
  4. package/dist/cjs/checkbox.cjs +299 -0
  5. package/dist/cjs/checkbox.css +175 -0
  6. package/dist/cjs/color-picker.cjs +363 -0
  7. package/dist/cjs/color-picker.css +248 -0
  8. package/dist/cjs/combobox.cjs +394 -0
  9. package/dist/cjs/combobox.css +308 -0
  10. package/dist/cjs/date-picker.cjs +357 -0
  11. package/dist/cjs/date-picker.css +295 -0
  12. package/dist/cjs/dropzone.cjs +438 -0
  13. package/dist/cjs/dropzone.css +293 -0
  14. package/dist/cjs/file-upload.cjs +428 -0
  15. package/dist/cjs/file-upload.css +250 -0
  16. package/dist/cjs/icon-button.cjs +183 -0
  17. package/dist/cjs/index.cjs +3780 -0
  18. package/dist/cjs/index.css +1229 -0
  19. package/dist/cjs/input.cjs +340 -0
  20. package/dist/cjs/input.css +139 -0
  21. package/dist/cjs/multi-select.cjs +436 -0
  22. package/dist/cjs/multi-select.css +308 -0
  23. package/dist/cjs/number-input.cjs +458 -0
  24. package/dist/cjs/number-input.css +250 -0
  25. package/dist/cjs/otp-input.cjs +355 -0
  26. package/dist/cjs/otp-input.css +194 -0
  27. package/dist/cjs/password-input.cjs +368 -0
  28. package/dist/cjs/password-input.css +139 -0
  29. package/dist/cjs/radio-group.cjs +301 -0
  30. package/dist/cjs/radio-group.css +181 -0
  31. package/dist/cjs/range-slider.cjs +276 -0
  32. package/dist/cjs/range-slider.css +46 -0
  33. package/dist/cjs/rich-text-editor.cjs +570 -0
  34. package/dist/cjs/rich-text-editor.css +213 -0
  35. package/dist/cjs/search-input.cjs +380 -0
  36. package/dist/cjs/search-input.css +139 -0
  37. package/dist/cjs/select.cjs +407 -0
  38. package/dist/cjs/select.css +213 -0
  39. package/dist/cjs/slider.cjs +188 -0
  40. package/dist/cjs/slider.css +46 -0
  41. package/dist/cjs/switch.cjs +294 -0
  42. package/dist/cjs/switch.css +183 -0
  43. package/dist/cjs/tags-input.cjs +348 -0
  44. package/dist/cjs/tags-input.css +328 -0
  45. package/dist/cjs/textarea.cjs +361 -0
  46. package/dist/cjs/textarea.css +139 -0
  47. package/dist/cjs/time-picker.cjs +408 -0
  48. package/dist/cjs/time-picker.css +308 -0
  49. package/dist/cjs/toggle-button.cjs +172 -0
  50. package/dist/esm/27.css +46 -0
  51. package/dist/esm/27.js +38 -0
  52. package/dist/esm/2942.css +111 -0
  53. package/dist/esm/2942.js +13 -0
  54. package/dist/esm/2995.css +135 -0
  55. package/dist/esm/2995.js +117 -0
  56. package/dist/esm/3876.js +27 -0
  57. package/dist/esm/4557.js +39 -0
  58. package/dist/esm/6720.css +164 -0
  59. package/dist/esm/6720.js +19 -0
  60. package/dist/esm/autocomplete.d.ts +2 -0
  61. package/dist/esm/autocomplete.js +95 -0
  62. package/dist/esm/checkbox.css +36 -0
  63. package/dist/esm/checkbox.d.ts +2 -0
  64. package/dist/esm/checkbox.js +38 -0
  65. package/dist/esm/color-picker.css +109 -0
  66. package/dist/esm/color-picker.d.ts +2 -0
  67. package/dist/esm/color-picker.js +130 -0
  68. package/dist/esm/combobox.d.ts +2 -0
  69. package/dist/esm/combobox.js +126 -0
  70. package/dist/esm/components/autocomplete/Autocomplete.d.ts +21 -0
  71. package/dist/esm/components/autocomplete/index.d.ts +3 -0
  72. package/dist/esm/components/checkbox/Checkbox.css.d.ts +2 -0
  73. package/dist/esm/components/checkbox/Checkbox.d.ts +7 -0
  74. package/dist/esm/components/checkbox/index.d.ts +3 -0
  75. package/dist/esm/components/color-picker/ColorPicker.css.d.ts +11 -0
  76. package/dist/esm/components/color-picker/ColorPicker.d.ts +28 -0
  77. package/dist/esm/components/color-picker/index.d.ts +3 -0
  78. package/dist/esm/components/combobox/Combobox.d.ts +34 -0
  79. package/dist/esm/components/combobox/index.d.ts +3 -0
  80. package/dist/esm/components/date-picker/DatePicker.css.d.ts +18 -0
  81. package/dist/esm/components/date-picker/DatePicker.d.ts +29 -0
  82. package/dist/esm/components/date-picker/index.d.ts +3 -0
  83. package/dist/esm/components/dropzone/Dropzone.css.d.ts +4 -0
  84. package/dist/esm/components/dropzone/Dropzone.d.ts +20 -0
  85. package/dist/esm/components/dropzone/index.d.ts +3 -0
  86. package/dist/esm/components/file-upload/FileUpload.css.d.ts +11 -0
  87. package/dist/esm/components/file-upload/FileUpload.d.ts +20 -0
  88. package/dist/esm/components/file-upload/index.d.ts +3 -0
  89. package/dist/esm/components/icon-button/IconButton.d.ts +8 -0
  90. package/dist/esm/components/icon-button/index.d.ts +3 -0
  91. package/dist/esm/components/input/Input.d.ts +11 -0
  92. package/dist/esm/components/input/index.d.ts +3 -0
  93. package/dist/esm/components/multi-select/MultiSelect.d.ts +35 -0
  94. package/dist/esm/components/multi-select/index.d.ts +3 -0
  95. package/dist/esm/components/number-input/NumberInput.css.d.ts +51 -0
  96. package/dist/esm/components/number-input/NumberInput.d.ts +13 -0
  97. package/dist/esm/components/number-input/index.d.ts +3 -0
  98. package/dist/esm/components/otp-input/OtpInput.css.d.ts +6 -0
  99. package/dist/esm/components/otp-input/OtpInput.d.ts +16 -0
  100. package/dist/esm/components/otp-input/index.d.ts +3 -0
  101. package/dist/esm/components/password-input/PasswordInput.d.ts +11 -0
  102. package/dist/esm/components/password-input/index.d.ts +3 -0
  103. package/dist/esm/components/radio-group/RadioGroup.css.d.ts +3 -0
  104. package/dist/esm/components/radio-group/RadioGroup.d.ts +12 -0
  105. package/dist/esm/components/radio-group/index.d.ts +3 -0
  106. package/dist/esm/components/range-slider/RangeSlider.d.ts +11 -0
  107. package/dist/esm/components/range-slider/index.d.ts +3 -0
  108. package/dist/esm/components/rich-text-editor/RichTextEditor.css.d.ts +5 -0
  109. package/dist/esm/components/rich-text-editor/RichTextEditor.d.ts +18 -0
  110. package/dist/esm/components/rich-text-editor/index.d.ts +3 -0
  111. package/dist/esm/components/search-input/SearchInput.d.ts +13 -0
  112. package/dist/esm/components/search-input/index.d.ts +3 -0
  113. package/dist/esm/components/select/Select.css.d.ts +8 -0
  114. package/dist/esm/components/select/Select.d.ts +29 -0
  115. package/dist/esm/components/select/index.d.ts +3 -0
  116. package/dist/esm/components/slider/Slider.css.d.ts +4 -0
  117. package/dist/esm/components/slider/Slider.d.ts +12 -0
  118. package/dist/esm/components/slider/index.d.ts +3 -0
  119. package/dist/esm/components/switch/Switch.css.d.ts +2 -0
  120. package/dist/esm/components/switch/Switch.d.ts +7 -0
  121. package/dist/esm/components/switch/index.d.ts +3 -0
  122. package/dist/esm/components/tags-input/TagsInput.css.d.ts +1 -0
  123. package/dist/esm/components/tags-input/TagsInput.d.ts +18 -0
  124. package/dist/esm/components/tags-input/index.d.ts +3 -0
  125. package/dist/esm/components/textarea/Textarea.d.ts +13 -0
  126. package/dist/esm/components/textarea/index.d.ts +3 -0
  127. package/dist/esm/components/time-picker/TimePicker.d.ts +32 -0
  128. package/dist/esm/components/time-picker/index.d.ts +3 -0
  129. package/dist/esm/components/toggle-button/ToggleButton.d.ts +12 -0
  130. package/dist/esm/components/toggle-button/index.d.ts +3 -0
  131. package/dist/esm/date-picker.css +153 -0
  132. package/dist/esm/date-picker.d.ts +2 -0
  133. package/dist/esm/date-picker.js +118 -0
  134. package/dist/esm/dropzone.css +43 -0
  135. package/dist/esm/dropzone.d.ts +2 -0
  136. package/dist/esm/dropzone.js +137 -0
  137. package/dist/esm/field.css.d.ts +33 -0
  138. package/dist/esm/field.d.ts +24 -0
  139. package/dist/esm/file-upload.d.ts +2 -0
  140. package/dist/esm/file-upload.js +123 -0
  141. package/dist/esm/icon-button.d.ts +2 -0
  142. package/dist/esm/icon-button.js +29 -0
  143. package/dist/esm/index.d.ts +24 -0
  144. package/dist/esm/index.js +24 -0
  145. package/dist/esm/input.d.ts +2 -0
  146. package/dist/esm/input.js +39 -0
  147. package/dist/esm/multi-select.d.ts +2 -0
  148. package/dist/esm/multi-select.js +164 -0
  149. package/dist/esm/number-input.css +107 -0
  150. package/dist/esm/number-input.d.ts +2 -0
  151. package/dist/esm/number-input.js +153 -0
  152. package/dist/esm/otp-input.css +55 -0
  153. package/dist/esm/otp-input.d.ts +2 -0
  154. package/dist/esm/otp-input.js +56 -0
  155. package/dist/esm/password-input.d.ts +2 -0
  156. package/dist/esm/password-input.js +56 -0
  157. package/dist/esm/radio-group.css +42 -0
  158. package/dist/esm/radio-group.d.ts +2 -0
  159. package/dist/esm/radio-group.js +44 -0
  160. package/dist/esm/range-slider.d.ts +2 -0
  161. package/dist/esm/range-slider.js +22 -0
  162. package/dist/esm/rich-text-editor.css +74 -0
  163. package/dist/esm/rich-text-editor.d.ts +2 -0
  164. package/dist/esm/rich-text-editor.js +212 -0
  165. package/dist/esm/search-input.d.ts +2 -0
  166. package/dist/esm/search-input.js +62 -0
  167. package/dist/esm/select.css +73 -0
  168. package/dist/esm/select.d.ts +2 -0
  169. package/dist/esm/select.js +87 -0
  170. package/dist/esm/selectPopover.css.d.ts +17 -0
  171. package/dist/esm/slider.d.ts +2 -0
  172. package/dist/esm/slider.js +4 -0
  173. package/dist/esm/switch.css +44 -0
  174. package/dist/esm/switch.d.ts +2 -0
  175. package/dist/esm/switch.js +36 -0
  176. package/dist/esm/tags-input.css +16 -0
  177. package/dist/esm/tags-input.d.ts +2 -0
  178. package/dist/esm/tags-input.js +100 -0
  179. package/dist/esm/textarea.d.ts +2 -0
  180. package/dist/esm/textarea.js +58 -0
  181. package/dist/esm/time-picker.d.ts +2 -0
  182. package/dist/esm/time-picker.js +137 -0
  183. package/dist/esm/toggle-button.d.ts +2 -0
  184. package/dist/esm/toggle-button.js +4 -0
  185. 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,2 @@
1
+ export * from './components/number-input/index';
2
+ export { default } from './components/number-input/index';
@@ -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,2 @@
1
+ export * from './components/otp-input/index';
2
+ export { default } from './components/otp-input/index';
@@ -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,2 @@
1
+ export * from './components/password-input/index';
2
+ export { default } from './components/password-input/index';
@@ -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
+
@@ -0,0 +1,2 @@
1
+ export * from './components/radio-group/index';
2
+ export { default } from './components/radio-group/index';