@react-fabric/form 1.0.0-beta.5 → 1.0.0-beta.52

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 (187) hide show
  1. package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
  2. package/css/_colorPicker.css +65 -0
  3. package/{src/internal/Field.module.css → css/_field.css} +64 -29
  4. package/{src/input/File.module.css → css/_file.css} +21 -6
  5. package/css/styles.css +27 -0
  6. package/dist/cjs/builder/FileField.js +37 -25
  7. package/dist/cjs/builder/FormField.js +50 -34
  8. package/dist/cjs/builder/SchemaEditor.js +72 -0
  9. package/dist/cjs/builder/components/AddSchemaFields.js +62 -0
  10. package/dist/cjs/builder/components/SchemaArrayForm.js +143 -0
  11. package/dist/cjs/builder/components/SchemaField.js +414 -0
  12. package/dist/cjs/form/Controller.js +46 -1
  13. package/dist/cjs/form/Form.js +43 -6
  14. package/dist/cjs/hooks/useFileUploader.js +16 -0
  15. package/dist/cjs/hooks/useFormBuilder.js +57 -15
  16. package/dist/cjs/i18n/ar.json.js +5 -4
  17. package/dist/cjs/i18n/en.json.js +5 -5
  18. package/dist/cjs/index.js +11 -2
  19. package/dist/cjs/input/ArrayInput.js +100 -33
  20. package/dist/cjs/input/AvatarInput.js +17 -8
  21. package/dist/cjs/input/Checkbox.js +15 -5
  22. package/dist/cjs/input/ColorInput.js +108 -56
  23. package/dist/cjs/input/ColorPicker.js +11 -35
  24. package/dist/cjs/input/DateInput.js +195 -0
  25. package/dist/cjs/input/Field.js +10 -4
  26. package/dist/cjs/input/File.js +14 -7
  27. package/dist/cjs/input/Hidden.js +11 -1
  28. package/dist/cjs/input/Input.js +19 -7
  29. package/dist/cjs/input/Number.js +17 -7
  30. package/dist/cjs/input/Password.js +16 -8
  31. package/dist/cjs/input/Radio.js +11 -2
  32. package/dist/cjs/input/RadioGroup.js +14 -3
  33. package/dist/cjs/input/{Range.js → RangeSlider.js} +14 -6
  34. package/dist/cjs/input/Search.js +25 -16
  35. package/dist/cjs/input/Slider.js +10 -4
  36. package/dist/cjs/input/Switch.js +39 -7
  37. package/dist/cjs/input/Textarea.js +23 -4
  38. package/dist/cjs/internal/ErrorIcon.js +1 -1
  39. package/dist/cjs/internal/FieldWrapper.js +11 -4
  40. package/dist/cjs/internal/InputWrapper.js +19 -16
  41. package/dist/cjs/select/AutoComplete.js +19 -8
  42. package/dist/cjs/select/DualList.js +15 -1
  43. package/dist/cjs/select/List.js +45 -20
  44. package/dist/cjs/select/Options.js +2 -2
  45. package/dist/cjs/select/Select.js +14 -4
  46. package/dist/cjs/select/useSelect.js +10 -6
  47. package/dist/cjs/types/schema.js +43 -0
  48. package/dist/cjs/utils/eventHandlers.js +11 -5
  49. package/dist/cjs/utils/getColor.js +6 -0
  50. package/dist/esm/builder/FileField.js +39 -27
  51. package/dist/esm/builder/FormField.js +50 -34
  52. package/dist/esm/builder/SchemaEditor.js +72 -0
  53. package/dist/esm/builder/components/AddSchemaFields.js +62 -0
  54. package/dist/esm/builder/components/SchemaArrayForm.js +143 -0
  55. package/dist/esm/builder/components/SchemaField.js +414 -0
  56. package/dist/esm/form/Controller.js +46 -1
  57. package/dist/esm/form/Form.js +43 -6
  58. package/dist/esm/hooks/useFileUploader.js +16 -0
  59. package/dist/esm/hooks/useFormBuilder.js +55 -13
  60. package/dist/esm/i18n/ar.json.js +5 -4
  61. package/dist/esm/i18n/en.json.js +5 -5
  62. package/dist/esm/index.js +5 -1
  63. package/dist/esm/input/ArrayInput.js +100 -33
  64. package/dist/esm/input/AvatarInput.js +17 -8
  65. package/dist/esm/input/Checkbox.js +15 -5
  66. package/dist/esm/input/ColorInput.js +110 -58
  67. package/dist/esm/input/ColorPicker.js +11 -35
  68. package/dist/esm/input/DateInput.js +195 -0
  69. package/dist/esm/input/Field.js +11 -5
  70. package/dist/esm/input/File.js +16 -9
  71. package/dist/esm/input/Hidden.js +11 -1
  72. package/dist/esm/input/Input.js +21 -9
  73. package/dist/esm/input/Number.js +19 -9
  74. package/dist/esm/input/Password.js +18 -10
  75. package/dist/esm/input/Radio.js +11 -2
  76. package/dist/esm/input/RadioGroup.js +15 -4
  77. package/dist/esm/input/{Range.js → RangeSlider.js} +14 -6
  78. package/dist/esm/input/Search.js +27 -18
  79. package/dist/esm/input/Slider.js +10 -4
  80. package/dist/esm/input/Switch.js +41 -9
  81. package/dist/esm/input/Textarea.js +24 -5
  82. package/dist/esm/internal/ErrorIcon.js +1 -1
  83. package/dist/esm/internal/FieldWrapper.js +11 -4
  84. package/dist/esm/internal/InputWrapper.js +19 -16
  85. package/dist/esm/select/AutoComplete.js +19 -8
  86. package/dist/esm/select/DualList.js +15 -1
  87. package/dist/esm/select/List.js +46 -21
  88. package/dist/esm/select/Options.js +2 -2
  89. package/dist/esm/select/Select.js +14 -4
  90. package/dist/esm/select/useSelect.js +11 -7
  91. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  92. package/dist/esm/utils/eventHandlers.js +11 -5
  93. package/dist/esm/utils/getColor.js +6 -1
  94. package/dist/types/builder/FileField.d.ts +4 -2
  95. package/dist/types/builder/FormField.d.ts +3 -1
  96. package/dist/types/builder/SchemaEditor.d.ts +9 -0
  97. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  98. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  99. package/dist/types/builder/components/SchemaField.d.ts +10 -0
  100. package/dist/types/form/Controller.d.ts +47 -2
  101. package/dist/types/form/Form.d.ts +37 -2
  102. package/dist/types/hooks/useFileUploader.d.ts +16 -0
  103. package/dist/types/hooks/useFormBuilder.d.ts +32 -1
  104. package/dist/types/index.d.ts +5 -2
  105. package/dist/types/input/ArrayInput.d.ts +78 -6
  106. package/dist/types/input/AvatarInput.d.ts +14 -3
  107. package/dist/types/input/Checkbox.d.ts +13 -4
  108. package/dist/types/input/ColorInput.d.ts +15 -2
  109. package/dist/types/input/ColorPicker.d.ts +11 -1
  110. package/dist/types/input/DateInput.d.ts +28 -0
  111. package/dist/types/input/Field.d.ts +5 -1
  112. package/dist/types/input/File.d.ts +9 -0
  113. package/dist/types/input/Hidden.d.ts +8 -0
  114. package/dist/types/input/Input.d.ts +9 -1
  115. package/dist/types/input/Number.d.ts +9 -1
  116. package/dist/types/input/Password.d.ts +7 -1
  117. package/dist/types/input/Radio.d.ts +9 -1
  118. package/dist/types/input/RadioGroup.d.ts +26 -3
  119. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +10 -2
  120. package/dist/types/input/Search.d.ts +14 -1
  121. package/dist/types/input/Slider.d.ts +7 -1
  122. package/dist/types/input/Switch.d.ts +16 -4
  123. package/dist/types/input/Textarea.d.ts +15 -1
  124. package/dist/types/internal/FieldWrapper.d.ts +1 -1
  125. package/dist/types/internal/InputWrapper.d.ts +1 -1
  126. package/dist/types/ranger/index.d.ts +2 -2
  127. package/dist/types/select/AutoComplete.d.ts +8 -1
  128. package/dist/types/select/DualList.d.ts +17 -2
  129. package/dist/types/select/List.d.ts +9 -1
  130. package/dist/types/select/Select.d.ts +9 -1
  131. package/dist/types/select/useSelect.d.ts +7 -6
  132. package/dist/types/types/index.d.ts +28 -7
  133. package/dist/types/types/schema.d.ts +78 -33
  134. package/dist/types/utils/eventHandlers.d.ts +1 -1
  135. package/package.json +15 -12
  136. package/src/builder/FileField.tsx +53 -27
  137. package/src/builder/FormField.tsx +52 -32
  138. package/src/builder/SchemaEditor.tsx +79 -0
  139. package/src/builder/components/AddSchemaFields.tsx +74 -0
  140. package/src/builder/components/SchemaArrayForm.tsx +158 -0
  141. package/src/builder/components/SchemaField.tsx +436 -0
  142. package/src/form/Controller.tsx +48 -3
  143. package/src/form/Form.tsx +45 -5
  144. package/src/hooks/useFileUploader.ts +16 -0
  145. package/src/hooks/useFormBuilder.tsx +58 -15
  146. package/src/i18n/ar.json +5 -4
  147. package/src/i18n/en.json +5 -5
  148. package/src/index.ts +11 -2
  149. package/src/input/ArrayInput.tsx +169 -54
  150. package/src/input/AvatarInput.tsx +20 -8
  151. package/src/input/Checkbox.tsx +15 -5
  152. package/src/input/ColorInput.tsx +126 -69
  153. package/src/input/ColorPicker.tsx +12 -36
  154. package/src/input/DateInput.tsx +259 -0
  155. package/src/input/Field.tsx +15 -11
  156. package/src/input/File.tsx +16 -14
  157. package/src/input/Hidden.tsx +12 -1
  158. package/src/input/Input.tsx +23 -10
  159. package/src/input/Number.tsx +18 -10
  160. package/src/input/Password.tsx +19 -12
  161. package/src/input/Radio.tsx +11 -2
  162. package/src/input/RadioGroup.tsx +35 -4
  163. package/src/input/{Range.tsx → RangeSlider.tsx} +13 -5
  164. package/src/input/Search.tsx +29 -19
  165. package/src/input/Slider.tsx +10 -4
  166. package/src/input/Switch.tsx +52 -7
  167. package/src/input/Textarea.tsx +29 -5
  168. package/src/internal/ErrorIcon.tsx +1 -1
  169. package/src/internal/FieldWrapper.tsx +8 -4
  170. package/src/internal/InputWrapper.tsx +36 -20
  171. package/src/select/AutoComplete.tsx +12 -1
  172. package/src/select/DualList.tsx +19 -0
  173. package/src/select/List.tsx +49 -8
  174. package/src/select/Options.tsx +1 -1
  175. package/src/select/Select.tsx +21 -3
  176. package/src/select/useSelect.tsx +13 -5
  177. package/src/types/index.ts +34 -8
  178. package/src/types/schema.ts +96 -41
  179. package/src/utils/eventHandlers.ts +9 -3
  180. package/dist/cjs/input/ArrayInput.module.css +0 -1
  181. package/dist/cjs/input/ColorPicker.module.css +0 -1
  182. package/dist/cjs/input/File.module.css +0 -1
  183. package/dist/cjs/internal/Field.module.css +0 -1
  184. package/dist/esm/input/ArrayInput.module.css +0 -1
  185. package/dist/esm/input/ColorPicker.module.css +0 -1
  186. package/dist/esm/input/File.module.css +0 -1
  187. package/dist/esm/internal/Field.module.css +0 -1
@@ -3,15 +3,24 @@
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ var classNames = require('classnames');
6
7
  var react = require('react');
7
8
  var InputWrapper = require('../internal/InputWrapper.js');
8
9
  var eventHandlers = require('../utils/eventHandlers.js');
9
10
  require('@react-fabric/utilities');
10
11
  var jsxRuntime = require('react/jsx-runtime');
11
12
 
12
- var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "type", "onChange", "onEnterPressed"];
13
+ var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "monospace", "type", "onBlur", "onFocus", "onChange", "onEnterPressed"];
13
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
15
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ /**
17
+ * This component is used to render a text input field with various properties such as name, value, invalid state, read-only, disabled, required, placeholder, autoFocus, error message, monospace font option, and event handlers for blur, focus, change, and enter key press.
18
+ * It also includes a clear button that appears when there is a value in the input field, allowing users to clear the input easily.
19
+ * The component uses a wrapper to handle the clear button and styling, and it supports deferred value updates to optimize performance.
20
+ *
21
+ * @param {TextInputProps} props - The properties for the text input component.
22
+ * @returns {JSX.Element} - A JSX element representing the text input field.
23
+ */
15
24
  var Input = function Input(_ref) {
16
25
  var ref = _ref.ref,
17
26
  name = _ref.name,
@@ -23,8 +32,11 @@ var Input = function Input(_ref) {
23
32
  placeholder = _ref.placeholder,
24
33
  autoFocus = _ref.autoFocus,
25
34
  error = _ref.error,
35
+ monospace = _ref.monospace,
26
36
  _ref$type = _ref.type,
27
37
  type = _ref$type === void 0 ? "text" : _ref$type,
38
+ onBlur = _ref.onBlur,
39
+ onFocus = _ref.onFocus,
28
40
  onChange = _ref.onChange,
29
41
  onEnterPressed = _ref.onEnterPressed,
30
42
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -33,19 +45,17 @@ var Input = function Input(_ref) {
33
45
  actualValue = _useState2[0],
34
46
  setActualValue = _useState2[1];
35
47
  var deferred = react.useDeferredValue(value);
36
- var handleEnterPressed = react.useMemo(function () {
37
- return eventHandlers.handleEnter(onEnterPressed);
38
- }, [onEnterPressed]);
48
+ var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
39
49
  react.useEffect(function () {
40
50
  setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
41
51
  }, [deferred]);
42
52
  var handleChange = react.useCallback(function (e) {
43
53
  var value = e === null || e === void 0 ? void 0 : e.target.value;
44
54
  setActualValue(value !== null && value !== void 0 ? value : "");
45
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
55
+ onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
46
56
  }, [onchange]);
47
57
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
48
- showClear: !!actualValue,
58
+ showClear: !!actualValue && !disabled && !readOnly,
49
59
  onClear: handleChange,
50
60
  invalid: invalid,
51
61
  readOnly: readOnly,
@@ -54,7 +64,7 @@ var Input = function Input(_ref) {
54
64
  error: error
55
65
  }, rest), {}, {
56
66
  children: /*#__PURE__*/jsxRuntime.jsx("input", {
57
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
67
+ className: classNames("appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer", monospace && "font-mono text-sm"),
58
68
  "aria-invalid": invalid,
59
69
  "aria-disabled": disabled,
60
70
  "aria-readonly": readOnly,
@@ -70,6 +80,8 @@ var Input = function Input(_ref) {
70
80
  autoComplete: "off",
71
81
  autoFocus: autoFocus,
72
82
  value: actualValue,
83
+ onBlur: onBlur,
84
+ onFocus: onFocus,
73
85
  onChange: handleChange,
74
86
  onKeyDown: handleEnterPressed
75
87
  })
@@ -9,9 +9,17 @@ var eventHandlers = require('../utils/eventHandlers.js');
9
9
  require('@react-fabric/utilities');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
11
 
12
- var _excluded = ["ref", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "name", "min", "max", "step", "onChange", "onEnterPressed"];
12
+ var _excluded = ["ref", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "name", "min", "max", "step", "onBlur", "onFocus", "onChange", "onEnterPressed"];
13
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ /**
16
+ * This component allows users to input numeric values with optional minimum, maximum, and step constraints.
17
+ * It provides a clear interface for entering numbers, with support for validation and accessibility features.
18
+ * It also includes a clear button to reset the input value.
19
+ *
20
+ * @param {NumberProps} props - The properties for the Number input component.
21
+ * @returns {JSX.Element} The rendered Number input component.
22
+ */
15
23
  var Number = function Number(_ref) {
16
24
  var ref = _ref.ref,
17
25
  value = _ref.value,
@@ -25,6 +33,8 @@ var Number = function Number(_ref) {
25
33
  min = _ref.min,
26
34
  max = _ref.max,
27
35
  step = _ref.step,
36
+ onBlur = _ref.onBlur,
37
+ onFocus = _ref.onFocus,
28
38
  onChange = _ref.onChange,
29
39
  onEnterPressed = _ref.onEnterPressed,
30
40
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -33,19 +43,17 @@ var Number = function Number(_ref) {
33
43
  actualValue = _useState2[0],
34
44
  setActualValue = _useState2[1];
35
45
  var deferred = react.useDeferredValue(value);
36
- var handleEnterPressed = react.useMemo(function () {
37
- return eventHandlers.handleEnter(onEnterPressed);
38
- }, [onEnterPressed]);
46
+ var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
39
47
  react.useEffect(function () {
40
48
  setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
41
49
  }, [deferred]);
42
50
  var handleChange = react.useCallback(function (e) {
43
51
  var number = e === null || e === void 0 ? void 0 : e.target.valueAsNumber;
44
52
  setActualValue(number !== null && number !== void 0 ? number : "");
45
- onChange === null || onChange === void 0 || onChange(number !== null && number !== void 0 ? number : undefined);
53
+ onChange === null || onChange === void 0 || onChange(number !== null && number !== void 0 ? number : null);
46
54
  }, [onChange]);
47
55
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
48
- showClear: !!actualValue,
56
+ showClear: !!actualValue && !disabled && !readOnly,
49
57
  onClear: handleChange,
50
58
  invalid: invalid,
51
59
  readOnly: readOnly,
@@ -53,7 +61,7 @@ var Number = function Number(_ref) {
53
61
  required: required
54
62
  }, rest), {}, {
55
63
  children: /*#__PURE__*/jsxRuntime.jsx("input", {
56
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
64
+ className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
57
65
  "aria-invalid": invalid,
58
66
  "aria-disabled": disabled,
59
67
  "aria-readonly": readOnly,
@@ -71,6 +79,8 @@ var Number = function Number(_ref) {
71
79
  autoComplete: "off",
72
80
  autoFocus: autoFocus,
73
81
  value: actualValue,
82
+ onBlur: onBlur,
83
+ onFocus: onFocus,
74
84
  onChange: handleChange,
75
85
  onKeyDown: handleEnterPressed
76
86
  })
@@ -12,9 +12,15 @@ var eventHandlers = require('../utils/eventHandlers.js');
12
12
  require('@react-fabric/utilities');
13
13
  var jsxRuntime = require('react/jsx-runtime');
14
14
 
15
- var _excluded = ["ref", "value", "name", "strength", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "showToggle", "onChange", "onEnterPressed"];
15
+ var _excluded = ["ref", "value", "name", "strength", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "showToggle", "onBlur", "onFocus", "onChange", "onEnterPressed"];
16
16
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
17
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
+ /**
19
+ * Password input component with optional strength meter and toggle visibility.
20
+ *
21
+ * @param {PasswordProps} props - The properties for the Password component.
22
+ * @returns {JSX.Element} The rendered Password input component.
23
+ */
18
24
  var Password = function Password(_ref) {
19
25
  var ref = _ref.ref,
20
26
  value = _ref.value,
@@ -27,6 +33,8 @@ var Password = function Password(_ref) {
27
33
  placeholder = _ref.placeholder,
28
34
  autoFocus = _ref.autoFocus,
29
35
  showToggle = _ref.showToggle,
36
+ onBlur = _ref.onBlur,
37
+ onFocus = _ref.onFocus,
30
38
  onChange = _ref.onChange,
31
39
  onEnterPressed = _ref.onEnterPressed,
32
40
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -41,26 +49,24 @@ var Password = function Password(_ref) {
41
49
  actualValue = _useState4[0],
42
50
  setActualValue = _useState4[1];
43
51
  var deferred = react.useDeferredValue(value);
44
- var handleEnterPressed = react.useMemo(function () {
45
- return eventHandlers.handleEnter(onEnterPressed);
46
- }, [onEnterPressed]);
52
+ var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
47
53
  react.useEffect(function () {
48
54
  setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
49
55
  }, [deferred]);
50
56
  var handleChange = react.useCallback(function (e) {
51
57
  var value = e === null || e === void 0 ? void 0 : e.target.value;
52
58
  setActualValue(value !== null && value !== void 0 ? value : "");
53
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
59
+ onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
54
60
  }, [onChange]);
55
61
  return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
56
- showClear: !!actualValue,
62
+ showClear: !!actualValue && !disabled && !readOnly,
57
63
  onClear: handleChange,
58
64
  invalid: invalid,
59
65
  readOnly: readOnly,
60
66
  disabled: disabled,
61
67
  required: required
62
68
  }, rest), {}, {
63
- decorateEnd: showToggle && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
69
+ actionButton: showToggle && actualValue && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
64
70
  color: "warning",
65
71
  content: t(show ? "password.hide" : "password.show"),
66
72
  children: /*#__PURE__*/jsxRuntime.jsx(core.Button, {
@@ -75,7 +81,7 @@ var Password = function Password(_ref) {
75
81
  })
76
82
  }),
77
83
  children: [/*#__PURE__*/jsxRuntime.jsx("input", {
78
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
84
+ className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
79
85
  "aria-invalid": invalid,
80
86
  "aria-disabled": disabled,
81
87
  "aria-readonly": readOnly,
@@ -90,6 +96,8 @@ var Password = function Password(_ref) {
90
96
  autoComplete: "off",
91
97
  autoFocus: autoFocus,
92
98
  value: actualValue,
99
+ onBlur: onBlur,
100
+ onFocus: onFocus,
93
101
  onChange: handleChange,
94
102
  onKeyDown: handleEnterPressed
95
103
  }), !!strength && /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -10,6 +10,15 @@ var jsxRuntime = require('react/jsx-runtime');
10
10
  var _excluded = ["ref", "name", "label", "value", "invalid", "disabled", "error", "width", "icon", "iconChecked", "onChange"];
11
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ /**
14
+ * Radio input component with custom icons and label.
15
+ *
16
+ * This component renders a radio button with an optional label and custom icons for checked and unchecked states.
17
+ * It supports disabled and invalid states, and allows for custom width.
18
+ *
19
+ * @param {RadioProps} props - The properties for the Radio component.
20
+ * @returns {JSX.Element} The rendered Radio input component.
21
+ */
13
22
  var Radio = function Radio(_ref) {
14
23
  var ref = _ref.ref,
15
24
  name = _ref.name,
@@ -51,7 +60,7 @@ var Radio = function Radio(_ref) {
51
60
  autoComplete: "off",
52
61
  onChange: handleChange
53
62
  }, rest)), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
54
- className: classNames("p-0.5 hidden peer-checked:inline-block", icon && !iconChecked && "bg-primary-500 text-white"),
63
+ className: classNames("p-0.5 hidden peer-checked:inline-block", icon && !iconChecked && "bg-primary-500 text-white!"),
55
64
  color: invalid ? "danger" : "primary",
56
65
  size: "1.25em",
57
66
  icon: iconOn
@@ -61,7 +70,7 @@ var Radio = function Radio(_ref) {
61
70
  size: "1.25em",
62
71
  icon: iconOff
63
72
  }), label && /*#__PURE__*/jsxRuntime.jsx("span", {
64
- className: "flex-initial leading-none truncate",
73
+ className: "flex-initial leading-tight truncate",
65
74
  children: label
66
75
  })]
67
76
  });
@@ -2,26 +2,37 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
+ var core = require('@react-fabric/core');
5
6
  var react = require('react');
6
7
  var FieldWrapper = require('../internal/FieldWrapper.js');
7
8
  var jsxRuntime = require('react/jsx-runtime');
8
9
 
9
- var _excluded = ["children", "name", "className", "onChange"];
10
+ var _excluded = ["children", "name", "className", "optionWidth", "onChange"];
10
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ /**
14
+ * RadioGroup component for rendering a group of radio buttons.
15
+ * It allows for customization of the label, options, and layout.
16
+ * The component supports inline and vertical orientations, and can handle change events.
17
+ *
18
+ * @param {RadioGroupProps} props - The properties for the RadioGroup component.
19
+ * @returns {JSX.Element} The rendered RadioGroup component.
20
+ */
12
21
  var RadioGroup = function RadioGroup(_ref) {
13
22
  var children = _ref.children,
14
23
  name = _ref.name,
15
24
  className = _ref.className,
25
+ optionWidth = _ref.optionWidth,
16
26
  onChange = _ref.onChange,
17
27
  rest = _objectWithoutProperties(_ref, _excluded);
18
28
  return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
19
29
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
20
30
  className: className,
21
- children: react.Children.map(children, function (child) {
31
+ children: core.cloneChildren(children, function (child) {
22
32
  return /*#__PURE__*/react.cloneElement(child, {
23
33
  name: name,
24
- onChange: onChange
34
+ onChange: onChange,
35
+ width: optionWidth
25
36
  });
26
37
  })
27
38
  })
@@ -14,9 +14,17 @@ var _excluded = ["error", "name", "value", "step", "min", "max", "height", "colo
14
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
15
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
16
  /**
17
- * Number Range input
17
+ * RangeSlider component for rendering a range slider input.
18
+ * It supports vertical orientation, custom colors, step increments,
19
+ * min/max values, and display of labels and value tooltips.
20
+ * The component uses the Ranger library for handling the slider functionality.
21
+ * It also provides error handling and supports disabled and read-only states.
22
+ * The component is designed to be flexible and customizable, allowing for various configurations.
23
+ *
24
+ * @param {RangeProps} props - The properties for the RangeSlider component.
25
+ * @returns {JSX.Element} The rendered RangeSlider component.
18
26
  */
19
- var Range = function Range(_ref) {
27
+ var RangeSlider = function RangeSlider(_ref) {
20
28
  var error = _ref.error;
21
29
  _ref.name;
22
30
  var value = _ref.value,
@@ -71,7 +79,7 @@ var Range = function Range(_ref) {
71
79
  }, [showValue]);
72
80
  var handleChange = react.useCallback(function (val) {
73
81
  setActualValue(val !== null && val !== void 0 ? val : [min, max]);
74
- onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : undefined);
82
+ onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
75
83
  }, [onChange, min, max]);
76
84
  var minDisplay = react.useMemo(function () {
77
85
  return /*#__PURE__*/jsxRuntime.jsx("span", {
@@ -114,14 +122,14 @@ var Range = function Range(_ref) {
114
122
  isReadOnly: readOnly,
115
123
  canClear: !!actualValue,
116
124
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
117
- className: classNames("flex-auto order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
125
+ className: classNames("flex-1 order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
118
126
  "data-vertical": !!vertical,
119
127
  style: invalid ? undefined : {
120
128
  color: color
121
129
  },
122
130
  children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
123
131
  ref: rangerInstance.trackElRef,
124
- className: classNames("flex-auto relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
132
+ className: classNames("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
125
133
  style: {
126
134
  height: vertical ? height : undefined
127
135
  },
@@ -166,4 +174,4 @@ var Range = function Range(_ref) {
166
174
  }));
167
175
  };
168
176
 
169
- exports.Range = Range;
177
+ exports.RangeSlider = RangeSlider;
@@ -10,9 +10,18 @@ var eventHandlers = require('../utils/eventHandlers.js');
10
10
  require('@react-fabric/utilities');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
 
13
- var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "autoFocus", "allowClear", "searchOnChange", "decorateEnd", "decorateStart", "onSearch", "onChange", "onEnterPressed"];
13
+ var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "autoFocus", "hideHandle", "allowClear", "searchOnChange", "onBlur", "onFocus", "onSearch", "onChange", "onEnterPressed"];
14
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
15
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ /**
17
+ * Search input component with optional searching state and search handler.
18
+ * This component allows users to input search queries and trigger a search action.
19
+ * It supports features like searching on value change, showing a search handle,
20
+ * and handling search actions with a debounce mechanism.
21
+ *
22
+ * @param {SearchProps} props - The properties for the Search component.
23
+ * @returns {JSX.Element} The rendered Search input component.
24
+ */
16
25
  var Search = function Search(_ref) {
17
26
  var ref = _ref.ref,
18
27
  value = _ref.value,
@@ -24,12 +33,13 @@ var Search = function Search(_ref) {
24
33
  searching = _ref.searching,
25
34
  placeholder = _ref.placeholder,
26
35
  autoFocus = _ref.autoFocus,
36
+ hideHandle = _ref.hideHandle,
27
37
  _ref$allowClear = _ref.allowClear,
28
38
  allowClear = _ref$allowClear === void 0 ? true : _ref$allowClear,
29
39
  _ref$searchOnChange = _ref.searchOnChange,
30
- searchOnChange = _ref$searchOnChange === void 0 ? true : _ref$searchOnChange,
31
- decorateEnd = _ref.decorateEnd,
32
- decorateStart = _ref.decorateStart,
40
+ searchOnChange = _ref$searchOnChange === void 0 ? false : _ref$searchOnChange,
41
+ onBlur = _ref.onBlur,
42
+ onFocus = _ref.onFocus,
33
43
  onSearch = _ref.onSearch,
34
44
  onChange = _ref.onChange;
35
45
  _ref.onEnterPressed;
@@ -43,9 +53,7 @@ var Search = function Search(_ref) {
43
53
  var handleSearch = core.useDebounce(function () {
44
54
  return onSearch === null || onSearch === void 0 ? void 0 : onSearch(refValue.current);
45
55
  }, [onSearch], 250);
46
- var handleEnterPressed = react.useMemo(function () {
47
- return eventHandlers.handleEnter(handleSearch);
48
- }, [handleSearch]);
56
+ var handleEnterPressed = eventHandlers.useHandleEnter(handleSearch);
49
57
  react.useEffect(function () {
50
58
  setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
51
59
  }, [deferred]);
@@ -53,28 +61,27 @@ var Search = function Search(_ref) {
53
61
  var value = e === null || e === void 0 ? void 0 : e.target.value;
54
62
  refValue.current = value !== null && value !== void 0 ? value : "";
55
63
  setActualValue(value !== null && value !== void 0 ? value : "");
56
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
64
+ onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
57
65
 
58
- // value was cleared so force fire onSearch
59
- if (searchOnChange) {
66
+ // when e is undefined value was cleared so force fire onSearch
67
+ if (!e || searchOnChange) {
60
68
  handleSearch();
61
69
  }
62
70
  }, [onChange, searchOnChange, handleSearch]);
63
71
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
64
- showClear: !!actualValue,
72
+ showClear: !!actualValue && !disabled && !readOnly,
65
73
  onClear: handleChange,
66
74
  allowClear: allowClear,
67
75
  invalid: invalid,
68
76
  readOnly: readOnly,
69
77
  disabled: disabled,
70
78
  required: required,
71
- decorateStart: decorateStart,
72
- decorateEnd: /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
73
- children: [decorateEnd, searching && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
79
+ actionButton: /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
80
+ children: [searching && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
74
81
  className: "p-2",
75
82
  icon: core.CoreIcons.spinner,
76
83
  animate: "spin"
77
- }), !searching && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
84
+ }), !searching && !hideHandle && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
78
85
  tabIndex: -1,
79
86
  variant: "link",
80
87
  "aria-label": "search",
@@ -85,7 +92,7 @@ var Search = function Search(_ref) {
85
92
  })
86
93
  }, rest), {}, {
87
94
  children: /*#__PURE__*/jsxRuntime.jsx("input", {
88
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
95
+ className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
89
96
  "aria-invalid": invalid,
90
97
  "aria-disabled": disabled,
91
98
  "aria-readonly": readOnly,
@@ -100,6 +107,8 @@ var Search = function Search(_ref) {
100
107
  autoComplete: "off",
101
108
  autoFocus: autoFocus,
102
109
  value: actualValue,
110
+ onBlur: onBlur,
111
+ onFocus: onFocus,
103
112
  onChange: handleChange,
104
113
  onKeyDown: handleEnterPressed
105
114
  })
@@ -14,7 +14,13 @@ var _excluded = ["error", "name", "value", "step", "min", "max", "height", "colo
14
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
15
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
16
  /**
17
- * Number slider input
17
+ * Slider component for rendering a slider input with labels and value display.
18
+ * It supports vertical orientation, custom min/max labels, and step ranges.
19
+ * The component handles value changes, displays tooltips, and integrates with ranger for slider functionality.
20
+ * It also supports deferred value updates for smoother interactions.
21
+ *
22
+ * @param {SliderProps} props - The properties for the Slider component.
23
+ * @returns {JSX.Element} The rendered Slider component.
18
24
  */
19
25
  var Slider = function Slider(_ref) {
20
26
  var error = _ref.error;
@@ -73,7 +79,7 @@ var Slider = function Slider(_ref) {
73
79
  var handleChange = react.useCallback(function (value) {
74
80
  var val = useInfinity && value === max ? Infinity : value;
75
81
  setActualValue(val !== null && val !== void 0 ? val : 0);
76
- onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : undefined);
82
+ onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
77
83
  }, [onChange, max, useInfinity]);
78
84
  var minDisplay = react.useMemo(function () {
79
85
  return /*#__PURE__*/jsxRuntime.jsx("span", {
@@ -116,14 +122,14 @@ var Slider = function Slider(_ref) {
116
122
  isReadOnly: readOnly,
117
123
  canClear: !!actualValue,
118
124
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
119
- className: classNames("flex-auto order-3 flex items-center select-none relative z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
125
+ className: classNames("flex-1 order-3 flex items-center select-none relative z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
120
126
  "data-vertical": !!vertical,
121
127
  style: invalid ? undefined : {
122
128
  color: color
123
129
  },
124
130
  children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
125
131
  ref: rangerInstance.trackElRef,
126
- className: classNames("flex-auto relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
132
+ className: classNames("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
127
133
  style: {
128
134
  height: vertical ? height : undefined
129
135
  },
@@ -6,13 +6,23 @@ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProp
6
6
  var classNames = require('classnames');
7
7
  var react = require('react');
8
8
  var ErrorIcon = require('../internal/ErrorIcon.js');
9
- require('@react-fabric/utilities');
9
+ require('@floating-ui/react');
10
+ require('@react-fabric/core');
10
11
  var getColor = require('../utils/getColor.js');
11
12
  var jsxRuntime = require('react/jsx-runtime');
12
13
 
13
- var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "defaultColor", "onChange"];
14
+ var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "onLabel", "offLabel", "onLabelColor", "offLabelColor", "defaultColor", "required", "onChange"];
14
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
16
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ /**
18
+ * Switch input component with custom labels and colors.
19
+ * This component renders a switch input with optional labels for the "on" and "off" states,
20
+ * and allows for custom colors for the switch background and labels.
21
+ * It supports disabled and invalid states, and handles change events.
22
+ *
23
+ * @param {SwitchProps} props - The properties for the Switch component.
24
+ * @returns {JSX.Element} The rendered Switch input component.
25
+ */
16
26
  var Switch = function Switch(_ref) {
17
27
  var ref = _ref.ref,
18
28
  label = _ref.label,
@@ -23,8 +33,13 @@ var Switch = function Switch(_ref) {
23
33
  width = _ref.width,
24
34
  color = _ref.color;
25
35
  _ref.name;
26
- var defaultColor = _ref.defaultColor,
27
- onChange = _ref.onChange,
36
+ var onLabel = _ref.onLabel,
37
+ offLabel = _ref.offLabel,
38
+ onLabelColor = _ref.onLabelColor,
39
+ offLabelColor = _ref.offLabelColor,
40
+ defaultColor = _ref.defaultColor;
41
+ _ref.required;
42
+ var onChange = _ref.onChange,
28
43
  rest = _objectWithoutProperties(_ref, _excluded);
29
44
  var _useState = react.useState(false),
30
45
  _useState2 = _slicedToArray(_useState, 2),
@@ -45,7 +60,7 @@ var Switch = function Switch(_ref) {
45
60
  width: width
46
61
  },
47
62
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
48
- className: classNames(actualValue && getColor.getBgClass(color ? "".concat(color, "-500") : "primary-500"), !actualValue && (defaultColor ? getColor.getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative flex h-6 w-10 cursor-pointer rounded-full p-1 transition-colors duration-200 ease-in-out"),
63
+ className: classNames(actualValue && getColor.getBgClass(color ? "".concat(color, "-500") : "primary-500"), !actualValue && (defaultColor ? getColor.getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative grid grid-cols-2 items-center h-6 min-w-10 cursor-pointer rounded-full p-1 transition-colors duration-200 ease-in-out"),
49
64
  style: {
50
65
  backgroundColor: actualValue ? getColor.getColor(color) : getColor.getColor(defaultColor)
51
66
  },
@@ -64,13 +79,30 @@ var Switch = function Switch(_ref) {
64
79
  onChange: handleChange
65
80
  }, rest)), /*#__PURE__*/jsxRuntime.jsx("span", {
66
81
  "aria-hidden": "true",
67
- className: classNames(!disabled && "shadow-sm", actualValue ? "translate-x-4" : "translate-x-0", "pointer-events-none inline-block size-4 rounded-full bg-white ring-0 transition duration-200 ease-in-out")
82
+ className: classNames(!disabled && "shadow-sm", actualValue ? "translate-x-[100%]" : "translate-x-0", "pointer-events-none inline-block h-4 start-1 absolute rounded-full bg-white ring-0 transition duration-200 ease-in-out"),
83
+ style: {
84
+ width: "calc(50% - 0.25rem)"
85
+ }
86
+ }), (!!onLabel || !!offLabel) && /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
87
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
88
+ className: "whitespace-nowrap text-xs px-1 ".concat(getColor.getColorClass(onLabelColor !== null && onLabelColor !== void 0 ? onLabelColor : "white")),
89
+ style: {
90
+ color: getColor.getColor(onLabelColor)
91
+ },
92
+ children: onLabel !== null && onLabel !== void 0 ? onLabel : " "
93
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
94
+ className: "whitespace-nowrap text-xs px-1 ".concat(getColor.getColorClass(offLabelColor !== null && offLabelColor !== void 0 ? offLabelColor : "base")),
95
+ style: {
96
+ color: getColor.getColor(offLabelColor)
97
+ },
98
+ children: offLabel !== null && offLabel !== void 0 ? offLabel : " "
99
+ })]
68
100
  })]
69
101
  }), /*#__PURE__*/jsxRuntime.jsx(ErrorIcon.ErrorIcon, {
70
102
  invalid: invalid,
71
103
  error: error
72
104
  }), label && /*#__PURE__*/jsxRuntime.jsx("span", {
73
- className: "flex-initial leading-5 truncate",
105
+ className: "flex-initial leading-tight truncate",
74
106
  children: label
75
107
  })]
76
108
  });