@algolia/satellite 1.5.0 → 1.6.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 (34) hide show
  1. package/dist/cjs/Actions/Button/Button.tailwind.js +0 -12
  2. package/dist/cjs/Fields/Field/Field.js +1 -1
  3. package/dist/cjs/Fields/Form/stories/AsynchronousValidation.js +4 -4
  4. package/dist/cjs/Fields/Form/stories/Complex.js +4 -4
  5. package/dist/cjs/Fields/Form/stories/DependentFieldsValidation.js +4 -4
  6. package/dist/cjs/Fields/Form/stories/DirtyFields.js +4 -4
  7. package/dist/cjs/Fields/Form/stories/DynamicFieldsValidation.js +4 -4
  8. package/dist/cjs/Fields/Form/stories/FieldArrays.js +6 -6
  9. package/dist/cjs/Fields/Form/stories/JSONForms.js +3 -3
  10. package/dist/cjs/Fields/Form/stories/MultiStep.js +700 -0
  11. package/dist/cjs/Fields/Form/stories/ValidationStrategies.js +6 -6
  12. package/dist/cjs/Icons/index.d.ts +1 -1
  13. package/dist/cjs/Icons/index.js +6 -0
  14. package/dist/cjs/Indicators/Skeleton/Skeleton.js +1 -1
  15. package/dist/cjs/Indicators/index.d.ts +1 -0
  16. package/dist/cjs/Indicators/index.js +11 -0
  17. package/dist/esm/Actions/Button/Button.tailwind.js +0 -12
  18. package/dist/esm/Fields/Field/Field.js +1 -1
  19. package/dist/esm/Fields/Form/stories/AsynchronousValidation.js +4 -4
  20. package/dist/esm/Fields/Form/stories/Complex.js +4 -4
  21. package/dist/esm/Fields/Form/stories/DependentFieldsValidation.js +4 -4
  22. package/dist/esm/Fields/Form/stories/DirtyFields.js +4 -4
  23. package/dist/esm/Fields/Form/stories/DynamicFieldsValidation.js +4 -4
  24. package/dist/esm/Fields/Form/stories/FieldArrays.js +6 -6
  25. package/dist/esm/Fields/Form/stories/JSONForms.js +3 -3
  26. package/dist/esm/Fields/Form/stories/MultiStep.js +691 -0
  27. package/dist/esm/Fields/Form/stories/ValidationStrategies.js +6 -6
  28. package/dist/esm/Icons/index.d.ts +1 -1
  29. package/dist/esm/Icons/index.js +1 -1
  30. package/dist/esm/Indicators/Skeleton/Skeleton.js +1 -1
  31. package/dist/esm/Indicators/index.d.ts +1 -0
  32. package/dist/esm/Indicators/index.js +2 -1
  33. package/dist/satellite.min.css +1 -1
  34. package/package.json +6 -1
@@ -0,0 +1,700 @@
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.RHFMultiStepComponent = exports.FormikMultiStepComponent = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+ var _zod = require("@hookform/resolvers/zod");
16
+ var _formik = require("formik");
17
+ var _capitalize = _interopRequireDefault(require("lodash/capitalize"));
18
+ var _clamp = _interopRequireDefault(require("lodash/clamp"));
19
+ var _react = require("react");
20
+ var _reactHookForm = require("react-hook-form");
21
+ var yup = _interopRequireWildcard(require("yup"));
22
+ var _zod2 = require("zod");
23
+ var _Button = require("../../../Actions/Button/Button");
24
+ var _DotPagination = require("../../../Navigation/Pagination/DotPagination");
25
+ var _satellitePrefixer = _interopRequireDefault(require("../../../styles/helpers/satellitePrefixer"));
26
+ var _Checkbox = require("../../Checkbox");
27
+ var _Field = require("../../Field");
28
+ var _RadioGroup = require("../../RadioGroup");
29
+ var _Form = require("../Form");
30
+ var _useFormikAutoFocusOnError = require("./utils/useFormikAutoFocusOnError");
31
+ var _jsxRuntime = require("react/jsx-runtime");
32
+ 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, _templateObject49, _templateObject50, _templateObject51, _templateObject52, _templateObject53, _templateObject54, _templateObject55, _templateObject56, _templateObject57, _templateObject58, _templateObject59, _templateObject60, _templateObject61, _templateObject62, _templateObject63, _templateObject64, _templateObject65, _templateObject66, _templateObject67, _templateObject68, _templateObject69, _templateObject70;
33
+ 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); }
34
+ 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 && {}.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; }
35
+ 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; }
36
+ 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; }
37
+ var variantsEnum = ["separate", "group"];
38
+ var outOfStockEnum = ["show", "hide"];
39
+ var sortingOptions = ["relevance", "popularity", "lowest price first", "greatest discount first", "newest first"];
40
+ var filtersOptions = ["categories", "price", "brand", "size", "color"];
41
+ var initialFormData = {
42
+ variants: null,
43
+ outOfStock: null,
44
+ sorting: [],
45
+ filters: []
46
+ };
47
+ var steps = Object.keys(initialFormData);
48
+ var variantsOptions = [{
49
+ value: "separate",
50
+ title: "Show variants as separate items",
51
+ description: "Recommended when you want to give exposure to all the different variants of each product. May be preferable for smaller product ranges."
52
+ }, {
53
+ value: "group",
54
+ title: "Group variants under one item",
55
+ description: "Recommended when you have a large number of different products all with multiple variants."
56
+ }];
57
+ var outOfStockOptions = [{
58
+ value: "show",
59
+ title: "Show out-of-stock products in results",
60
+ description: "Recommended when you expect products to be quickly restocked, and you don't have any alternative products to offer."
61
+ }, {
62
+ value: "hide",
63
+ title: "Hide out-of-stock products from results",
64
+ description: "Recommended when you know products won't be restocked, or you can offer similar alternative products from your catalogue."
65
+ }];
66
+ var zodSchema = _zod2.z.object({
67
+ variants: _zod2.z["enum"](variantsEnum, {
68
+ errorMap: function errorMap() {
69
+ return {
70
+ message: "You must choose an option"
71
+ };
72
+ }
73
+ }),
74
+ outOfStock: _zod2.z["enum"](outOfStockEnum, {
75
+ errorMap: function errorMap() {
76
+ return {
77
+ message: "You must choose an option"
78
+ };
79
+ }
80
+ }),
81
+ sorting: _zod2.z.array(_zod2.z["enum"](sortingOptions)).min(1, "You must specify at least one sort option"),
82
+ filters: _zod2.z.array(_zod2.z["enum"](filtersOptions)).min(1, "You must specify at least one filter option")
83
+ });
84
+ var RHFMultiStepComponent = exports.RHFMultiStepComponent = function RHFMultiStepComponent() {
85
+ var _useForm = (0, _reactHookForm.useForm)({
86
+ resolver: (0, _zod.zodResolver)(zodSchema),
87
+ defaultValues: initialFormData,
88
+ reValidateMode: "onChange"
89
+ }),
90
+ control = _useForm.control,
91
+ handleSubmit = _useForm.handleSubmit,
92
+ getFieldStateFromReactHookForm = _useForm.getFieldState,
93
+ formState = _useForm.formState,
94
+ reset = _useForm.reset,
95
+ trigger = _useForm.trigger,
96
+ getValues = _useForm.getValues;
97
+ var _useState = (0, _react.useState)(initialFormData),
98
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
99
+ formData = _useState2[0],
100
+ setFormData = _useState2[1];
101
+ var _useState3 = (0, _react.useState)(1),
102
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
103
+ page = _useState4[0],
104
+ setPage = _useState4[1];
105
+ var goToPage = function goToPage(newPage) {
106
+ return setPage((0, _clamp["default"])(newPage, 1, steps.length));
107
+ };
108
+ var goToPreviousPage = function goToPreviousPage() {
109
+ return goToPage(page - 1);
110
+ };
111
+ var goToNextPage = function goToNextPage() {
112
+ return goToPage(page + 1);
113
+ };
114
+ var getFieldState = function getFieldState(fieldName) {
115
+ var fieldState = getFieldStateFromReactHookForm(fieldName, formState);
116
+ var fieldErrors = fieldState.error ? Array.isArray(fieldState.error) ? fieldState.error : [fieldState.error] : [];
117
+ if (fieldErrors.length > 0) {
118
+ return {
119
+ status: "invalid",
120
+ errors: fieldErrors.map(function (error) {
121
+ return error.message;
122
+ })
123
+ };
124
+ } else if (!fieldState.invalid && formState.isSubmitted) {
125
+ return {
126
+ status: "validated"
127
+ };
128
+ } else {
129
+ return {
130
+ status: "default"
131
+ };
132
+ }
133
+ };
134
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
135
+ className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-8 w-4/5"]))),
136
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Form.ExperimentalForm, {
137
+ onSubmit: handleSubmit(function (data) {
138
+ return setFormData(data);
139
+ }),
140
+ onReset: function onReset() {
141
+ return setFormData(initialFormData);
142
+ },
143
+ className: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-8 overflow-hidden"]))),
144
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormErrorMessage, {
145
+ locale: {
146
+ errorText: function errorText(invalidFields) {
147
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
148
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
149
+ className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["display-heading mb-2"]))),
150
+ children: ["Please fix ", invalidFields.length, " error", invalidFields.length > 1 ? "s" : "", " below and try again."]
151
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
152
+ className: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col"]))),
153
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
154
+ href: "#",
155
+ className: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["text-black underline hover:text-grey-800"]))),
156
+ onClick: function onClick(e) {
157
+ e.preventDefault();
158
+ var firstInvalid = steps.find(function (step) {
159
+ return getFieldState(step).status === "invalid";
160
+ });
161
+ if (firstInvalid) {
162
+ goToPage(steps.indexOf(firstInvalid) + 1);
163
+ }
164
+ },
165
+ children: "Go to first error"
166
+ })
167
+ })]
168
+ });
169
+ }
170
+ }
171
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
172
+ className: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["flex transition-transform ease-out duration-500"]))),
173
+ style: {
174
+ transform: "translateX(-".concat((page - 1) * 100, "%)")
175
+ },
176
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
177
+ name: "variants",
178
+ control: control,
179
+ render: function render(_ref) {
180
+ var field = _ref.field;
181
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
182
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
183
+ className: (0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
184
+ children: "How should we display products that contain multiple variants?"
185
+ }),
186
+ labelFor: variantsEnum[0],
187
+ state: getFieldState("variants"),
188
+ className: (0, _satellitePrefixer["default"])(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
189
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
190
+ className: (0, _satellitePrefixer["default"])(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
191
+ children: variantsOptions.map(function (option) {
192
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
193
+ htmlFor: option.value,
194
+ className: (0, _satellitePrefixer["default"])(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-3 p-6 rounded display-body transition-colors hover:bg-grey-100"]))),
195
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
196
+ className: (0, _satellitePrefixer["default"])(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["flex items-center gap-2"]))),
197
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioButton, _objectSpread(_objectSpread({
198
+ id: option.value,
199
+ "aria-labelledby": option.value,
200
+ required: true
201
+ }, field), {}, {
202
+ value: option.value,
203
+ className: (0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["shrink-0"])))
204
+ })), option.title]
205
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
206
+ className: (0, _satellitePrefixer["default"])(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["ml-6 typo-subdued"]))),
207
+ children: option.description
208
+ })]
209
+ }, option.value);
210
+ })
211
+ })
212
+ });
213
+ }
214
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
215
+ name: "outOfStock",
216
+ control: control,
217
+ render: function render(_ref2) {
218
+ var field = _ref2.field;
219
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
220
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
221
+ className: (0, _satellitePrefixer["default"])(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
222
+ children: "How would you like to show out-of-stock items?"
223
+ }),
224
+ labelFor: outOfStockEnum[0],
225
+ state: getFieldState("outOfStock"),
226
+ className: (0, _satellitePrefixer["default"])(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
227
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
228
+ className: (0, _satellitePrefixer["default"])(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
229
+ children: outOfStockOptions.map(function (option) {
230
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
231
+ htmlFor: option.value,
232
+ className: (0, _satellitePrefixer["default"])(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-3 p-6 rounded display-body transition-colors hover:bg-grey-100"]))),
233
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
234
+ className: (0, _satellitePrefixer["default"])(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["flex items-center gap-2"]))),
235
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioButton, _objectSpread(_objectSpread({
236
+ id: option.value,
237
+ "aria-labelledby": option.value,
238
+ required: true
239
+ }, field), {}, {
240
+ value: option.value,
241
+ className: (0, _satellitePrefixer["default"])(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["shrink-0"])))
242
+ })), option.title]
243
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
244
+ className: (0, _satellitePrefixer["default"])(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["ml-6 typo-subdued"]))),
245
+ children: option.description
246
+ })]
247
+ }, option.value);
248
+ })
249
+ })
250
+ });
251
+ }
252
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
253
+ name: "sorting",
254
+ control: control,
255
+ render: function render(_ref3) {
256
+ var field = _ref3.field;
257
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
258
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
259
+ className: (0, _satellitePrefixer["default"])(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
260
+ children: "Select how your customers can sort their search results"
261
+ }),
262
+ labelFor: sortingOptions[0],
263
+ state: getFieldState("sorting"),
264
+ className: (0, _satellitePrefixer["default"])(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
265
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
266
+ className: (0, _satellitePrefixer["default"])(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["mt-4 typo-subdued"]))),
267
+ children: "Select the sort order options you'd like to show customers. You can change these later."
268
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
269
+ className: (0, _satellitePrefixer["default"])(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
270
+ children: sortingOptions.map(function (option) {
271
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
272
+ htmlFor: option,
273
+ className: (0, _satellitePrefixer["default"])(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2 p-4 rounded display-body transition-colors hover:bg-grey-100"]))),
274
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.Checkbox, _objectSpread(_objectSpread({
275
+ id: option,
276
+ required: true,
277
+ checked: getValues("sorting").includes(option)
278
+ }, field), {}, {
279
+ onChange: function onChange() {
280
+ return field.onChange(field.value.includes(option) ? field.value.filter(function (v) {
281
+ return v !== option;
282
+ }) : [].concat((0, _toConsumableArray2["default"])(field.value), [option]));
283
+ }
284
+ })), (0, _capitalize["default"])(option)]
285
+ }, option);
286
+ })
287
+ })]
288
+ });
289
+ }
290
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactHookForm.Controller, {
291
+ name: "filters",
292
+ control: control,
293
+ render: function render(_ref4) {
294
+ var field = _ref4.field;
295
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
296
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
297
+ className: (0, _satellitePrefixer["default"])(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
298
+ children: "Add filters to help narrow results"
299
+ }),
300
+ labelFor: filtersOptions[0],
301
+ state: getFieldState("filters"),
302
+ className: (0, _satellitePrefixer["default"])(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
303
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
304
+ className: (0, _satellitePrefixer["default"])(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["mt-4 typo-subdued"]))),
305
+ children: ["Select the filter options customers can use to refine results.", /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {}), "You can edit these after setup."]
306
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
307
+ className: (0, _satellitePrefixer["default"])(_templateObject29 || (_templateObject29 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
308
+ children: filtersOptions.map(function (option) {
309
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
310
+ htmlFor: option,
311
+ className: (0, _satellitePrefixer["default"])(_templateObject30 || (_templateObject30 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2 p-4 rounded display-body transition-colors hover:bg-grey-100"]))),
312
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.Checkbox, _objectSpread(_objectSpread({
313
+ id: option,
314
+ required: true,
315
+ checked: getValues("filters").includes(option)
316
+ }, field), {}, {
317
+ onChange: function onChange() {
318
+ return field.onChange(field.value.includes(option) ? field.value.filter(function (v) {
319
+ return v !== option;
320
+ }) : [].concat((0, _toConsumableArray2["default"])(field.value), [option]));
321
+ }
322
+ })), (0, _capitalize["default"])(option)]
323
+ }, option);
324
+ })
325
+ })]
326
+ });
327
+ }
328
+ })]
329
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
330
+ className: (0, _satellitePrefixer["default"])(_templateObject31 || (_templateObject31 = (0, _taggedTemplateLiteral2["default"])(["w-full flex justify-between"]))),
331
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
332
+ className: (0, _satellitePrefixer["default"])(_templateObject32 || (_templateObject32 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2"]))),
333
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
334
+ "aria-label": "Previous step",
335
+ disabled: page <= 1,
336
+ onClick: function onClick() {
337
+ return goToPreviousPage();
338
+ },
339
+ children: "Back"
340
+ }), page >= steps.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormSubmit, {
341
+ variant: "primary",
342
+ "aria-label": "Complete",
343
+ children: "Complete"
344
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
345
+ variant: "primary",
346
+ "aria-label": "Next step",
347
+ onClick: /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
348
+ var valid;
349
+ return _regenerator["default"].wrap(function _callee$(_context) {
350
+ while (1) switch (_context.prev = _context.next) {
351
+ case 0:
352
+ _context.next = 2;
353
+ return trigger(steps[page - 1]);
354
+ case 2:
355
+ valid = _context.sent;
356
+ if (valid) {
357
+ goToNextPage();
358
+ }
359
+ case 4:
360
+ case "end":
361
+ return _context.stop();
362
+ }
363
+ }, _callee);
364
+ })),
365
+ children: "Next"
366
+ })]
367
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
368
+ variant: "subtle",
369
+ "aria-label": "Reset the form",
370
+ onClick: function onClick() {
371
+ reset();
372
+ goToPage(1);
373
+ },
374
+ children: "Reset"
375
+ })]
376
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
377
+ className: (0, _satellitePrefixer["default"])(_templateObject33 || (_templateObject33 = (0, _taggedTemplateLiteral2["default"])(["mt-8 mx-auto"]))),
378
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DotPagination.DotPagination, {
379
+ nbPages: steps.length,
380
+ currentPage: page,
381
+ onChange: goToPage,
382
+ size: "small"
383
+ })
384
+ })]
385
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("hr", {
386
+ className: (0, _satellitePrefixer["default"])(_templateObject34 || (_templateObject34 = (0, _taggedTemplateLiteral2["default"])(["text-grey-500"])))
387
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("code", {
388
+ className: (0, _satellitePrefixer["default"])(_templateObject35 || (_templateObject35 = (0, _taggedTemplateLiteral2["default"])(["whitespace-pre display-code"]))),
389
+ children: JSON.stringify(formData, null, 2)
390
+ })]
391
+ });
392
+ };
393
+ var yupSchema = yup.object({
394
+ variants: yup.string().oneOf(variantsEnum).required("You must choose an option"),
395
+ outOfStock: yup.string().oneOf(outOfStockEnum).required("You must choose an option"),
396
+ sorting: yup.array(yup.string().oneOf(sortingOptions)).min(1, "You must specify at least one sort option"),
397
+ filters: yup.array(yup.string().oneOf(filtersOptions)).min(1, "You must specify at least one filter option")
398
+ });
399
+ var FormikMultiStepComponent = exports.FormikMultiStepComponent = function FormikMultiStepComponent() {
400
+ var _useState5 = (0, _react.useState)(initialFormData),
401
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
402
+ formData = _useState6[0],
403
+ setFormData = _useState6[1];
404
+ var _useState7 = (0, _react.useState)(false),
405
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
406
+ revalidationEnabled = _useState8[0],
407
+ setRevalidationEnabled = _useState8[1];
408
+ var _useState9 = (0, _react.useState)(1),
409
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
410
+ page = _useState10[0],
411
+ setPage = _useState10[1];
412
+ var _useState11 = (0, _react.useState)(false),
413
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
414
+ nextPageClicked = _useState12[0],
415
+ setNextPageClicked = _useState12[1];
416
+ var goToPage = function goToPage(newPage) {
417
+ return setPage((0, _clamp["default"])(newPage, 1, steps.length));
418
+ };
419
+ var goToPreviousPage = function goToPreviousPage() {
420
+ return goToPage(page - 1);
421
+ };
422
+ var goToNextPage = function goToNextPage() {
423
+ return goToPage(page + 1);
424
+ };
425
+ var formik = (0, _formik.useFormik)({
426
+ initialValues: initialFormData,
427
+ validateOnChange: revalidationEnabled,
428
+ validateOnBlur: revalidationEnabled,
429
+ validationSchema: yupSchema,
430
+ onSubmit: function onSubmit(values) {
431
+ return setFormData(values);
432
+ },
433
+ onReset: function onReset() {
434
+ return setFormData(initialFormData);
435
+ }
436
+ });
437
+ var getFieldState = function getFieldState(fieldName) {
438
+ var fieldMeta = formik.getFieldMeta(fieldName);
439
+ var fieldErrors = fieldMeta.error ? Array.isArray(fieldMeta.error) ? fieldMeta.error : [fieldMeta.error] : [];
440
+ if (fieldErrors.length > 0) {
441
+ return {
442
+ status: "invalid",
443
+ errors: fieldErrors
444
+ };
445
+ } else if (formik.isSubmitting && fieldMeta.touched) {
446
+ return {
447
+ status: "validated"
448
+ };
449
+ } else {
450
+ return {
451
+ status: "default"
452
+ };
453
+ }
454
+ };
455
+ (0, _useFormikAutoFocusOnError.useFormikAutoFocusOnError)(formik);
456
+
457
+ // This is a workaround because calling `formik.validateField` doesn't return the field errors.
458
+ // See https://github.com/jaredpalmer/formik/issues/2021
459
+ if (nextPageClicked) {
460
+ setNextPageClicked(false);
461
+ if (getFieldState(steps[page - 1]).status !== "invalid") {
462
+ goToNextPage();
463
+ }
464
+ }
465
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
466
+ className: (0, _satellitePrefixer["default"])(_templateObject36 || (_templateObject36 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-8 w-4/5"]))),
467
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Form.ExperimentalForm, {
468
+ onSubmit: function onSubmit(e) {
469
+ setRevalidationEnabled(true);
470
+ formik.handleSubmit(e);
471
+ },
472
+ onReset: function onReset(e) {
473
+ setRevalidationEnabled(false);
474
+ formik.handleReset(e);
475
+ },
476
+ className: (0, _satellitePrefixer["default"])(_templateObject37 || (_templateObject37 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-8 overflow-hidden"]))),
477
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormErrorMessage, {
478
+ locale: {
479
+ errorText: function errorText(invalidFields) {
480
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
481
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
482
+ className: (0, _satellitePrefixer["default"])(_templateObject38 || (_templateObject38 = (0, _taggedTemplateLiteral2["default"])(["display-heading mb-2"]))),
483
+ children: ["Please fix ", invalidFields.length, " error", invalidFields.length > 1 ? "s" : "", " below and try again."]
484
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
485
+ className: (0, _satellitePrefixer["default"])(_templateObject39 || (_templateObject39 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col"]))),
486
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
487
+ href: "#",
488
+ className: (0, _satellitePrefixer["default"])(_templateObject40 || (_templateObject40 = (0, _taggedTemplateLiteral2["default"])(["text-black underline hover:text-grey-800"]))),
489
+ onClick: function onClick(e) {
490
+ e.preventDefault();
491
+ var firstInvalid = steps.find(function (step) {
492
+ return getFieldState(step).status === "invalid";
493
+ });
494
+ if (firstInvalid) {
495
+ goToPage(steps.indexOf(firstInvalid) + 1);
496
+ }
497
+ },
498
+ children: "Go to first error"
499
+ })
500
+ })]
501
+ });
502
+ }
503
+ }
504
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
505
+ className: (0, _satellitePrefixer["default"])(_templateObject41 || (_templateObject41 = (0, _taggedTemplateLiteral2["default"])(["flex transition-transform ease-out duration-500"]))),
506
+ style: {
507
+ transform: "translateX(-".concat((page - 1) * 100, "%)")
508
+ },
509
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
510
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
511
+ className: (0, _satellitePrefixer["default"])(_templateObject42 || (_templateObject42 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
512
+ children: "How should we display products that contain multiple variants?"
513
+ }),
514
+ labelFor: variantsEnum[0],
515
+ state: getFieldState("variants"),
516
+ className: (0, _satellitePrefixer["default"])(_templateObject43 || (_templateObject43 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
517
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
518
+ className: (0, _satellitePrefixer["default"])(_templateObject44 || (_templateObject44 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
519
+ children: variantsOptions.map(function (option) {
520
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
521
+ htmlFor: option.value,
522
+ className: (0, _satellitePrefixer["default"])(_templateObject45 || (_templateObject45 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-3 p-6 rounded display-body transition-colors hover:bg-grey-100"]))),
523
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
524
+ className: (0, _satellitePrefixer["default"])(_templateObject46 || (_templateObject46 = (0, _taggedTemplateLiteral2["default"])(["flex items-center gap-2"]))),
525
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioButton, _objectSpread(_objectSpread({
526
+ id: option.value,
527
+ "aria-labelledby": option.value,
528
+ required: true
529
+ }, formik.getFieldProps({
530
+ name: "variants",
531
+ value: option.value,
532
+ type: "radio"
533
+ })), {}, {
534
+ className: (0, _satellitePrefixer["default"])(_templateObject47 || (_templateObject47 = (0, _taggedTemplateLiteral2["default"])(["shrink-0"])))
535
+ })), option.title]
536
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
537
+ className: (0, _satellitePrefixer["default"])(_templateObject48 || (_templateObject48 = (0, _taggedTemplateLiteral2["default"])(["ml-6 typo-subdued"]))),
538
+ children: option.description
539
+ })]
540
+ }, option.value);
541
+ })
542
+ })
543
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Field.Field, {
544
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
545
+ className: (0, _satellitePrefixer["default"])(_templateObject49 || (_templateObject49 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
546
+ children: "How would you like to show out-of-stock items?"
547
+ }),
548
+ labelFor: outOfStockEnum[0],
549
+ state: getFieldState("outOfStock"),
550
+ className: (0, _satellitePrefixer["default"])(_templateObject50 || (_templateObject50 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
551
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
552
+ className: (0, _satellitePrefixer["default"])(_templateObject51 || (_templateObject51 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
553
+ children: outOfStockOptions.map(function (option) {
554
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
555
+ htmlFor: option.value,
556
+ className: (0, _satellitePrefixer["default"])(_templateObject52 || (_templateObject52 = (0, _taggedTemplateLiteral2["default"])(["flex flex-col gap-3 p-6 rounded display-body transition-colors hover:bg-grey-100"]))),
557
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
558
+ className: (0, _satellitePrefixer["default"])(_templateObject53 || (_templateObject53 = (0, _taggedTemplateLiteral2["default"])(["flex items-center gap-2"]))),
559
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroup.RadioButton, _objectSpread(_objectSpread({
560
+ id: option.value,
561
+ "aria-labelledby": option.value,
562
+ required: true
563
+ }, formik.getFieldProps({
564
+ name: "outOfStock",
565
+ value: option.value,
566
+ type: "radio"
567
+ })), {}, {
568
+ className: (0, _satellitePrefixer["default"])(_templateObject54 || (_templateObject54 = (0, _taggedTemplateLiteral2["default"])(["shrink-0"])))
569
+ })), option.title]
570
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
571
+ className: (0, _satellitePrefixer["default"])(_templateObject55 || (_templateObject55 = (0, _taggedTemplateLiteral2["default"])(["ml-6 typo-subdued"]))),
572
+ children: option.description
573
+ })]
574
+ }, option.value);
575
+ })
576
+ })
577
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
578
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
579
+ className: (0, _satellitePrefixer["default"])(_templateObject56 || (_templateObject56 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
580
+ children: "Select how your customers can sort their search results"
581
+ }),
582
+ labelFor: sortingOptions[0],
583
+ state: getFieldState("sorting"),
584
+ className: (0, _satellitePrefixer["default"])(_templateObject57 || (_templateObject57 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
585
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
586
+ className: (0, _satellitePrefixer["default"])(_templateObject58 || (_templateObject58 = (0, _taggedTemplateLiteral2["default"])(["mt-4 typo-subdued"]))),
587
+ children: "Select the sort order options you'd like to show customers. You can change these later."
588
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
589
+ className: (0, _satellitePrefixer["default"])(_templateObject59 || (_templateObject59 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
590
+ children: sortingOptions.map(function (option) {
591
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
592
+ htmlFor: option,
593
+ className: (0, _satellitePrefixer["default"])(_templateObject60 || (_templateObject60 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2 p-4 rounded display-body transition-colors hover:bg-grey-100"]))),
594
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.Checkbox, _objectSpread(_objectSpread({
595
+ id: option,
596
+ required: true,
597
+ checked: formik.values.sorting.includes(option)
598
+ }, formik.getFieldProps("sorting")), {}, {
599
+ onChange: function onChange() {
600
+ var fieldProps = formik.getFieldProps("sorting");
601
+ formik.setFieldValue("sorting", fieldProps.value.includes(option) ? fieldProps.value.filter(function (v) {
602
+ return v !== option;
603
+ }) : [].concat((0, _toConsumableArray2["default"])(fieldProps.value), [option]));
604
+ }
605
+ })), (0, _capitalize["default"])(option)]
606
+ }, option);
607
+ })
608
+ })]
609
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Field.Field, {
610
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
611
+ className: (0, _satellitePrefixer["default"])(_templateObject61 || (_templateObject61 = (0, _taggedTemplateLiteral2["default"])(["display-xlarge whitespace-normal inline"]))),
612
+ children: "Add filters to help narrow results"
613
+ }),
614
+ labelFor: filtersOptions[0],
615
+ state: getFieldState("filters"),
616
+ className: (0, _satellitePrefixer["default"])(_templateObject62 || (_templateObject62 = (0, _taggedTemplateLiteral2["default"])(["w-full shrink-0"]))),
617
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
618
+ className: (0, _satellitePrefixer["default"])(_templateObject63 || (_templateObject63 = (0, _taggedTemplateLiteral2["default"])(["mt-4 typo-subdued"]))),
619
+ children: ["Select the filter options customers can use to refine results.", /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {}), "You can edit these after setup."]
620
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
621
+ className: (0, _satellitePrefixer["default"])(_templateObject64 || (_templateObject64 = (0, _taggedTemplateLiteral2["default"])(["mt-7"]))),
622
+ children: filtersOptions.map(function (option) {
623
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
624
+ htmlFor: option,
625
+ className: (0, _satellitePrefixer["default"])(_templateObject65 || (_templateObject65 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2 p-4 rounded display-body transition-colors hover:bg-grey-100"]))),
626
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.Checkbox, {
627
+ id: option,
628
+ required: true,
629
+ checked: formik.values.filters.includes(option),
630
+ onChange: function onChange() {
631
+ var fieldProps = formik.getFieldProps("filters");
632
+ formik.setFieldValue("filters", fieldProps.value.includes(option) ? fieldProps.value.filter(function (v) {
633
+ return v !== option;
634
+ }) : [].concat((0, _toConsumableArray2["default"])(fieldProps.value), [option]));
635
+ }
636
+ }), (0, _capitalize["default"])(option)]
637
+ }, option);
638
+ })
639
+ })]
640
+ })]
641
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
642
+ className: (0, _satellitePrefixer["default"])(_templateObject66 || (_templateObject66 = (0, _taggedTemplateLiteral2["default"])(["w-full flex justify-between"]))),
643
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
644
+ className: (0, _satellitePrefixer["default"])(_templateObject67 || (_templateObject67 = (0, _taggedTemplateLiteral2["default"])(["flex gap-2"]))),
645
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
646
+ "aria-label": "Previous step",
647
+ disabled: page <= 1,
648
+ onClick: function onClick() {
649
+ return goToPreviousPage();
650
+ },
651
+ children: "Back"
652
+ }), page >= steps.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Form.ExperimentalFormSubmit, {
653
+ variant: "primary",
654
+ "aria-label": "Complete",
655
+ children: "Complete"
656
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
657
+ variant: "primary",
658
+ "aria-label": "Next step",
659
+ onClick: /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
660
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
661
+ while (1) switch (_context2.prev = _context2.next) {
662
+ case 0:
663
+ _context2.next = 2;
664
+ return formik.validateField(steps[page - 1]);
665
+ case 2:
666
+ setNextPageClicked(true); // See workaround above
667
+ case 3:
668
+ case "end":
669
+ return _context2.stop();
670
+ }
671
+ }, _callee2);
672
+ })),
673
+ children: "Next"
674
+ })]
675
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
676
+ variant: "subtle",
677
+ "aria-label": "Reset the form",
678
+ onClick: function onClick() {
679
+ formik.resetForm();
680
+ goToPage(1);
681
+ },
682
+ children: "Reset"
683
+ })]
684
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
685
+ className: (0, _satellitePrefixer["default"])(_templateObject68 || (_templateObject68 = (0, _taggedTemplateLiteral2["default"])(["mt-8 mx-auto"]))),
686
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DotPagination.DotPagination, {
687
+ nbPages: steps.length,
688
+ currentPage: page,
689
+ onChange: goToPage,
690
+ size: "small"
691
+ })
692
+ })]
693
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("hr", {
694
+ className: (0, _satellitePrefixer["default"])(_templateObject69 || (_templateObject69 = (0, _taggedTemplateLiteral2["default"])(["text-grey-500"])))
695
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("code", {
696
+ className: (0, _satellitePrefixer["default"])(_templateObject70 || (_templateObject70 = (0, _taggedTemplateLiteral2["default"])(["whitespace-pre display-code"]))),
697
+ children: JSON.stringify(formData, null, 2)
698
+ })]
699
+ });
700
+ };