@algolia/satellite 1.0.0 → 1.1.0

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 (134) hide show
  1. package/dist/cjs/AutoComplete/AutoComplete.d.ts +1 -1
  2. package/dist/cjs/AutoComplete/AutoComplete.js +49 -26
  3. package/dist/cjs/AutoComplete/AutoComplete.tailwind.js +9 -1
  4. package/dist/cjs/AutoComplete/types.d.ts +1 -0
  5. package/dist/cjs/Checkbox/Checkbox.d.ts +1 -1
  6. package/dist/cjs/Checkbox/Checkbox.js +21 -13
  7. package/dist/cjs/Checkbox/Checkbox.tailwind.js +8 -2
  8. package/dist/cjs/DatePicker/DatePicker/DatePicker.d.ts +4 -2
  9. package/dist/cjs/DatePicker/DatePicker/DatePicker.js +18 -7
  10. package/dist/cjs/DatePicker/components/Display.d.ts +3 -3
  11. package/dist/cjs/DatePicker/components/Display.js +16 -5
  12. package/dist/cjs/Dropzone/Dropzone.d.ts +4 -2
  13. package/dist/cjs/Dropzone/Dropzone.js +23 -12
  14. package/dist/cjs/Field/Field.d.ts +1 -0
  15. package/dist/cjs/Field/Field.js +63 -11
  16. package/dist/cjs/Field/FieldContext.d.ts +3 -0
  17. package/dist/cjs/Field/useField.d.ts +4 -1
  18. package/dist/cjs/Field/useField.js +17 -1
  19. package/dist/cjs/Form/Form.d.ts +16 -0
  20. package/dist/cjs/Form/Form.js +140 -0
  21. package/dist/cjs/Form/FormContext.d.ts +13 -0
  22. package/dist/cjs/Form/FormContext.js +8 -0
  23. package/dist/cjs/Form/index.d.ts +3 -0
  24. package/dist/cjs/Form/index.js +27 -0
  25. package/dist/cjs/Form/stories/AsynchronousValidation.js +396 -0
  26. package/dist/cjs/Form/stories/Complex.js +928 -0
  27. package/dist/cjs/Form/stories/DependentFieldsValidation.js +249 -0
  28. package/dist/cjs/Form/stories/DirtyFields.js +339 -0
  29. package/dist/cjs/Form/stories/DynamicFieldsValidation.js +425 -0
  30. package/dist/cjs/Form/stories/FieldArrays.js +549 -0
  31. package/dist/cjs/Form/stories/ValidationStrategies.js +455 -0
  32. package/dist/cjs/Form/stories/utils/useFormikAutoFocusOnError.js +22 -0
  33. package/dist/cjs/Form/useForm.d.ts +1 -0
  34. package/dist/cjs/Form/useForm.js +11 -0
  35. package/dist/cjs/Input/Input.js +22 -9
  36. package/dist/cjs/Input/Input.tailwind.js +7 -2
  37. package/dist/cjs/Pagination/DotPagination/DotPagination.d.ts +1 -1
  38. package/dist/cjs/RadioGroup/RadioButton.d.ts +1 -1
  39. package/dist/cjs/RadioGroup/RadioButton.js +16 -3
  40. package/dist/cjs/RadioGroup/RadioButton.tailwind.js +23 -0
  41. package/dist/cjs/RadioGroup/RadioGroup.d.ts +7 -5
  42. package/dist/cjs/RadioGroup/RadioGroup.js +78 -16
  43. package/dist/cjs/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
  44. package/dist/cjs/RangeSlider/RangeSlider.d.ts +2 -3
  45. package/dist/cjs/RangeSlider/RangeSlider.js +27 -10
  46. package/dist/cjs/Satellite/locale.d.ts +2 -0
  47. package/dist/cjs/Select/Select.js +39 -6
  48. package/dist/cjs/Select/Select.tailwind.js +19 -0
  49. package/dist/cjs/Stepper/Step.js +2 -2
  50. package/dist/cjs/Switch/Switch.js +2 -2
  51. package/dist/cjs/Switch/SwitchOption.js +3 -3
  52. package/dist/cjs/Tables/DataTable/DataTable.d.ts +1 -1
  53. package/dist/cjs/Tag/Tag.d.ts +1 -1
  54. package/dist/cjs/TextArea/TextArea.d.ts +1 -0
  55. package/dist/cjs/TextArea/TextArea.js +47 -8
  56. package/dist/cjs/TextArea/TextArea.tailwind.js +41 -4
  57. package/dist/cjs/Toggle/Toggle.d.ts +1 -1
  58. package/dist/cjs/Toggle/Toggle.js +23 -6
  59. package/dist/cjs/Toggle/Toggle.tailwind.js +9 -0
  60. package/dist/cjs/Tooltip/Tooltip.d.ts +1 -1
  61. package/dist/cjs/index.d.ts +1 -0
  62. package/dist/cjs/index.js +12 -0
  63. package/dist/cjs/utils/isCssPropertySupported.d.ts +1 -1
  64. package/dist/cjs/utils/mergeRefs.d.ts +2 -0
  65. package/dist/cjs/utils/mergeRefs.js +17 -0
  66. package/dist/esm/AutoComplete/AutoComplete.d.ts +1 -1
  67. package/dist/esm/AutoComplete/AutoComplete.js +52 -27
  68. package/dist/esm/AutoComplete/AutoComplete.tailwind.js +9 -1
  69. package/dist/esm/AutoComplete/types.d.ts +1 -0
  70. package/dist/esm/Checkbox/Checkbox.d.ts +1 -1
  71. package/dist/esm/Checkbox/Checkbox.js +21 -13
  72. package/dist/esm/Checkbox/Checkbox.tailwind.js +8 -2
  73. package/dist/esm/DatePicker/DatePicker/DatePicker.d.ts +4 -2
  74. package/dist/esm/DatePicker/DatePicker/DatePicker.js +19 -8
  75. package/dist/esm/DatePicker/components/Display.d.ts +3 -3
  76. package/dist/esm/DatePicker/components/Display.js +15 -5
  77. package/dist/esm/Dropzone/Dropzone.d.ts +4 -2
  78. package/dist/esm/Dropzone/Dropzone.js +24 -13
  79. package/dist/esm/Field/Field.d.ts +1 -0
  80. package/dist/esm/Field/Field.js +64 -12
  81. package/dist/esm/Field/FieldContext.d.ts +3 -0
  82. package/dist/esm/Field/useField.d.ts +4 -1
  83. package/dist/esm/Field/useField.js +17 -2
  84. package/dist/esm/Form/Form.d.ts +16 -0
  85. package/dist/esm/Form/Form.js +135 -0
  86. package/dist/esm/Form/FormContext.d.ts +13 -0
  87. package/dist/esm/Form/FormContext.js +2 -0
  88. package/dist/esm/Form/index.d.ts +3 -0
  89. package/dist/esm/Form/index.js +3 -0
  90. package/dist/esm/Form/stories/AsynchronousValidation.js +387 -0
  91. package/dist/esm/Form/stories/Complex.js +919 -0
  92. package/dist/esm/Form/stories/DependentFieldsValidation.js +240 -0
  93. package/dist/esm/Form/stories/DirtyFields.js +330 -0
  94. package/dist/esm/Form/stories/DynamicFieldsValidation.js +416 -0
  95. package/dist/esm/Form/stories/FieldArrays.js +544 -0
  96. package/dist/esm/Form/stories/ValidationStrategies.js +446 -0
  97. package/dist/esm/Form/stories/utils/useFormikAutoFocusOnError.js +16 -0
  98. package/dist/esm/Form/useForm.d.ts +1 -0
  99. package/dist/esm/Form/useForm.js +5 -0
  100. package/dist/esm/Input/Input.js +22 -9
  101. package/dist/esm/Input/Input.tailwind.js +7 -2
  102. package/dist/esm/Pagination/DotPagination/DotPagination.d.ts +1 -1
  103. package/dist/esm/RadioGroup/RadioButton.d.ts +1 -1
  104. package/dist/esm/RadioGroup/RadioButton.js +16 -3
  105. package/dist/esm/RadioGroup/RadioButton.tailwind.js +23 -0
  106. package/dist/esm/RadioGroup/RadioGroup.d.ts +7 -5
  107. package/dist/esm/RadioGroup/RadioGroup.js +77 -15
  108. package/dist/esm/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
  109. package/dist/esm/RangeSlider/RangeSlider.d.ts +2 -3
  110. package/dist/esm/RangeSlider/RangeSlider.js +27 -10
  111. package/dist/esm/Satellite/locale.d.ts +2 -0
  112. package/dist/esm/Select/Select.js +41 -7
  113. package/dist/esm/Select/Select.tailwind.js +19 -0
  114. package/dist/esm/Stepper/Step.js +2 -2
  115. package/dist/esm/Switch/Switch.js +1 -1
  116. package/dist/esm/Switch/SwitchOption.js +2 -2
  117. package/dist/esm/Tables/DataTable/DataTable.d.ts +1 -1
  118. package/dist/esm/Tag/Tag.d.ts +1 -1
  119. package/dist/esm/TextArea/TextArea.d.ts +1 -0
  120. package/dist/esm/TextArea/TextArea.js +49 -9
  121. package/dist/esm/TextArea/TextArea.tailwind.js +41 -4
  122. package/dist/esm/Toggle/Toggle.d.ts +1 -1
  123. package/dist/esm/Toggle/Toggle.js +23 -6
  124. package/dist/esm/Toggle/Toggle.tailwind.js +9 -0
  125. package/dist/esm/Tooltip/Tooltip.d.ts +1 -1
  126. package/dist/esm/index.d.ts +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/utils/isCssPropertySupported.d.ts +1 -1
  129. package/dist/esm/utils/mergeRefs.d.ts +2 -0
  130. package/dist/esm/utils/mergeRefs.js +11 -0
  131. package/dist/satellite.min.css +1 -1
  132. package/package.json +13 -7
  133. /package/dist/cjs/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
  134. /package/dist/esm/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
@@ -0,0 +1,928 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.RHFComplexComponent = exports.FormikComplexComponent = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _zod = require("@hookform/resolvers/zod");
13
+ var _formik = require("formik");
14
+ var _capitalize = _interopRequireDefault(require("lodash/capitalize"));
15
+ var _react = require("react");
16
+ var _reactHookForm = require("react-hook-form");
17
+ var yup = _interopRequireWildcard(require("yup"));
18
+ var _zod2 = require("zod");
19
+ var _AutoComplete = require("../../AutoComplete");
20
+ var _Checkbox = require("../../Checkbox");
21
+ var _DatePicker = require("../../DatePicker");
22
+ var _Dropzone = require("../../Dropzone");
23
+ var _Field = require("../../Field");
24
+ var _Input = require("../../Input");
25
+ var _RadioGroup = require("../../RadioGroup");
26
+ var _RangeSlider = require("../../RangeSlider");
27
+ var _Select = require("../../Select");
28
+ var _satellitePrefixer = _interopRequireDefault(require("../../styles/helpers/satellitePrefixer"));
29
+ var _TextArea = require("../../TextArea");
30
+ var _Toggle = require("../../Toggle");
31
+ var _Form = require("../Form");
32
+ var _useFormikAutoFocusOnError = require("./utils/useFormikAutoFocusOnError");
33
+ var _jsxRuntime = require("react/jsx-runtime");
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44, _templateObject45, _templateObject46, _templateObject47, _templateObject48;
35
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
36
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
37
+ 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; }
38
+ 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) { (0, _defineProperty2["default"])(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; }
39
+ var initialFormData = {
40
+ firstName: "",
41
+ lastName: "",
42
+ password: "",
43
+ civility: "",
44
+ gender: "",
45
+ jobPositions: [],
46
+ employmentStatus: "",
47
+ birthday: null,
48
+ age: "",
49
+ interest: 0,
50
+ idealLocation: [0, 50],
51
+ profilePicture: null,
52
+ bio: "",
53
+ acceptTerms: false,
54
+ newsletter: false
55
+ };
56
+ var civilities = ["Mr", "Mrs", "Ms"];
57
+ var jobPositions = ["Frontend Developer", "Backend Developer", "Fullstack Developer"].map(function (jobPosition) {
58
+ return {
59
+ label: jobPosition,
60
+ value: jobPosition
61
+ };
62
+ });
63
+ var now = new Date();
64
+ var genders = ["please select", "woman", "man", "transgender man", "transgender woman", "non-binary", "agender", "prefer not to state"];
65
+ var employmentStatuses = ["employed", "unemployed", "student"];
66
+ var zodSchema = _zod2.z.object({
67
+ firstName: _zod2.z.string().min(1, {
68
+ message: "You must specify a first name"
69
+ }).min(3, {
70
+ message: "First name must be at least 3 characters long"
71
+ }).refine(function (val) {
72
+ return val.toLowerCase() !== "john";
73
+ }, {
74
+ message: "John is not allowed"
75
+ }),
76
+ lastName: _zod2.z.string().min(1, {
77
+ message: "You must specify a last name"
78
+ }).min(3, {
79
+ message: "Last name must be at least 3 characters long"
80
+ }),
81
+ password: _zod2.z.string().min(1, {
82
+ message: "You must specify a password"
83
+ }).min(5, "Password must be at least 5 characters long"),
84
+ civility: _zod2.z["enum"](civilities, {
85
+ errorMap: function errorMap() {
86
+ return {
87
+ message: "You must specify a civility"
88
+ };
89
+ }
90
+ }),
91
+ gender: _zod2.z["enum"](genders, {
92
+ errorMap: function errorMap() {
93
+ return {
94
+ message: "You must specify a gender"
95
+ };
96
+ }
97
+ }).refine(function (val) {
98
+ return val !== "please select";
99
+ }, {
100
+ message: "You must specify a gender"
101
+ }),
102
+ jobPositions: _zod2.z.array(_zod2.z.object({
103
+ label: _zod2.z.string(),
104
+ value: _zod2.z.string()
105
+ })).min(1, {
106
+ message: "You must specify at least one job position"
107
+ }),
108
+ birthday: _zod2.z.date({
109
+ errorMap: function errorMap() {
110
+ return {
111
+ message: "You must specify a birthday"
112
+ };
113
+ }
114
+ }),
115
+ age: _zod2.z.coerce.number().min(1, {
116
+ message: "You must specify an age"
117
+ }).gte(18, {
118
+ message: "You must be at least 18 years old"
119
+ }).lte(100, {
120
+ message: "You must be at most 100 years old"
121
+ }),
122
+ interest: _zod2.z.number().min(5, {
123
+ message: "Your level of interest must be at least 5"
124
+ }),
125
+ idealLocation: _zod2.z.array(_zod2.z.number().gte(10, {
126
+ message: "Your minimum ideal location must be 10 km"
127
+ }).lte(40, {
128
+ message: "Your maximum ideal location must be 40 km"
129
+ })),
130
+ employmentStatus: _zod2.z["enum"](employmentStatuses, {
131
+ errorMap: function errorMap() {
132
+ return {
133
+ message: "You must specify an employment status"
134
+ };
135
+ }
136
+ }),
137
+ profilePicture: _zod2.z.object({
138
+ file: _zod2.z["instanceof"](File).optional(),
139
+ path: _zod2.z.string().optional(),
140
+ errors: _zod2.z.array(_zod2.z.object({
141
+ code: _zod2.z.string(),
142
+ message: _zod2.z.string()
143
+ })).optional()
144
+ }).nullable().refine(function (val) {
145
+ return val !== null && !val.errors;
146
+ }, function (val) {
147
+ var _val$errors;
148
+ return {
149
+ message: val === null ? "You must upload a profile picture" : (_val$errors = val.errors) === null || _val$errors === void 0 ? void 0 : _val$errors.map(function (error) {
150
+ return error.message;
151
+ }).join(", ")
152
+ };
153
+ }),
154
+ bio: _zod2.z.string().min(1, {
155
+ message: "You must specify a bio"
156
+ }).min(10, {
157
+ message: "Your bio must be at least 10 characters long"
158
+ }),
159
+ acceptTerms: _zod2.z["boolean"]().refine(function (val) {
160
+ return val;
161
+ }, {
162
+ message: "You must accept the terms"
163
+ }),
164
+ newsletter: _zod2.z["boolean"]().refine(function (val) {
165
+ return val;
166
+ }, {
167
+ message: "You must accept to receive the newsletter"
168
+ })
169
+ });
170
+ var RHFComplexComponent = exports.RHFComplexComponent = function RHFComplexComponent() {
171
+ var _useForm = (0, _reactHookForm.useForm)({
172
+ resolver: (0, _zod.zodResolver)(zodSchema),
173
+ defaultValues: initialFormData,
174
+ reValidateMode: "onChange"
175
+ }),
176
+ control = _useForm.control,
177
+ handleSubmit = _useForm.handleSubmit,
178
+ getFieldStateFromReactHookForm = _useForm.getFieldState,
179
+ formState = _useForm.formState,
180
+ reset = _useForm.reset,
181
+ getValues = _useForm.getValues;
182
+ var _useState = (0, _react.useState)(initialFormData),
183
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
184
+ formData = _useState2[0],
185
+ setFormData = _useState2[1];
186
+ var getFieldState = function getFieldState(fieldName) {
187
+ var fieldState = getFieldStateFromReactHookForm(fieldName, formState);
188
+ var fieldErrors = fieldState.error ? Array.isArray(fieldState.error) ? fieldState.error : [fieldState.error] : [];
189
+ if (fieldErrors.length > 0) {
190
+ return {
191
+ status: "invalid",
192
+ errors: fieldErrors.map(function (error) {
193
+ return error.message;
194
+ })
195
+ };
196
+ } else if (!fieldState.invalid && formState.isSubmitted) {
197
+ return {
198
+ status: "validated"
199
+ };
200
+ } else {
201
+ return {
202
+ status: "default"
203
+ };
204
+ }
205
+ };
206
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
207
+ className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-8 w-3/5"]))),
208
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Form.ExperimentalForm, {
209
+ onSubmit: handleSubmit(function (data) {
210
+ return setFormData(data);
211
+ }),
212
+ onReset: function onReset() {
213
+ return setFormData(initialFormData);
214
+ },
215
+ className: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col items-start gap-4 min-w-72"]))),
216
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormErrorMessage, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
217
+ name: "firstName",
218
+ control: control,
219
+ render: function render(_ref) {
220
+ var field = _ref.field;
221
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
222
+ label: "First Name",
223
+ labelFor: "firstName",
224
+ description: "Please enter your first name",
225
+ state: getFieldState("firstName"),
226
+ className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
227
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
228
+ id: "firstName",
229
+ placeholder: "John",
230
+ required: true
231
+ }, field))
232
+ });
233
+ }
234
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
235
+ name: "lastName",
236
+ control: control,
237
+ render: function render(_ref2) {
238
+ var field = _ref2.field;
239
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
240
+ label: "Last Name",
241
+ labelFor: "lastName",
242
+ description: "Please enter your last name",
243
+ state: getFieldState("lastName"),
244
+ className: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
245
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
246
+ id: "lastName",
247
+ placeholder: "Doe",
248
+ required: true
249
+ }, field))
250
+ });
251
+ }
252
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
253
+ name: "password",
254
+ control: control,
255
+ render: function render(_ref3) {
256
+ var field = _ref3.field;
257
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
258
+ label: "Password",
259
+ labelFor: "password",
260
+ description: "Please enter your password",
261
+ state: getFieldState("password"),
262
+ className: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
263
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
264
+ id: "password",
265
+ placeholder: "Password",
266
+ type: "password",
267
+ required: true
268
+ }, field))
269
+ });
270
+ }
271
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
272
+ name: "civility",
273
+ control: control,
274
+ render: function render(_ref4) {
275
+ var field = _ref4.field;
276
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
277
+ label: "Civility",
278
+ labelFor: civilities[0],
279
+ description: "Please enter your civility",
280
+ state: getFieldState("civility"),
281
+ className: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
282
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
283
+ className: (0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["flex gap-4 display-body"]))),
284
+ children: civilities.map(function (civility) {
285
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
286
+ htmlFor: civility,
287
+ className: (0, _satellitePrefixer["default"])(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["flex items-center gap-1"]))),
288
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioButton, _objectSpread(_objectSpread({
289
+ id: civility,
290
+ "aria-labelledby": civility,
291
+ required: true,
292
+ checked: civility === field.value
293
+ }, field), {}, {
294
+ value: civility
295
+ })), (0, _capitalize["default"])(civility)]
296
+ }, civility);
297
+ })
298
+ })
299
+ });
300
+ }
301
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
302
+ name: "gender",
303
+ control: control,
304
+ render: function render(_ref5) {
305
+ var field = _ref5.field;
306
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
307
+ label: "Gender",
308
+ labelFor: "gender",
309
+ description: "Please specify your gender",
310
+ state: getFieldState("gender"),
311
+ className: (0, _satellitePrefixer["default"])(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
312
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.Select, _objectSpread(_objectSpread({
313
+ id: "gender",
314
+ required: true
315
+ }, field), {}, {
316
+ children: genders.map(function (gender) {
317
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("option", {
318
+ value: gender,
319
+ children: (0, _capitalize["default"])(gender)
320
+ }, gender);
321
+ })
322
+ }))
323
+ });
324
+ }
325
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
326
+ name: "jobPositions",
327
+ control: control,
328
+ render: function render(_ref6) {
329
+ var field = _ref6.field;
330
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
331
+ label: "Job Positions",
332
+ labelFor: "jobPositions",
333
+ description: "Please specify the job positions you are interested in",
334
+ state: getFieldState("jobPositions"),
335
+ className: (0, _satellitePrefixer["default"])(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
336
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AutoComplete.AutoComplete, _objectSpread({
337
+ id: "jobPositions",
338
+ options: jobPositions,
339
+ placeholder: jobPositions[0].label,
340
+ multiple: true,
341
+ required: true,
342
+ clearable: true
343
+ }, field))
344
+ });
345
+ }
346
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
347
+ name: "employmentStatus",
348
+ control: control,
349
+ render: function render(_ref7) {
350
+ var field = _ref7.field;
351
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
352
+ label: "Employment Status",
353
+ labelFor: "employmentStatus",
354
+ description: "Please specify your employment status",
355
+ state: getFieldState("employmentStatus"),
356
+ className: (0, _satellitePrefixer["default"])(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
357
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioGroup, _objectSpread(_objectSpread({
358
+ id: "employmentStatus",
359
+ required: true
360
+ }, field), {}, {
361
+ children: employmentStatuses.map(function (employmentStatus) {
362
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioGroup.Item, {
363
+ value: employmentStatus,
364
+ children: (0, _capitalize["default"])(employmentStatus)
365
+ }, employmentStatus);
366
+ })
367
+ }))
368
+ });
369
+ }
370
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
371
+ name: "birthday",
372
+ control: control,
373
+ render: function render(_ref8) {
374
+ var field = _ref8.field;
375
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
376
+ label: "Birthday",
377
+ labelFor: "birthday",
378
+ description: "Please specify your birthday",
379
+ state: getFieldState("birthday"),
380
+ className: (0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
381
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DatePicker.DatePicker, _objectSpread({
382
+ id: "birthday",
383
+ calendarProps: {
384
+ disabled: {
385
+ after: now
386
+ }
387
+ },
388
+ required: true
389
+ }, field))
390
+ });
391
+ }
392
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
393
+ name: "age",
394
+ control: control,
395
+ render: function render(_ref9) {
396
+ var field = _ref9.field;
397
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
398
+ label: "Age",
399
+ labelFor: "age",
400
+ description: "Please specify your age",
401
+ state: getFieldState("age"),
402
+ className: (0, _satellitePrefixer["default"])(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
403
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
404
+ id: "age",
405
+ type: "number",
406
+ placeholder: "18",
407
+ step: 1,
408
+ required: true
409
+ }, field))
410
+ });
411
+ }
412
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
413
+ name: "interest",
414
+ control: control,
415
+ render: function render(_ref10) {
416
+ var field = _ref10.field;
417
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
418
+ label: "Interest",
419
+ labelFor: "interest",
420
+ description: "Please specify your interest",
421
+ state: getFieldState("interest"),
422
+ className: (0, _satellitePrefixer["default"])(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
423
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
424
+ className: (0, _satellitePrefixer["default"])(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["display-caption flex justify-between mb-2"]))),
425
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
426
+ children: "0"
427
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
428
+ children: "5"
429
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
430
+ children: "10"
431
+ })]
432
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangeSlider.RangeSlider, _objectSpread({
433
+ id: "interest",
434
+ min: 0,
435
+ max: 10,
436
+ required: true
437
+ }, field))]
438
+ });
439
+ }
440
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
441
+ name: "idealLocation",
442
+ control: control,
443
+ render: function render(_ref11) {
444
+ var field = _ref11.field;
445
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
446
+ label: "Ideal Location",
447
+ labelFor: "idealLocation",
448
+ description: "Please specify your ideal location",
449
+ state: getFieldState("idealLocation"),
450
+ className: (0, _satellitePrefixer["default"])(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
451
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
452
+ className: (0, _satellitePrefixer["default"])(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["display-caption flex justify-between mb-2"]))),
453
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
454
+ children: "0 km"
455
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
456
+ children: "10 km"
457
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
458
+ children: "20 km"
459
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
460
+ children: "30 km"
461
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
462
+ children: "40 km"
463
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
464
+ children: "50 km"
465
+ })]
466
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangeSlider.RangeSlider, _objectSpread({
467
+ id: "idealLocation",
468
+ min: 0,
469
+ max: 50,
470
+ step: 10,
471
+ required: true
472
+ }, field))]
473
+ });
474
+ }
475
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
476
+ name: "profilePicture",
477
+ control: control,
478
+ render: function render(_ref12) {
479
+ var field = _ref12.field;
480
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
481
+ label: "Profile Picture",
482
+ labelFor: "profilePicture",
483
+ description: "Please upload your profile picture, 1 MB minimum",
484
+ state: getFieldState("profilePicture"),
485
+ className: (0, _satellitePrefixer["default"])(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
486
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropzone.Dropzone, _objectSpread(_objectSpread({
487
+ id: "profilePicture",
488
+ minSize: 1024 * 1024 * 1,
489
+ accept: [".png", ".jpg"],
490
+ required: true
491
+ }, field), {}, {
492
+ onChange: function onChange(acceptedFiles, rejectedFiles) {
493
+ return field.onChange(rejectedFiles.length > 0 ? rejectedFiles[0] : acceptedFiles[0]);
494
+ }
495
+ }))
496
+ });
497
+ }
498
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
499
+ name: "bio",
500
+ control: control,
501
+ render: function render(_ref13) {
502
+ var field = _ref13.field;
503
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
504
+ label: "Bio",
505
+ labelFor: "bio",
506
+ description: "Please write a short bio",
507
+ state: getFieldState("bio"),
508
+ className: (0, _satellitePrefixer["default"])(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
509
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextArea.TextArea, _objectSpread({
510
+ id: "bio",
511
+ required: true
512
+ }, field))
513
+ });
514
+ }
515
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
516
+ name: "acceptTerms",
517
+ control: control,
518
+ render: function render(_ref14) {
519
+ var field = _ref14.field;
520
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
521
+ label: "Accept Terms",
522
+ labelFor: "acceptTerms",
523
+ description: "Please accept the terms",
524
+ state: getFieldState("acceptTerms"),
525
+ className: (0, _satellitePrefixer["default"])(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
526
+ inline: true,
527
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.Checkbox, _objectSpread({
528
+ id: "acceptTerms",
529
+ required: true,
530
+ checked: getValues("acceptTerms")
531
+ }, field))
532
+ });
533
+ }
534
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
535
+ name: "newsletter",
536
+ control: control,
537
+ render: function render(_ref15) {
538
+ var field = _ref15.field;
539
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
540
+ label: "Receive Newsletter",
541
+ labelFor: "newsletter",
542
+ description: "Do you want to receive our newsletter?",
543
+ state: getFieldState("newsletter"),
544
+ className: (0, _satellitePrefixer["default"])(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
545
+ inline: true,
546
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toggle.Toggle, _objectSpread({
547
+ id: "newsletter",
548
+ required: true,
549
+ checked: getValues("newsletter")
550
+ }, field))
551
+ });
552
+ }
553
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
554
+ className: (0, _satellitePrefixer["default"])(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2"]))),
555
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormSubmit, {
556
+ variant: "primary",
557
+ "aria-label": "Save the form",
558
+ children: "Save"
559
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormReset, {
560
+ "aria-label": "Reset the form",
561
+ onClick: function onClick() {
562
+ return reset();
563
+ },
564
+ children: "Reset"
565
+ })]
566
+ })]
567
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("hr", {
568
+ className: (0, _satellitePrefixer["default"])(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["text-grey-500"])))
569
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("code", {
570
+ className: (0, _satellitePrefixer["default"])(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["whitespace-pre"]))),
571
+ children: JSON.stringify(formData, null, 2)
572
+ })]
573
+ });
574
+ };
575
+ var yupSchema = yup.object({
576
+ firstName: yup.string().min(3, "First name must be at least 3 characters long").matches(/^(?!john$).*/i, "John is not allowed").required("You must specify a first name"),
577
+ lastName: yup.string().min(3, "Last name must be at least 3 characters long").required("You must specify a last name"),
578
+ password: yup.string().min(5, "Password must be at least 5 characters long").required("You must specify a password"),
579
+ civility: yup.string().oneOf(civilities).required("You must specify a civility"),
580
+ gender: yup.string().oneOf(genders.slice(1), "You must specify a gender").required("You must specify a gender"),
581
+ jobPositions: yup.array(yup.object({
582
+ label: yup.string(),
583
+ value: yup.string()
584
+ })).min(1, "You must specify at least one job position"),
585
+ employmentStatus: yup.string().oneOf(employmentStatuses).required("You must specify an employment status"),
586
+ birthday: yup.date().required("You must specify a birthday"),
587
+ age: yup.number().min(18, "You must be at least 18 years old").max(100, "You must be at most 100 years old").required("You must specify an age"),
588
+ interest: yup.number().min(5, "Your level of interest must be at least 5").required(),
589
+ idealLocation: yup.array(yup.number().min(10, "Your minimum ideal location must be 10 km").max(40, "Your maximum ideal location must be 40 km").required()).required(),
590
+ profilePicture: yup.mixed().nullable().test("profilePicture", function (_ref16) {
591
+ var value = _ref16.value;
592
+ return value.errors.map(function (error) {
593
+ return error.message;
594
+ }).join(", ");
595
+ }, function (value) {
596
+ return typeof value.errors === "undefined";
597
+ }).required("You must upload a profile picture"),
598
+ bio: yup.string().min(10, "Your bio must be at least 10 characters long").required("You must specify a bio"),
599
+ acceptTerms: yup["boolean"]().oneOf([true], "You must accept the terms").required(),
600
+ newsletter: yup["boolean"]().oneOf([true], "You must accept to receive the newsletter").required()
601
+ });
602
+ var FormikComplexComponent = exports.FormikComplexComponent = function FormikComplexComponent() {
603
+ var _useState3 = (0, _react.useState)(initialFormData),
604
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
605
+ formData = _useState4[0],
606
+ setFormData = _useState4[1];
607
+ var _useState5 = (0, _react.useState)(false),
608
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
609
+ revalidationEnabled = _useState6[0],
610
+ setRevalidationEnabled = _useState6[1];
611
+ var formik = (0, _formik.useFormik)({
612
+ initialValues: initialFormData,
613
+ validateOnChange: revalidationEnabled,
614
+ validateOnBlur: revalidationEnabled,
615
+ validationSchema: yupSchema,
616
+ onSubmit: function onSubmit(values) {
617
+ return setFormData(values);
618
+ },
619
+ onReset: function onReset() {
620
+ return setFormData(initialFormData);
621
+ }
622
+ });
623
+ var getFieldState = function getFieldState(fieldName) {
624
+ var fieldMeta = formik.getFieldMeta(fieldName);
625
+ var fieldErrors = fieldMeta.error ? Array.isArray(fieldMeta.error) ? fieldMeta.error : [fieldMeta.error] : [];
626
+ if (fieldErrors.length > 0) {
627
+ return {
628
+ status: "invalid",
629
+ errors: fieldErrors
630
+ };
631
+ } else if (formik.isSubmitting && fieldMeta.touched) {
632
+ return {
633
+ status: "validated"
634
+ };
635
+ } else {
636
+ return {
637
+ status: "default"
638
+ };
639
+ }
640
+ };
641
+ (0, _useFormikAutoFocusOnError.useFormikAutoFocusOnError)(formik);
642
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
643
+ className: (0, _satellitePrefixer["default"])(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-8 w-3/5"]))),
644
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Form.ExperimentalForm, {
645
+ onSubmit: function onSubmit(e) {
646
+ setRevalidationEnabled(true);
647
+ formik.handleSubmit(e);
648
+ },
649
+ onReset: function onReset(e) {
650
+ setRevalidationEnabled(false);
651
+ formik.handleReset(e);
652
+ },
653
+ className: (0, _satellitePrefixer["default"])(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col items-start gap-4 min-w-72"]))),
654
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormErrorMessage, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
655
+ label: "First Name",
656
+ labelFor: "firstName",
657
+ description: "Please enter your first name",
658
+ state: getFieldState("firstName"),
659
+ className: (0, _satellitePrefixer["default"])(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
660
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
661
+ id: "firstName",
662
+ placeholder: "John",
663
+ required: true
664
+ }, formik.getFieldProps("firstName")))
665
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
666
+ label: "Last Name",
667
+ labelFor: "lastName",
668
+ description: "Please enter your last name",
669
+ state: getFieldState("lastName"),
670
+ className: (0, _satellitePrefixer["default"])(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
671
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
672
+ id: "lastName",
673
+ placeholder: "Doe",
674
+ required: true
675
+ }, formik.getFieldProps("lastName")))
676
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
677
+ label: "Password",
678
+ labelFor: "password",
679
+ description: "Please enter your password",
680
+ state: getFieldState("password"),
681
+ className: (0, _satellitePrefixer["default"])(_templateObject29 || (_templateObject29 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
682
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
683
+ id: "password",
684
+ placeholder: "Password",
685
+ type: "password",
686
+ required: true
687
+ }, formik.getFieldProps("password")))
688
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
689
+ label: "Civility",
690
+ labelFor: civilities[0],
691
+ description: "Please enter your civility",
692
+ state: getFieldState("civility"),
693
+ className: (0, _satellitePrefixer["default"])(_templateObject30 || (_templateObject30 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
694
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
695
+ className: (0, _satellitePrefixer["default"])(_templateObject31 || (_templateObject31 = (0, _taggedTemplateLiteral2["default"])(["flex gap-4 display-body"]))),
696
+ children: civilities.map(function (civility, index) {
697
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
698
+ id: index === 0 ? "civility" : undefined,
699
+ htmlFor: civility,
700
+ className: (0, _satellitePrefixer["default"])(_templateObject32 || (_templateObject32 = (0, _taggedTemplateLiteral2["default"])(["flex items-center gap-1"]))),
701
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioButton, _objectSpread({
702
+ id: civility,
703
+ "aria-labelledby": civility,
704
+ required: true
705
+ }, formik.getFieldProps({
706
+ name: "civility",
707
+ value: civility,
708
+ type: "radio"
709
+ }))), (0, _capitalize["default"])(civility)]
710
+ }, civility);
711
+ })
712
+ })
713
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
714
+ label: "Gender",
715
+ labelFor: "gender",
716
+ description: "Please specify your gender",
717
+ state: getFieldState("gender"),
718
+ className: (0, _satellitePrefixer["default"])(_templateObject33 || (_templateObject33 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
719
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.Select, _objectSpread(_objectSpread({
720
+ id: "gender",
721
+ required: true
722
+ }, formik.getFieldProps("gender")), {}, {
723
+ children: genders.map(function (gender) {
724
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("option", {
725
+ value: gender,
726
+ children: (0, _capitalize["default"])(gender)
727
+ }, gender);
728
+ })
729
+ }))
730
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
731
+ label: "Job Positions",
732
+ labelFor: "jobPositions",
733
+ description: "Please specify the job positions you are interested in",
734
+ state: getFieldState("jobPositions"),
735
+ className: (0, _satellitePrefixer["default"])(_templateObject34 || (_templateObject34 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
736
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AutoComplete.AutoComplete, {
737
+ id: "jobPositions",
738
+ options: jobPositions,
739
+ placeholder: jobPositions[0].label,
740
+ multiple: true,
741
+ required: true,
742
+ clearable: true,
743
+ onChange: function onChange(value) {
744
+ return formik.setFieldValue("jobPositions", value);
745
+ },
746
+ onBlur: formik.handleBlur,
747
+ value: formik.values.jobPositions
748
+ })
749
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
750
+ label: "Employment Status",
751
+ labelFor: "employmentStatus",
752
+ description: "Please specify your employment status",
753
+ state: getFieldState("employmentStatus"),
754
+ className: (0, _satellitePrefixer["default"])(_templateObject35 || (_templateObject35 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
755
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioGroup, {
756
+ id: "employmentStatus",
757
+ required: true,
758
+ onChange: function onChange(value) {
759
+ return formik.setFieldValue("employmentStatus", value);
760
+ },
761
+ value: formik.values.employmentStatus,
762
+ children: employmentStatuses.map(function (employmentStatus) {
763
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioGroup.Item, {
764
+ value: employmentStatus,
765
+ children: (0, _capitalize["default"])(employmentStatus)
766
+ }, employmentStatus);
767
+ })
768
+ })
769
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
770
+ label: "Birthday",
771
+ labelFor: "birthday",
772
+ description: "Please specify your birthday",
773
+ state: getFieldState("birthday"),
774
+ className: (0, _satellitePrefixer["default"])(_templateObject36 || (_templateObject36 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
775
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DatePicker.DatePicker, {
776
+ id: "birthday",
777
+ calendarProps: {
778
+ disabled: {
779
+ after: now
780
+ }
781
+ },
782
+ required: true,
783
+ onChange: function onChange(value) {
784
+ return formik.setFieldValue("birthday", value);
785
+ },
786
+ value: formik.values.birthday
787
+ })
788
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
789
+ label: "Age",
790
+ labelFor: "age",
791
+ description: "Please specify your age",
792
+ state: getFieldState("age"),
793
+ className: (0, _satellitePrefixer["default"])(_templateObject37 || (_templateObject37 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
794
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, _objectSpread({
795
+ id: "age",
796
+ type: "number",
797
+ placeholder: "18",
798
+ step: 1,
799
+ required: true
800
+ }, formik.getFieldProps("age")))
801
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
802
+ label: "Interest",
803
+ labelFor: "interest",
804
+ description: "Please specify your interest",
805
+ state: getFieldState("interest"),
806
+ className: (0, _satellitePrefixer["default"])(_templateObject38 || (_templateObject38 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
807
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
808
+ className: (0, _satellitePrefixer["default"])(_templateObject39 || (_templateObject39 = (0, _taggedTemplateLiteral2["default"])(["display-caption flex justify-between mb-2"]))),
809
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
810
+ children: "0"
811
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
812
+ children: "5"
813
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
814
+ children: "10"
815
+ })]
816
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangeSlider.RangeSlider, {
817
+ id: "interest",
818
+ min: 0,
819
+ max: 10,
820
+ required: true,
821
+ onChange: function onChange(value) {
822
+ return formik.setFieldValue("interest", value);
823
+ },
824
+ value: formik.values.interest
825
+ })]
826
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
827
+ label: "Ideal Location",
828
+ labelFor: "idealLocation",
829
+ description: "Please specify your ideal location",
830
+ state: getFieldState("idealLocation"),
831
+ className: (0, _satellitePrefixer["default"])(_templateObject40 || (_templateObject40 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
832
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
833
+ className: (0, _satellitePrefixer["default"])(_templateObject41 || (_templateObject41 = (0, _taggedTemplateLiteral2["default"])(["display-caption flex justify-between mb-2"]))),
834
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
835
+ children: "0 km"
836
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
837
+ children: "10 km"
838
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
839
+ children: "20 km"
840
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
841
+ children: "30 km"
842
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
843
+ children: "40 km"
844
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
845
+ children: "50 km"
846
+ })]
847
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_RangeSlider.RangeSlider, {
848
+ id: "idealLocation",
849
+ min: 0,
850
+ max: 50,
851
+ step: 10,
852
+ required: true,
853
+ onChange: function onChange(value) {
854
+ return formik.setFieldValue("idealLocation", value);
855
+ },
856
+ value: formik.values.idealLocation
857
+ })]
858
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
859
+ label: "Profile Picture",
860
+ labelFor: "profilePicture",
861
+ description: "Please upload your profile picture, 1 MB minimum",
862
+ state: getFieldState("profilePicture"),
863
+ className: (0, _satellitePrefixer["default"])(_templateObject42 || (_templateObject42 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
864
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropzone.Dropzone, {
865
+ id: "profilePicture",
866
+ minSize: 1024 * 1024 * 1,
867
+ accept: [".png", ".jpg"],
868
+ required: true,
869
+ onChange: function onChange(acceptedFiles, rejectedFiles) {
870
+ return formik.setFieldValue("profilePicture", rejectedFiles.length > 0 ? rejectedFiles[0] : acceptedFiles[0]);
871
+ }
872
+ })
873
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
874
+ label: "Bio",
875
+ labelFor: "bio",
876
+ description: "Please write a short bio",
877
+ state: getFieldState("bio"),
878
+ className: (0, _satellitePrefixer["default"])(_templateObject43 || (_templateObject43 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
879
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextArea.TextArea, _objectSpread({
880
+ id: "bio",
881
+ required: true
882
+ }, formik.getFieldProps("bio")))
883
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
884
+ label: "Accept Terms",
885
+ labelFor: "acceptTerms",
886
+ description: "Please accept the terms",
887
+ state: getFieldState("acceptTerms"),
888
+ className: (0, _satellitePrefixer["default"])(_templateObject44 || (_templateObject44 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
889
+ inline: true,
890
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.Checkbox, _objectSpread({
891
+ id: "acceptTerms",
892
+ required: true,
893
+ checked: formik.values.acceptTerms
894
+ }, formik.getFieldProps("acceptTerms")))
895
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
896
+ label: "Receive Newsletter",
897
+ labelFor: "newsletter",
898
+ description: "Do you want to receive our newsletter?",
899
+ state: getFieldState("newsletter"),
900
+ className: (0, _satellitePrefixer["default"])(_templateObject45 || (_templateObject45 = (0, _taggedTemplateLiteral2["default"])(["w-full"]))),
901
+ inline: true,
902
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toggle.Toggle, _objectSpread({
903
+ id: "newsletter",
904
+ required: true,
905
+ checked: formik.values.newsletter
906
+ }, formik.getFieldProps("newsletter")))
907
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
908
+ className: (0, _satellitePrefixer["default"])(_templateObject46 || (_templateObject46 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2"]))),
909
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormSubmit, {
910
+ variant: "primary",
911
+ "aria-label": "Save the form",
912
+ children: "Save"
913
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormReset, {
914
+ "aria-label": "Reset the form",
915
+ onClick: function onClick() {
916
+ return formik.resetForm();
917
+ },
918
+ children: "Reset"
919
+ })]
920
+ })]
921
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("hr", {
922
+ className: (0, _satellitePrefixer["default"])(_templateObject47 || (_templateObject47 = (0, _taggedTemplateLiteral2["default"])(["text-grey-500"])))
923
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("code", {
924
+ className: (0, _satellitePrefixer["default"])(_templateObject48 || (_templateObject48 = (0, _taggedTemplateLiteral2["default"])(["whitespace-pre"]))),
925
+ children: JSON.stringify(formData, null, 2)
926
+ })]
927
+ });
928
+ };