@makeswift/runtime 0.0.21 → 0.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 (196) hide show
  1. package/dist/Box.cjs.js +502 -0
  2. package/dist/Box.cjs.js.map +1 -0
  3. package/dist/Box.es.js +496 -0
  4. package/dist/Box.es.js.map +1 -0
  5. package/dist/Button.cjs.js +308 -0
  6. package/dist/Button.cjs.js.map +1 -0
  7. package/dist/Button.es.js +301 -0
  8. package/dist/Button.es.js.map +1 -0
  9. package/dist/Carousel.cjs.js +487 -0
  10. package/dist/Carousel.cjs.js.map +1 -0
  11. package/dist/Carousel.es.js +481 -0
  12. package/dist/Carousel.es.js.map +1 -0
  13. package/dist/Countdown.cjs.js +340 -0
  14. package/dist/Countdown.cjs.js.map +1 -0
  15. package/dist/Countdown.es.js +334 -0
  16. package/dist/Countdown.es.js.map +1 -0
  17. package/dist/Divider.cjs.js +115 -0
  18. package/dist/Divider.cjs.js.map +1 -0
  19. package/dist/Divider.es.js +109 -0
  20. package/dist/Divider.es.js.map +1 -0
  21. package/dist/Embed.cjs.js +129 -0
  22. package/dist/Embed.cjs.js.map +1 -0
  23. package/dist/Embed.es.js +123 -0
  24. package/dist/Embed.es.js.map +1 -0
  25. package/dist/Form.cjs.js +1705 -0
  26. package/dist/Form.cjs.js.map +1 -0
  27. package/dist/Form.es.js +1677 -0
  28. package/dist/Form.es.js.map +1 -0
  29. package/dist/Image.cjs2.js +148 -0
  30. package/dist/Image.cjs2.js.map +1 -0
  31. package/dist/Image.es2.js +141 -0
  32. package/dist/Image.es2.js.map +1 -0
  33. package/dist/Navigation.cjs.js +736 -0
  34. package/dist/Navigation.cjs.js.map +1 -0
  35. package/dist/Navigation.es.js +710 -0
  36. package/dist/Navigation.es.js.map +1 -0
  37. package/dist/Root.cjs.js +143 -0
  38. package/dist/Root.cjs.js.map +1 -0
  39. package/dist/Root.es.js +137 -0
  40. package/dist/Root.es.js.map +1 -0
  41. package/dist/SocialLinks.cjs.js +900 -0
  42. package/dist/SocialLinks.cjs.js.map +1 -0
  43. package/dist/SocialLinks.es.js +874 -0
  44. package/dist/SocialLinks.es.js.map +1 -0
  45. package/dist/Text.cjs.js +475 -0
  46. package/dist/Text.cjs.js.map +1 -0
  47. package/dist/Text.es.js +467 -0
  48. package/dist/Text.es.js.map +1 -0
  49. package/dist/Video.cjs.js +121 -0
  50. package/dist/Video.cjs.js.map +1 -0
  51. package/dist/Video.es.js +114 -0
  52. package/dist/Video.es.js.map +1 -0
  53. package/dist/components.cjs.js +80 -58
  54. package/dist/components.cjs.js.map +1 -1
  55. package/dist/components.es.js +41 -18
  56. package/dist/components.es.js.map +1 -1
  57. package/dist/cssMediaRules.cjs.js +222 -0
  58. package/dist/cssMediaRules.cjs.js.map +1 -0
  59. package/dist/cssMediaRules.es.js +213 -0
  60. package/dist/cssMediaRules.es.js.map +1 -0
  61. package/dist/descriptors.es.js +1 -1
  62. package/dist/index.cjs.js +1411 -7742
  63. package/dist/index.cjs.js.map +1 -1
  64. package/dist/index.cjs2.js +522 -0
  65. package/dist/index.cjs2.js.map +1 -0
  66. package/dist/index.cjs3.js +141 -0
  67. package/dist/index.cjs3.js.map +1 -0
  68. package/dist/index.cjs4.js +18 -0
  69. package/dist/index.cjs4.js.map +1 -0
  70. package/dist/index.es.js +1342 -7698
  71. package/dist/index.es.js.map +1 -1
  72. package/dist/index.es2.js +514 -0
  73. package/dist/index.es2.js.map +1 -0
  74. package/dist/index.es3.js +134 -0
  75. package/dist/index.es3.js.map +1 -0
  76. package/dist/index.es4.js +13 -0
  77. package/dist/index.es4.js.map +1 -0
  78. package/dist/next.cjs.js +19 -201
  79. package/dist/next.cjs.js.map +1 -1
  80. package/dist/next.es.js +12 -192
  81. package/dist/next.es.js.map +1 -1
  82. package/dist/placeholders.cjs.js +13 -0
  83. package/dist/placeholders.cjs.js.map +1 -0
  84. package/dist/placeholders.es.js +12 -0
  85. package/dist/placeholders.es.js.map +1 -0
  86. package/dist/react-builder-preview.cjs.js +23 -33
  87. package/dist/react-builder-preview.cjs.js.map +1 -1
  88. package/dist/react-builder-preview.es.js +13 -23
  89. package/dist/react-builder-preview.es.js.map +1 -1
  90. package/dist/react-page.es.js +1 -1
  91. package/dist/react.cjs.js +16 -28
  92. package/dist/react.cjs.js.map +1 -1
  93. package/dist/react.es.js +8 -20
  94. package/dist/react.es.js.map +1 -1
  95. package/dist/types/components/builtin/Box/Box.d.ts +1 -4
  96. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  97. package/dist/types/components/builtin/Box/animations.d.ts +1 -8
  98. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  99. package/dist/types/components/builtin/Box/constants.d.ts +9 -0
  100. package/dist/types/components/builtin/Box/constants.d.ts.map +1 -0
  101. package/dist/types/components/builtin/Box/index.d.ts +2 -2
  102. package/dist/types/components/builtin/Box/index.d.ts.map +1 -1
  103. package/dist/types/components/builtin/Box/register.d.ts +3 -0
  104. package/dist/types/components/builtin/Box/register.d.ts.map +1 -0
  105. package/dist/types/components/builtin/Button/Button.d.ts +1 -4
  106. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  107. package/dist/types/components/builtin/Button/contants.d.ts +2 -0
  108. package/dist/types/components/builtin/Button/contants.d.ts.map +1 -0
  109. package/dist/types/components/builtin/Button/index.d.ts +1 -1
  110. package/dist/types/components/builtin/Button/index.d.ts.map +1 -1
  111. package/dist/types/components/builtin/Button/register.d.ts +3 -0
  112. package/dist/types/components/builtin/Button/register.d.ts.map +1 -0
  113. package/dist/types/components/builtin/Carousel/Carousel.d.ts +0 -3
  114. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  115. package/dist/types/components/builtin/Carousel/index.d.ts +1 -1
  116. package/dist/types/components/builtin/Carousel/index.d.ts.map +1 -1
  117. package/dist/types/components/builtin/Carousel/register.d.ts +3 -0
  118. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -0
  119. package/dist/types/components/builtin/Countdown/Countdown.d.ts +0 -3
  120. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  121. package/dist/types/components/builtin/Countdown/index.d.ts +1 -1
  122. package/dist/types/components/builtin/Countdown/index.d.ts.map +1 -1
  123. package/dist/types/components/builtin/Countdown/register.d.ts +3 -0
  124. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -0
  125. package/dist/types/components/builtin/Divider/Divider.d.ts +0 -3
  126. package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
  127. package/dist/types/components/builtin/Divider/index.d.ts +1 -1
  128. package/dist/types/components/builtin/Divider/index.d.ts.map +1 -1
  129. package/dist/types/components/builtin/Divider/register.d.ts +3 -0
  130. package/dist/types/components/builtin/Divider/register.d.ts.map +1 -0
  131. package/dist/types/components/builtin/Embed/Embed.d.ts +0 -3
  132. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  133. package/dist/types/components/builtin/Embed/index.d.ts +1 -1
  134. package/dist/types/components/builtin/Embed/index.d.ts.map +1 -1
  135. package/dist/types/components/builtin/Embed/register.d.ts +3 -0
  136. package/dist/types/components/builtin/Embed/register.d.ts.map +1 -0
  137. package/dist/types/components/builtin/Form/Form.d.ts +1 -10
  138. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  139. package/dist/types/components/builtin/Form/context/FormContext.d.ts +6 -0
  140. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  141. package/dist/types/components/builtin/Form/index.d.ts +1 -1
  142. package/dist/types/components/builtin/Form/index.d.ts.map +1 -1
  143. package/dist/types/components/builtin/Form/register.d.ts +3 -0
  144. package/dist/types/components/builtin/Form/register.d.ts.map +1 -0
  145. package/dist/types/components/builtin/Image/Image.d.ts +0 -3
  146. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  147. package/dist/types/components/builtin/Image/index.d.ts +1 -1
  148. package/dist/types/components/builtin/Image/index.d.ts.map +1 -1
  149. package/dist/types/components/builtin/Image/register.d.ts +3 -0
  150. package/dist/types/components/builtin/Image/register.d.ts.map +1 -0
  151. package/dist/types/components/builtin/Navigation/Navigation.d.ts +0 -3
  152. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  153. package/dist/types/components/builtin/Navigation/index.d.ts +1 -1
  154. package/dist/types/components/builtin/Navigation/index.d.ts.map +1 -1
  155. package/dist/types/components/builtin/Navigation/register.d.ts +3 -0
  156. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -0
  157. package/dist/types/components/builtin/Root/Root.d.ts +0 -2
  158. package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
  159. package/dist/types/components/builtin/Root/index.d.ts +1 -1
  160. package/dist/types/components/builtin/Root/index.d.ts.map +1 -1
  161. package/dist/types/components/builtin/Root/register.d.ts +3 -0
  162. package/dist/types/components/builtin/Root/register.d.ts.map +1 -0
  163. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +0 -3
  164. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  165. package/dist/types/components/builtin/SocialLinks/index.d.ts +1 -1
  166. package/dist/types/components/builtin/SocialLinks/index.d.ts.map +1 -1
  167. package/dist/types/components/builtin/SocialLinks/register.d.ts +3 -0
  168. package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -0
  169. package/dist/types/components/builtin/Text/Text.d.ts +0 -3
  170. package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
  171. package/dist/types/components/builtin/Text/index.d.ts +1 -1
  172. package/dist/types/components/builtin/Text/index.d.ts.map +1 -1
  173. package/dist/types/components/builtin/Text/register.d.ts +3 -0
  174. package/dist/types/components/builtin/Text/register.d.ts.map +1 -0
  175. package/dist/types/components/builtin/Video/Video.d.ts +0 -3
  176. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  177. package/dist/types/components/builtin/Video/index.d.ts +1 -1
  178. package/dist/types/components/builtin/Video/index.d.ts.map +1 -1
  179. package/dist/types/components/builtin/Video/register.d.ts +3 -0
  180. package/dist/types/components/builtin/Video/register.d.ts.map +1 -0
  181. package/dist/types/components/builtin/index.d.ts +1 -2
  182. package/dist/types/components/builtin/index.d.ts.map +1 -1
  183. package/dist/types/components/builtin/register.d.ts +3 -0
  184. package/dist/types/components/builtin/register.d.ts.map +1 -0
  185. package/dist/types/next.d.ts +12 -2
  186. package/dist/types/next.d.ts.map +1 -1
  187. package/dist/useBoxShadow.cjs.js +78 -0
  188. package/dist/useBoxShadow.cjs.js.map +1 -0
  189. package/dist/useBoxShadow.es.js +77 -0
  190. package/dist/useBoxShadow.es.js.map +1 -0
  191. package/dist/useMediaQuery.cjs.js +26 -0
  192. package/dist/useMediaQuery.cjs.js.map +1 -0
  193. package/dist/useMediaQuery.es.js +25 -0
  194. package/dist/useMediaQuery.es.js.map +1 -0
  195. package/next/plugin.js +1 -0
  196. package/package.json +4 -1
@@ -0,0 +1,1677 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import * as React from "react";
33
+ import { forwardRef, useRef, useImperativeHandle, useState, useEffect, useMemo } from "react";
34
+ import styled, { css, keyframes } from "styled-components";
35
+ import { Field as Field$1, getIn, Formik } from "formik";
36
+ import { cx } from "@emotion/css";
37
+ import { c as cssMediaRules, b as cssMargin, i as cssTextStyle, h as cssGridItem } from "./cssMediaRules.es.js";
38
+ import { q as useQuery, T as TABLE_BY_ID, s as Shapes, t as Sizes, C as Contrasts, o as colorToString, v as useFormContext, u as useIsInBuilder, w as useMutation, x as Provider, A as Alignments } from "./index.es.js";
39
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
40
+ import ColorHelper from "color";
41
+ import Button$1 from "./Button.es.js";
42
+ import { L as Link } from "./index.es3.js";
43
+ import { g as getBox } from "./box-models.es.js";
44
+ import { gql } from "@apollo/client";
45
+ function useTable(tableId) {
46
+ return useQuery(TABLE_BY_ID, {
47
+ skip: tableId == null,
48
+ variables: { id: tableId }
49
+ });
50
+ }
51
+ var _path;
52
+ function _extends$1() {
53
+ _extends$1 = Object.assign || function(target) {
54
+ for (var i = 1; i < arguments.length; i++) {
55
+ var source = arguments[i];
56
+ for (var key in source) {
57
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
58
+ target[key] = source[key];
59
+ }
60
+ }
61
+ }
62
+ return target;
63
+ };
64
+ return _extends$1.apply(this, arguments);
65
+ }
66
+ var SvgCheck12 = function SvgCheck122(props) {
67
+ return /* @__PURE__ */ React.createElement("svg", _extends$1({
68
+ width: 12,
69
+ height: 12,
70
+ viewBox: "0 0 12 12",
71
+ xmlns: "http://www.w3.org/2000/svg"
72
+ }, props), _path || (_path = /* @__PURE__ */ React.createElement("path", {
73
+ fillRule: "evenodd",
74
+ clipRule: "evenodd",
75
+ d: "M11.7071 1.79289C12.0976 2.18342 12.0976 2.81658 11.7071 3.20711L4.70711 10.2071C4.31658 10.5976 3.68342 10.5976 3.29289 10.2071L0.292893 7.20711C-0.0976311 6.81658 -0.0976311 6.18342 0.292893 5.79289C0.683417 5.40237 1.31658 5.40237 1.70711 5.79289L4 8.08579L10.2929 1.79289C10.6834 1.40237 11.3166 1.40237 11.7071 1.79289Z"
76
+ })));
77
+ };
78
+ function getSizeHeight$2(size) {
79
+ switch (size) {
80
+ case Sizes.SMALL:
81
+ return 30;
82
+ case Sizes.MEDIUM:
83
+ return 38;
84
+ case Sizes.LARGE:
85
+ return 48;
86
+ default:
87
+ throw new Error(`Invalid form size "${size}"`);
88
+ }
89
+ }
90
+ function getSizeHorizontalPadding(size) {
91
+ switch (size) {
92
+ case Sizes.SMALL:
93
+ return 8;
94
+ case Sizes.MEDIUM:
95
+ return 12;
96
+ case Sizes.LARGE:
97
+ return 16;
98
+ default:
99
+ throw new Error(`Invalid form size "${size}"`);
100
+ }
101
+ }
102
+ function getSizeVerticalPadding(size) {
103
+ switch (size) {
104
+ case Sizes.SMALL:
105
+ return 3;
106
+ case Sizes.MEDIUM:
107
+ return 7;
108
+ case Sizes.LARGE:
109
+ return 11;
110
+ default:
111
+ throw new Error(`Invalid form size "${size}"`);
112
+ }
113
+ }
114
+ function getShapeBorderRadius(shape) {
115
+ switch (shape) {
116
+ case Shapes.SQUARE:
117
+ return 0;
118
+ case Shapes.ROUNDED:
119
+ return 4;
120
+ case Shapes.PILL:
121
+ return 500;
122
+ default:
123
+ throw new Error(`Invalid form shape "${shape}"`);
124
+ }
125
+ }
126
+ function getContrastBorderColor(contrast, error) {
127
+ switch (contrast) {
128
+ case Contrasts.LIGHT:
129
+ return error ? "rgba(255, 0, 0, 0.7)" : "rgba(0, 0, 0, 0.25)";
130
+ case Contrasts.DARK:
131
+ return error ? "rgba(255, 0, 0, 0.7)" : "rgba(255, 255, 255, 0.6)";
132
+ default:
133
+ throw new Error(`Invalid form contrast "${contrast}"`);
134
+ }
135
+ }
136
+ function getContrastBackgroundColor(contrast) {
137
+ switch (contrast) {
138
+ case Contrasts.LIGHT:
139
+ return "white";
140
+ case Contrasts.DARK:
141
+ return "rgba(0, 0, 0, 0.7)";
142
+ default:
143
+ throw new Error(`Invalid form contrast "${contrast}"`);
144
+ }
145
+ }
146
+ function getContrastColor$1(contrast) {
147
+ switch (contrast) {
148
+ case Contrasts.LIGHT:
149
+ return "rgba(0, 0, 0, 0.95)";
150
+ case Contrasts.DARK:
151
+ return "white";
152
+ default:
153
+ throw new Error(`Invalid form contrast "${contrast}"`);
154
+ }
155
+ }
156
+ function getContrastPlaceholderColor(contrast) {
157
+ switch (contrast) {
158
+ case Contrasts.LIGHT:
159
+ return "rgba(0, 0, 0, 0.3)";
160
+ case Contrasts.DARK:
161
+ return "rgba(255,255,255,0.3)";
162
+ default:
163
+ throw new Error(`Invalid form contrast "${contrast}"`);
164
+ }
165
+ }
166
+ function cssField() {
167
+ return css`
168
+ display: block;
169
+ width: 100%;
170
+ outline: none;
171
+ border-width: 1px;
172
+ border-style: solid;
173
+ transition: border-color 200ms;
174
+ ${(props) => cssMediaRules([props.shape, props.size, props.contrast, props.brandColor], ([
175
+ shape = Shapes.ROUNDED,
176
+ size = Sizes.MEDIUM,
177
+ contrast = Contrasts.LIGHT,
178
+ brandColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }
179
+ ]) => css`
180
+ padding: ${getSizeVerticalPadding(size)}px ${getSizeHorizontalPadding(size)}px;
181
+ border-radius: ${getShapeBorderRadius(shape)}px;
182
+ border-color: ${getContrastBorderColor(contrast, props.error)};
183
+ color: ${getContrastColor$1(contrast)};
184
+ background-color: ${getContrastBackgroundColor(contrast)};
185
+
186
+ :focus,
187
+ :focus-within {
188
+ border-color: ${colorToString(brandColor)};
189
+ }
190
+
191
+ ::placeholder {
192
+ color: ${getContrastPlaceholderColor(contrast)};
193
+ }
194
+ `)}
195
+ `;
196
+ }
197
+ function getSizeHeight$1(size) {
198
+ switch (size) {
199
+ case Sizes.SMALL:
200
+ return 36;
201
+ case Sizes.MEDIUM:
202
+ return 42;
203
+ case Sizes.LARGE:
204
+ return 48;
205
+ default:
206
+ throw new Error(`Invalid form size "${size}"`);
207
+ }
208
+ }
209
+ const Base$2 = styled.input.withConfig({
210
+ shouldForwardProp: (prop, defaultValidator) => !["shape", "size", "contrast", "brandColor", "error"].includes(prop.toString()) && defaultValidator(prop)
211
+ })`
212
+ ${cssField()}
213
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
214
+ min-height: ${getSizeHeight$1(size)}px;
215
+ max-height: ${getSizeHeight$1(size)}px;
216
+ `)}
217
+ `;
218
+ var Input$2 = forwardRef(function Input(_a, ref) {
219
+ var _b = _a, {
220
+ error = false,
221
+ form
222
+ } = _b, restOfProps = __objRest(_b, [
223
+ "error",
224
+ "form"
225
+ ]);
226
+ const {
227
+ shape,
228
+ size,
229
+ contrast,
230
+ brandColor
231
+ } = useFormContext();
232
+ return /* @__PURE__ */ jsx(Base$2, __spreadProps(__spreadValues({}, restOfProps), {
233
+ ref,
234
+ error,
235
+ shape,
236
+ size,
237
+ contrast,
238
+ brandColor
239
+ }));
240
+ });
241
+ const Container$3 = styled.div.withConfig({
242
+ shouldForwardProp: (prop) => !["width", "margin"].includes(prop.toString())
243
+ })`
244
+ display: flex;
245
+ flex-direction: column;
246
+ ${cssMargin()};
247
+ `;
248
+ const Label$2 = styled.div`
249
+ max-width: 120px;
250
+ min-width: 60px;
251
+ height: 8px;
252
+ border-radius: 2px;
253
+ background-color: #a1a8c2;
254
+ opacity: 0.4;
255
+ margin-bottom: 8px;
256
+ `;
257
+ const Input$1 = styled.div`
258
+ min-width: 80px;
259
+ height: 32px;
260
+ border-radius: 4px;
261
+ border-width: 2px;
262
+ border-style: solid;
263
+ border-color: #a1a8c2;
264
+ opacity: 0.4;
265
+ `;
266
+ const Button = styled.div`
267
+ min-width: 140px;
268
+ height: 32px;
269
+ border-radius: 4px;
270
+ background-color: #a1a8c2;
271
+ opacity: 0.4;
272
+ `;
273
+ var Placeholder = forwardRef(function Placeholder2({
274
+ className,
275
+ margin
276
+ }, ref) {
277
+ return /* @__PURE__ */ jsxs(Container$3, {
278
+ ref,
279
+ className,
280
+ margin,
281
+ children: [/* @__PURE__ */ jsxs("div", {
282
+ style: {
283
+ display: "flex",
284
+ flexDirection: "column",
285
+ marginBottom: 16
286
+ },
287
+ children: [/* @__PURE__ */ jsx(Label$2, {}), /* @__PURE__ */ jsx(Input$1, {})]
288
+ }), /* @__PURE__ */ jsxs("div", {
289
+ style: {
290
+ display: "flex",
291
+ flexDirection: "column",
292
+ marginBottom: 16
293
+ },
294
+ children: [/* @__PURE__ */ jsx(Label$2, {}), /* @__PURE__ */ jsx(Input$1, {})]
295
+ }), /* @__PURE__ */ jsx("div", {
296
+ style: {
297
+ display: "flex",
298
+ flexDirection: "column",
299
+ justifyContent: "flex-end"
300
+ },
301
+ children: /* @__PURE__ */ jsx(Button, {})
302
+ })]
303
+ });
304
+ });
305
+ function getSizeHeight(size) {
306
+ switch (size) {
307
+ case Sizes.SMALL:
308
+ return 14;
309
+ case Sizes.MEDIUM:
310
+ return 18;
311
+ case Sizes.LARGE:
312
+ return 22;
313
+ default:
314
+ throw new Error(`Invalid form size "${size}"`);
315
+ }
316
+ }
317
+ function getContrastColor(contrast) {
318
+ switch (contrast) {
319
+ case Contrasts.LIGHT:
320
+ return "rgba(0, 0, 0, 0.8)";
321
+ case Contrasts.DARK:
322
+ return "rgba(255, 255, 255, 0.95)";
323
+ default:
324
+ throw new Error(`Invalid form contrast "${contrast}"`);
325
+ }
326
+ }
327
+ const Base$1 = styled.label.withConfig({
328
+ shouldForwardProp: (prop, defaultValidator) => !["contrast", "size", "textStyle", "textColor"].includes(prop.toString()) && defaultValidator(prop)
329
+ })`
330
+ display: block;
331
+ margin: 0 0 0.25em 0;
332
+ ${cssTextStyle()}
333
+ ${(props) => cssMediaRules([props.size, props.contrast, props.textColor], ([size = Sizes.MEDIUM, contrast = Contrasts.LIGHT, textColor]) => css`
334
+ min-height: ${getSizeHeight(size)}px;
335
+ color: ${textColor == null ? getContrastColor(contrast) : colorToString(textColor)};
336
+ `)}
337
+ `;
338
+ function Label$1(props) {
339
+ const {
340
+ contrast,
341
+ size,
342
+ labelTextStyle,
343
+ labelTextColor
344
+ } = useFormContext();
345
+ return /* @__PURE__ */ jsx(Base$1, __spreadProps(__spreadValues({}, props), {
346
+ contrast,
347
+ size,
348
+ textStyle: labelTextStyle,
349
+ textColor: labelTextColor
350
+ }));
351
+ }
352
+ var SingleLineTextTableField = forwardRef(function SingleLineTextTableField2(_c, ref) {
353
+ var _d = _c, {
354
+ id,
355
+ label = "",
356
+ name,
357
+ error,
358
+ hideLabel = false
359
+ } = _d, restOfProps = __objRest(_d, [
360
+ "id",
361
+ "label",
362
+ "name",
363
+ "error",
364
+ "hideLabel"
365
+ ]);
366
+ return /* @__PURE__ */ jsxs(Fragment, {
367
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
368
+ htmlFor: id,
369
+ children: label
370
+ }), /* @__PURE__ */ jsx(Input$2, __spreadProps(__spreadValues({}, restOfProps), {
371
+ "aria-label": label,
372
+ ref,
373
+ id,
374
+ name,
375
+ type: "text",
376
+ error: error != null
377
+ }))]
378
+ });
379
+ });
380
+ const Base = styled.textarea.withConfig({
381
+ shouldForwardProp: (prop, defaultValidator) => !["error", "shape", "size", "contrast", "brandColor"].includes(prop.toString()) && defaultValidator(prop)
382
+ })`
383
+ resize: vertical;
384
+ ${cssField()}
385
+ `;
386
+ var TextArea = forwardRef(function TextArea2(_e, ref) {
387
+ var _f = _e, {
388
+ error = false,
389
+ form
390
+ } = _f, restOfProps = __objRest(_f, [
391
+ "error",
392
+ "form"
393
+ ]);
394
+ const {
395
+ shape,
396
+ size,
397
+ contrast,
398
+ brandColor
399
+ } = useFormContext();
400
+ return /* @__PURE__ */ jsx(Base, __spreadProps(__spreadValues({}, restOfProps), {
401
+ ref,
402
+ rows: 4,
403
+ error,
404
+ shape,
405
+ size,
406
+ contrast,
407
+ brandColor
408
+ }));
409
+ });
410
+ var LongTextTableField = forwardRef(function LongTextTableField2(_g2, ref) {
411
+ var _h = _g2, {
412
+ id,
413
+ label = "",
414
+ error,
415
+ hideLabel = false
416
+ } = _h, restOfProps = __objRest(_h, [
417
+ "id",
418
+ "label",
419
+ "error",
420
+ "hideLabel"
421
+ ]);
422
+ return /* @__PURE__ */ jsxs(Fragment, {
423
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
424
+ htmlFor: id,
425
+ children: label
426
+ }), /* @__PURE__ */ jsx(TextArea, __spreadProps(__spreadValues({}, restOfProps), {
427
+ "aria-label": label,
428
+ ref,
429
+ id,
430
+ error: error != null
431
+ }))]
432
+ });
433
+ });
434
+ function getCheckmarkColor$1({
435
+ swatch: {
436
+ hue: h,
437
+ saturation: s,
438
+ lightness: l
439
+ },
440
+ alpha: a
441
+ }) {
442
+ return ColorHelper({
443
+ h,
444
+ s,
445
+ l
446
+ }).alpha(a).isLight() ? "rgba(0, 0, 0, 0.7)" : "rgba(255, 255, 255, 0.95)";
447
+ }
448
+ const Container$2 = styled.div.withConfig({
449
+ shouldForwardProp: (prop) => !["size"].includes(prop)
450
+ })`
451
+ position: relative;
452
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
453
+ height: ${getSizeHeight(size)}px;
454
+ width: ${getSizeHeight(size)}px;
455
+ `)}
456
+ `;
457
+ const FakeCheckbox = styled.div.withConfig({
458
+ shouldForwardProp: (prop) => !["contrast", "error"].includes(prop)
459
+ })`
460
+ position: absolute;
461
+ width: 100%;
462
+ height: 100%;
463
+ border-style: solid;
464
+ border-radius: 4px;
465
+ pointer-events: none;
466
+ border-width: 1px;
467
+ ${(props) => cssMediaRules([props.contrast], ([contrast = Contrasts.LIGHT]) => css`
468
+ border-color: ${getContrastBorderColor(contrast, props.error)};
469
+ background-color: ${getContrastBackgroundColor(contrast)};
470
+ `)}
471
+ `;
472
+ const HiddenCheckbox = styled.input.withConfig({
473
+ shouldForwardProp: (prop, defaultValidator) => !["size", "brandColor", "contrast", "error"].includes(prop) && defaultValidator(prop)
474
+ })`
475
+ position: absolute;
476
+ opacity: 0;
477
+ width: 100%;
478
+ height: 100%;
479
+ cursor: pointer;
480
+
481
+ &:disabled {
482
+ cursor: no-drop;
483
+
484
+ & ~ ${FakeCheckbox} {
485
+ opacity: 0.5;
486
+ }
487
+ }
488
+
489
+ &:checked ~ ${FakeCheckbox} {
490
+ ${(props) => cssMediaRules([props.brandColor], ([{
491
+ swatch = {
492
+ hue: 0,
493
+ saturation: 0,
494
+ lightness: 0
495
+ },
496
+ alpha = 1
497
+ } = {}]) => css`
498
+ background-color: ${colorToString({
499
+ swatch,
500
+ alpha
501
+ })};
502
+ `)}
503
+ border-color: transparent;
504
+
505
+ &::after {
506
+ content: '';
507
+ position: absolute;
508
+ box-sizing: content-box;
509
+ width: 25%;
510
+ height: 50%;
511
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
512
+ border-width: ${getSizeHeight(size) * 0.1}px;
513
+ border-left: 0;
514
+ border-top: 0;
515
+ `)}
516
+ border-style: solid;
517
+ ${(props) => cssMediaRules([props.brandColor], ([{
518
+ swatch = {
519
+ hue: 0,
520
+ saturation: 0,
521
+ lightness: 0
522
+ },
523
+ alpha = 1
524
+ } = {}]) => css`
525
+ border-color: ${getCheckmarkColor$1({
526
+ swatch,
527
+ alpha
528
+ })};
529
+ `)}
530
+ transform: rotate(45deg) translate3d(91%, -23%, 0);
531
+ }
532
+ }
533
+
534
+ &:not(:disabled) {
535
+ &:focus ~ ${FakeCheckbox} {
536
+ ${(props) => cssMediaRules([props.brandColor], ([brandColor = {
537
+ swatch: {
538
+ hue: 0,
539
+ saturation: 0,
540
+ lightness: 0
541
+ },
542
+ alpha: 1
543
+ }]) => css`
544
+ border-color: ${colorToString(brandColor)};
545
+ `)}
546
+ }
547
+ }
548
+
549
+ &:not(:disabled):checked {
550
+ &:focus ~ ${FakeCheckbox} {
551
+ ${(props) => cssMediaRules([props.contrast], ([contrast = Contrasts.LIGHT]) => css`
552
+ border-color: ${getContrastBorderColor(contrast, props.error)};
553
+ `)}
554
+ }
555
+ }
556
+ `;
557
+ var Checkbox = forwardRef(function Checkbox2(_i, ref) {
558
+ var _j = _i, {
559
+ error,
560
+ className,
561
+ style,
562
+ form
563
+ } = _j, restOfProps = __objRest(_j, [
564
+ "error",
565
+ "className",
566
+ "style",
567
+ "form"
568
+ ]);
569
+ const {
570
+ size,
571
+ contrast,
572
+ brandColor
573
+ } = useFormContext();
574
+ return /* @__PURE__ */ jsxs(Container$2, {
575
+ size,
576
+ children: [/* @__PURE__ */ jsx(HiddenCheckbox, __spreadProps(__spreadValues({}, restOfProps), {
577
+ type: "checkbox",
578
+ ref,
579
+ error,
580
+ size,
581
+ contrast,
582
+ brandColor
583
+ })), /* @__PURE__ */ jsx(FakeCheckbox, {
584
+ className,
585
+ error,
586
+ contrast,
587
+ style
588
+ })]
589
+ });
590
+ });
591
+ const StyledLabel$2 = styled(Label$1)`
592
+ display: flex;
593
+ align-items: center;
594
+ margin: 0;
595
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
596
+ min-height: ${getSizeHeight$1(size)}px;
597
+ max-height: ${getSizeHeight$1(size)}px;
598
+ `)}
599
+ `;
600
+ const CheckboxContainer$1 = styled.span`
601
+ margin-right: 8px;
602
+ `;
603
+ var CheckboxTableField = forwardRef(function CheckboxTableField2(_k, ref) {
604
+ var _l = _k, {
605
+ form,
606
+ id,
607
+ name,
608
+ label = "",
609
+ value = false,
610
+ error
611
+ } = _l, restOfProps = __objRest(_l, [
612
+ "form",
613
+ "id",
614
+ "name",
615
+ "label",
616
+ "value",
617
+ "error"
618
+ ]);
619
+ const {
620
+ size
621
+ } = useFormContext();
622
+ function handleChange(event) {
623
+ form.setFieldValue(name, event.currentTarget.checked);
624
+ }
625
+ return /* @__PURE__ */ jsxs(StyledLabel$2, {
626
+ htmlFor: id,
627
+ size,
628
+ children: [/* @__PURE__ */ jsx(CheckboxContainer$1, {
629
+ children: /* @__PURE__ */ jsx(Checkbox, __spreadProps(__spreadValues({}, restOfProps), {
630
+ "aria-label": label,
631
+ checked: value,
632
+ onChange: handleChange,
633
+ ref,
634
+ id,
635
+ error: error != null
636
+ }))
637
+ }), label]
638
+ });
639
+ });
640
+ const MainLabel = styled(Label$1)`
641
+ margin: 0 0 4px 0;
642
+ `;
643
+ const StyledLabel$1 = styled(Label$1)`
644
+ display: flex;
645
+ align-items: center;
646
+ margin: 8px 0;
647
+
648
+ &:last-of-type {
649
+ margin-bottom: 0;
650
+ }
651
+ `;
652
+ const CheckboxContainer = styled.span`
653
+ margin-right: 8px;
654
+ `;
655
+ var MultipleSelectTableField = forwardRef(function MultipleSelectTableField2(_m, ref) {
656
+ var _n = _m, {
657
+ tableColumn,
658
+ label = "",
659
+ required,
660
+ value = [],
661
+ onChange,
662
+ hideLabel = false
663
+ } = _n, restOfProps = __objRest(_n, [
664
+ "tableColumn",
665
+ "label",
666
+ "required",
667
+ "value",
668
+ "onChange",
669
+ "hideLabel"
670
+ ]);
671
+ const handle = useRef({
672
+ validity: {
673
+ valueMissing: required === true && value.length === 0,
674
+ typeMismatch: false
675
+ }
676
+ });
677
+ useImperativeHandle(ref, () => handle.current, []);
678
+ function handleChange(event) {
679
+ handle.current.validity.valueMissing = required === true && !event.currentTarget.checked && value.filter((v) => v !== event.currentTarget.value).length === 0;
680
+ onChange(event);
681
+ }
682
+ return /* @__PURE__ */ jsxs("div", {
683
+ children: [!hideLabel && /* @__PURE__ */ jsx(MainLabel, {
684
+ children: label
685
+ }), tableColumn.options.map((option) => /* @__PURE__ */ jsxs(StyledLabel$1, {
686
+ htmlFor: option.id,
687
+ children: [/* @__PURE__ */ jsx(CheckboxContainer, {
688
+ children: /* @__PURE__ */ jsx(Checkbox, __spreadProps(__spreadValues({}, restOfProps), {
689
+ "aria-label": label,
690
+ onChange: handleChange,
691
+ checked: value.includes(option.name),
692
+ id: option.id,
693
+ value: option.name
694
+ }))
695
+ }), option.name]
696
+ }, option.id))]
697
+ });
698
+ });
699
+ function getCheckmarkColor({
700
+ swatch: {
701
+ hue: h,
702
+ saturation: s,
703
+ lightness: l
704
+ } = {
705
+ hue: 0,
706
+ saturation: 0,
707
+ lightness: 0
708
+ },
709
+ alpha: a
710
+ }) {
711
+ return ColorHelper({
712
+ h,
713
+ s,
714
+ l
715
+ }).alpha(a).isLight() ? "rgba(0, 0, 0, 0.7)" : "rgba(255, 255, 255, 0.95)";
716
+ }
717
+ const Container$1 = styled.div.withConfig({
718
+ shouldForwardProp: (prop) => !["size"].includes(prop.toString())
719
+ })`
720
+ position: relative;
721
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
722
+ height: ${getSizeHeight(size)}px;
723
+ width: ${getSizeHeight(size)}px;
724
+ `)}
725
+ `;
726
+ const FakeRadioButton = styled.div.withConfig({
727
+ shouldForwardProp: (prop) => !["contrast", "error"].includes(prop.toString())
728
+ })`
729
+ position: absolute;
730
+ width: 100%;
731
+ height: 100%;
732
+ border-style: solid;
733
+ border-radius: 50%;
734
+ pointer-events: none;
735
+ border-width: 1px;
736
+ ${(props) => cssMediaRules([props.contrast], ([contrast = Contrasts.LIGHT]) => css`
737
+ border-color: ${getContrastBorderColor(contrast, props.error)};
738
+ background-color: ${getContrastBackgroundColor(contrast)};
739
+ `)}
740
+ `;
741
+ const HiddenRadioButton = styled.input.withConfig({
742
+ shouldForwardProp: (prop) => !["brandColor", "contrast", "error"].includes(prop.toString())
743
+ }).attrs({
744
+ type: "radio"
745
+ })`
746
+ position: absolute;
747
+ opacity: 0;
748
+ width: 100%;
749
+ height: 100%;
750
+ cursor: pointer;
751
+
752
+ &:disabled {
753
+ cursor: no-drop;
754
+
755
+ & ~ ${FakeRadioButton} {
756
+ opacity: 0.5;
757
+ }
758
+ }
759
+
760
+ &:checked ~ ${FakeRadioButton} {
761
+ ${(props) => cssMediaRules([props.brandColor], ([brandColor = {
762
+ swatch: {
763
+ hue: 0,
764
+ saturation: 0,
765
+ lightness: 0
766
+ },
767
+ alpha: 1
768
+ }]) => css`
769
+ background-color: ${colorToString(brandColor)};
770
+ `)}
771
+ border-color: transparent;
772
+
773
+ &::after {
774
+ content: '';
775
+ position: absolute;
776
+ box-sizing: content-box;
777
+ top: 50%;
778
+ left: 50%;
779
+ width: 50%;
780
+ height: 50%;
781
+ border-radius: 50%;
782
+ transform: translate(-50%, -50%);
783
+ ${(props) => cssMediaRules([props.brandColor], ([brandColor = {
784
+ swatch: {
785
+ hue: 0,
786
+ saturation: 0,
787
+ lightness: 0
788
+ },
789
+ alpha: 1
790
+ }]) => css`
791
+ background-color: ${getCheckmarkColor(brandColor)};
792
+ `)}
793
+ }
794
+ }
795
+
796
+ &:not(:disabled) {
797
+ &:focus ~ ${FakeRadioButton} {
798
+ ${(props) => cssMediaRules([props.brandColor], ([brandColor = {
799
+ swatch: {
800
+ hue: 0,
801
+ saturation: 0,
802
+ lightness: 0
803
+ },
804
+ alpha: 1
805
+ }]) => css`
806
+ border-color: ${colorToString(brandColor)};
807
+ `)}
808
+ }
809
+ }
810
+
811
+ &:not(:disabled):checked {
812
+ &:focus ~ ${FakeRadioButton} {
813
+ ${(props) => cssMediaRules([props.contrast], ([contrast = Contrasts.LIGHT]) => css`
814
+ border-color: ${getContrastBorderColor(contrast, props.error)};
815
+ `)}
816
+ }
817
+ }
818
+ `;
819
+ var RadioButton = forwardRef(function RadioButton2(_o, ref) {
820
+ var _p = _o, {
821
+ error,
822
+ className,
823
+ style,
824
+ form
825
+ } = _p, restOfProps = __objRest(_p, [
826
+ "error",
827
+ "className",
828
+ "style",
829
+ "form"
830
+ ]);
831
+ const {
832
+ size,
833
+ contrast,
834
+ brandColor
835
+ } = useFormContext();
836
+ return /* @__PURE__ */ jsxs(Container$1, {
837
+ size,
838
+ children: [/* @__PURE__ */ jsx(HiddenRadioButton, __spreadProps(__spreadValues({}, restOfProps), {
839
+ ref,
840
+ error,
841
+ contrast,
842
+ brandColor
843
+ })), /* @__PURE__ */ jsx(FakeRadioButton, {
844
+ className,
845
+ error,
846
+ contrast,
847
+ style
848
+ })]
849
+ });
850
+ });
851
+ const StyledLabel = styled(Label$1)`
852
+ display: flex;
853
+ align-items: center;
854
+ margin: 8px 0;
855
+
856
+ &:last-of-type {
857
+ margin-bottom: 0;
858
+ }
859
+ `;
860
+ const RadioButtonContainer = styled.span`
861
+ margin-right: 8px;
862
+ `;
863
+ var TableColumnRadioButtonGroup = forwardRef(function TableColumnRadioButtonGroup2(_q, ref) {
864
+ var _r = _q, {
865
+ tableColumn,
866
+ label = "",
867
+ value = "",
868
+ required = false,
869
+ hideLabel = false,
870
+ onChange
871
+ } = _r, restOfProps = __objRest(_r, [
872
+ "tableColumn",
873
+ "label",
874
+ "value",
875
+ "required",
876
+ "hideLabel",
877
+ "onChange"
878
+ ]);
879
+ const handle = useRef({
880
+ validity: {
881
+ valueMissing: required === true && value === "",
882
+ typeMismatch: false
883
+ }
884
+ });
885
+ useImperativeHandle(ref, () => handle.current, []);
886
+ function handleChange(event) {
887
+ handle.current.validity.valueMissing = required === true && !event.currentTarget.checked;
888
+ onChange(event);
889
+ }
890
+ return /* @__PURE__ */ jsxs("div", {
891
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
892
+ as: "p",
893
+ children: label
894
+ }), tableColumn.options.map((option) => /* @__PURE__ */ jsxs(StyledLabel, {
895
+ htmlFor: option.id,
896
+ "aria-label": label,
897
+ children: [/* @__PURE__ */ jsx(RadioButtonContainer, {
898
+ children: /* @__PURE__ */ jsx(RadioButton, __spreadProps(__spreadValues({}, restOfProps), {
899
+ onChange: handleChange,
900
+ checked: value === option.name,
901
+ id: option.id,
902
+ value: option.name
903
+ }))
904
+ }), option.name]
905
+ }, option.id))]
906
+ });
907
+ });
908
+ const Container = styled.div.withConfig({
909
+ shouldForwardProp: (prop) => !["error", "shape", "size", "contrast", "brandColor"].includes(prop.toString())
910
+ })`
911
+ ${cssField()}
912
+ display: flex;
913
+ align-items: center;
914
+ position: relative;
915
+ user-select: none;
916
+ border-color: #f19eb9;
917
+
918
+ &:focus,
919
+ &:focus-within {
920
+ border-color: #e54e7f;
921
+ }
922
+
923
+ ${(props) => cssMediaRules([props.size, props.contrast], ([size = Sizes.MEDIUM, contrast = Contrasts.LIGHT]) => css`
924
+ min-height: ${getSizeHeight$2(size)}px;
925
+ max-height: ${getSizeHeight$2(size)}px;
926
+
927
+ &::after {
928
+ content: '';
929
+ position: absolute;
930
+ right: ${getSizeHorizontalPadding(size)}px;
931
+ top: 50%;
932
+ transform: translate3d(0, -25%, 0);
933
+ border: solid 0.35em transparent;
934
+ border-top-color: ${getContrastColor$1(contrast)};
935
+ }
936
+ `)}
937
+ `;
938
+ const Select = styled.select`
939
+ appearance: none;
940
+ position: absolute;
941
+ top: 0;
942
+ left: 0;
943
+ opacity: 0;
944
+ width: 100%;
945
+ height: 100%;
946
+ `;
947
+ var TableColumnSingleSelect = forwardRef(function TableColumnSingleSelect2(_s, ref) {
948
+ var _t = _s, {
949
+ id,
950
+ tableColumn,
951
+ value = "",
952
+ label = "",
953
+ error = false,
954
+ hideLabel = false,
955
+ form
956
+ } = _t, restOfProps = __objRest(_t, [
957
+ "id",
958
+ "tableColumn",
959
+ "value",
960
+ "label",
961
+ "error",
962
+ "hideLabel",
963
+ "form"
964
+ ]);
965
+ const {
966
+ shape,
967
+ size,
968
+ contrast,
969
+ brandColor
970
+ } = useFormContext();
971
+ return /* @__PURE__ */ jsxs(Fragment, {
972
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
973
+ htmlFor: id,
974
+ children: label
975
+ }), /* @__PURE__ */ jsxs(Container, {
976
+ error,
977
+ shape,
978
+ size,
979
+ contrast,
980
+ brandColor,
981
+ children: [/* @__PURE__ */ jsx("span", {
982
+ children: value === "" ? "-" : value
983
+ }), /* @__PURE__ */ jsxs(Select, __spreadProps(__spreadValues({}, restOfProps), {
984
+ "aria-label": label,
985
+ ref,
986
+ id,
987
+ value,
988
+ children: [/* @__PURE__ */ jsx("option", {
989
+ value: "",
990
+ children: "-"
991
+ }), tableColumn.options.map((option) => /* @__PURE__ */ jsx("option", {
992
+ value: option.name,
993
+ children: option.name
994
+ }, option.id))]
995
+ }))]
996
+ })]
997
+ });
998
+ });
999
+ var SingleSelectTableField = forwardRef(function SingleSelectTableField2(_u, ref) {
1000
+ var _v = _u, {
1001
+ type
1002
+ } = _v, restOfProps = __objRest(_v, [
1003
+ "type"
1004
+ ]);
1005
+ return type === "select" ? /* @__PURE__ */ jsx(TableColumnSingleSelect, __spreadProps(__spreadValues({}, restOfProps), {
1006
+ ref
1007
+ })) : /* @__PURE__ */ jsx(TableColumnRadioButtonGroup, __spreadProps(__spreadValues({}, restOfProps), {
1008
+ ref
1009
+ }));
1010
+ });
1011
+ var PhoneNumberTableField = forwardRef(function PhoneNumberTableField2(_w, ref) {
1012
+ var _x = _w, {
1013
+ id,
1014
+ label = "",
1015
+ name,
1016
+ error,
1017
+ hideLabel = false
1018
+ } = _x, restOfProps = __objRest(_x, [
1019
+ "id",
1020
+ "label",
1021
+ "name",
1022
+ "error",
1023
+ "hideLabel"
1024
+ ]);
1025
+ return /* @__PURE__ */ jsxs(Fragment, {
1026
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
1027
+ htmlFor: id,
1028
+ children: label
1029
+ }), /* @__PURE__ */ jsx(Input$2, __spreadProps(__spreadValues({}, restOfProps), {
1030
+ "aria-label": label,
1031
+ ref,
1032
+ id,
1033
+ name,
1034
+ type: "tel",
1035
+ error: error != null
1036
+ }))]
1037
+ });
1038
+ });
1039
+ var EmailTableField = forwardRef(function EmailTableField2(_y, ref) {
1040
+ var _z = _y, {
1041
+ id,
1042
+ label = "",
1043
+ name,
1044
+ error,
1045
+ hideLabel = false
1046
+ } = _z, restOfProps = __objRest(_z, [
1047
+ "id",
1048
+ "label",
1049
+ "name",
1050
+ "error",
1051
+ "hideLabel"
1052
+ ]);
1053
+ return /* @__PURE__ */ jsxs(Fragment, {
1054
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
1055
+ htmlFor: id,
1056
+ children: label
1057
+ }), /* @__PURE__ */ jsx(Input$2, __spreadProps(__spreadValues({}, restOfProps), {
1058
+ "aria-label": label,
1059
+ ref,
1060
+ id,
1061
+ name,
1062
+ type: "email",
1063
+ error: error != null
1064
+ }))]
1065
+ });
1066
+ });
1067
+ var URLTableField = forwardRef(function URLTableField2(_A, ref) {
1068
+ var _B = _A, {
1069
+ id,
1070
+ label = "",
1071
+ name,
1072
+ error,
1073
+ hideLabel = false
1074
+ } = _B, restOfProps = __objRest(_B, [
1075
+ "id",
1076
+ "label",
1077
+ "name",
1078
+ "error",
1079
+ "hideLabel"
1080
+ ]);
1081
+ return /* @__PURE__ */ jsxs(Fragment, {
1082
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
1083
+ htmlFor: id,
1084
+ children: label
1085
+ }), /* @__PURE__ */ jsx(Input$2, __spreadProps(__spreadValues({}, restOfProps), {
1086
+ "aria-label": label,
1087
+ ref,
1088
+ id,
1089
+ name,
1090
+ type: "url",
1091
+ error: error != null
1092
+ }))]
1093
+ });
1094
+ });
1095
+ var NumberTableField = forwardRef(function NumberTableField2(_C, ref) {
1096
+ var _D = _C, {
1097
+ id,
1098
+ label = "",
1099
+ name,
1100
+ error,
1101
+ hideLabel = false
1102
+ } = _D, restOfProps = __objRest(_D, [
1103
+ "id",
1104
+ "label",
1105
+ "name",
1106
+ "error",
1107
+ "hideLabel"
1108
+ ]);
1109
+ return /* @__PURE__ */ jsxs(Fragment, {
1110
+ children: [!hideLabel && /* @__PURE__ */ jsx(Label$1, {
1111
+ htmlFor: id,
1112
+ children: label
1113
+ }), /* @__PURE__ */ jsx(Input$2, __spreadProps(__spreadValues({}, restOfProps), {
1114
+ "aria-label": label,
1115
+ ref,
1116
+ id,
1117
+ name,
1118
+ type: "number",
1119
+ error: error != null
1120
+ }))]
1121
+ });
1122
+ });
1123
+ const Label = styled.div.withConfig({
1124
+ shouldForwardProp: (prop) => !["size"].includes(prop.toString())
1125
+ })`
1126
+ display: block;
1127
+ max-width: 120px;
1128
+ min-width: 60px;
1129
+ border-radius: 2px;
1130
+ background-color: #5f49f4;
1131
+ opacity: 0.4;
1132
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
1133
+ margin: calc(0.25 * ${getSizeHeight(size)}px + 2px) 0;
1134
+ min-height: ${0.5 * getSizeHeight(size)}px;
1135
+ max-height: ${0.5 * getSizeHeight(size)}px;
1136
+ `)}
1137
+ `;
1138
+ const Input2 = styled.div.withConfig({
1139
+ shouldForwardProp: (prop) => !["shape", "size"].includes(prop.toString())
1140
+ })`
1141
+ display: block;
1142
+ width: 100%;
1143
+ border-width: 2px;
1144
+ border-style: solid;
1145
+ border-color: #5f49f4;
1146
+ opacity: 0.4;
1147
+ ${(props) => cssMediaRules([props.shape, props.size], ([shape = Shapes.ROUNDED, size = Sizes.MEDIUM]) => css`
1148
+ min-height: ${getSizeHeight$1(size)}px;
1149
+ max-height: ${getSizeHeight$1(size)}px;
1150
+ border-radius: ${getShapeBorderRadius(shape)}px;
1151
+ `)}
1152
+ `;
1153
+ function PlaceholderTableField() {
1154
+ const {
1155
+ size,
1156
+ shape
1157
+ } = useFormContext();
1158
+ return /* @__PURE__ */ jsxs(Fragment, {
1159
+ children: [/* @__PURE__ */ jsx(Label, {
1160
+ size
1161
+ }), /* @__PURE__ */ jsx(Input2, {
1162
+ shape,
1163
+ size
1164
+ })]
1165
+ });
1166
+ }
1167
+ function getTypeMismatchErrorMessage(tableColumn, label) {
1168
+ switch ((tableColumn || {}).__typename) {
1169
+ case "PhoneNumberTableColumn":
1170
+ return `${label} field must be a valid phone number.`;
1171
+ case "EmailTableColumn":
1172
+ return `${label} field must be a valid email.`;
1173
+ case "URLTableColumn":
1174
+ return `${label} field must be a valid URL.`;
1175
+ case "NumberTableColumn":
1176
+ return `${label} field must be a valid number.`;
1177
+ case "SingleLineTextTableColumn":
1178
+ case "LongTextTableColumn":
1179
+ case "CheckboxTableColumn":
1180
+ default:
1181
+ return `${label} field is invalid.`;
1182
+ }
1183
+ }
1184
+ function getTableColumnField(tableColumn) {
1185
+ switch ((tableColumn || {}).__typename) {
1186
+ case "SingleLineTextTableColumn":
1187
+ return SingleLineTextTableField;
1188
+ case "LongTextTableColumn":
1189
+ return LongTextTableField;
1190
+ case "CheckboxTableColumn":
1191
+ return CheckboxTableField;
1192
+ case "MultipleSelectTableColumn":
1193
+ return MultipleSelectTableField;
1194
+ case "SingleSelectTableColumn":
1195
+ return SingleSelectTableField;
1196
+ case "PhoneNumberTableColumn":
1197
+ return PhoneNumberTableField;
1198
+ case "EmailTableColumn":
1199
+ return EmailTableField;
1200
+ case "URLTableColumn":
1201
+ return URLTableField;
1202
+ case "NumberTableColumn":
1203
+ return NumberTableField;
1204
+ default:
1205
+ return SingleLineTextTableField;
1206
+ }
1207
+ }
1208
+ function Field({
1209
+ tableColumn,
1210
+ tableFormField: {
1211
+ id,
1212
+ label = "",
1213
+ placeholder,
1214
+ required = false,
1215
+ hidden = false,
1216
+ type = "radio",
1217
+ hideLabel = false
1218
+ }
1219
+ }) {
1220
+ const TableColumnField = getTableColumnField(tableColumn);
1221
+ const input = useRef(null);
1222
+ if (!tableColumn)
1223
+ return /* @__PURE__ */ jsx(PlaceholderTableField, {});
1224
+ function validate() {
1225
+ let errorMessage;
1226
+ if (input.current) {
1227
+ const {
1228
+ validity = {}
1229
+ } = input.current;
1230
+ if (validity.valueMissing)
1231
+ errorMessage = `${label} is required.`;
1232
+ if (validity.typeMismatch)
1233
+ errorMessage = getTypeMismatchErrorMessage(tableColumn, label);
1234
+ }
1235
+ return errorMessage;
1236
+ }
1237
+ return /* @__PURE__ */ jsx(Field$1, {
1238
+ name: tableColumn.name,
1239
+ validate,
1240
+ children: ({
1241
+ field,
1242
+ form
1243
+ }) => hidden ? /* @__PURE__ */ jsx("input", __spreadProps(__spreadValues({}, field), {
1244
+ ref: input,
1245
+ type: "hidden"
1246
+ })) : /* @__PURE__ */ jsx(TableColumnField, __spreadProps(__spreadValues({}, field), {
1247
+ type,
1248
+ form,
1249
+ tableColumn,
1250
+ ref: input,
1251
+ id,
1252
+ error: getIn(form.touched, field.name) && getIn(form.errors, field.name),
1253
+ label,
1254
+ placeholder,
1255
+ required,
1256
+ hideLabel
1257
+ }))
1258
+ });
1259
+ }
1260
+ var _g;
1261
+ function _extends() {
1262
+ _extends = Object.assign || function(target) {
1263
+ for (var i = 1; i < arguments.length; i++) {
1264
+ var source = arguments[i];
1265
+ for (var key in source) {
1266
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
1267
+ target[key] = source[key];
1268
+ }
1269
+ }
1270
+ }
1271
+ return target;
1272
+ };
1273
+ return _extends.apply(this, arguments);
1274
+ }
1275
+ var SvgSpinner20 = function SvgSpinner202(props) {
1276
+ return /* @__PURE__ */ React.createElement("svg", _extends({
1277
+ xmlns: "http://www.w3.org/2000/svg",
1278
+ width: 20,
1279
+ height: 20
1280
+ }, props), _g || (_g = /* @__PURE__ */ React.createElement("g", {
1281
+ fill: "none",
1282
+ strokeWidth: 2,
1283
+ transform: "translate(1 1)"
1284
+ }, /* @__PURE__ */ React.createElement("circle", {
1285
+ stroke: "currentColor",
1286
+ cx: 9,
1287
+ cy: 9,
1288
+ r: 9,
1289
+ strokeOpacity: 0.4
1290
+ }), /* @__PURE__ */ React.createElement("path", {
1291
+ strokeLinecap: "round",
1292
+ d: "M9 18A9 9 0 0 0 9 0"
1293
+ }))));
1294
+ };
1295
+ const spin = keyframes`
1296
+ from {
1297
+ transform: rotate(0deg);
1298
+ }
1299
+ to {
1300
+ transform: rotate(360deg);
1301
+ }
1302
+ `;
1303
+ const Icon = styled(SvgSpinner20)`
1304
+ display: inline-flex;
1305
+ animation: ${spin} 1s linear infinite;
1306
+ stroke: currentColor;
1307
+ `;
1308
+ function Spinner() {
1309
+ return /* @__PURE__ */ jsx(Icon, {});
1310
+ }
1311
+ function useTableFormFieldRefs(propController, { fieldsCount }) {
1312
+ const [container, setContainer] = useState(null);
1313
+ const [items, setItems] = useState(Array(fieldsCount + 1).fill(null));
1314
+ const isInBuilder = useIsInBuilder();
1315
+ useEffect(() => {
1316
+ if (!isInBuilder)
1317
+ return;
1318
+ let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
1319
+ return () => {
1320
+ cancelAnimationFrame(animationFrameHandle);
1321
+ };
1322
+ function handleAnimationFrameRequest() {
1323
+ if (propController == null)
1324
+ return;
1325
+ if (container != null)
1326
+ propController.tableFormLayoutChange({ layout: getBox(container) });
1327
+ items.map((item, index) => {
1328
+ if (item == null)
1329
+ return;
1330
+ propController.tableFormFieldLayoutChange({ index, layout: getBox(item) });
1331
+ });
1332
+ animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
1333
+ }
1334
+ }, [propController, container, items, isInBuilder]);
1335
+ const itemRefs = useMemo(() => Array.from({ length: fieldsCount + 1 }).map((_, index) => (item) => {
1336
+ setItems((is) => [...is.slice(0, index), item, ...is.slice(index + 1)]);
1337
+ }), [fieldsCount, setItems]);
1338
+ return { container: setContainer, items: itemRefs };
1339
+ }
1340
+ const LOCAL_STORAGE_NAMESPACE = "@@makeswift/components/form";
1341
+ function getSizeFontSize(size) {
1342
+ switch (size) {
1343
+ case Sizes.SMALL:
1344
+ return 12;
1345
+ case Sizes.MEDIUM:
1346
+ return 14;
1347
+ case Sizes.LARGE:
1348
+ return 18;
1349
+ default:
1350
+ throw new Error(`Invalid form size "${size}"`);
1351
+ }
1352
+ }
1353
+ const GridForm = styled.form.withConfig({
1354
+ shouldForwardProp: (prop) => !["size", "width", "margin"].includes(prop)
1355
+ })`
1356
+ display: flex;
1357
+ flex-wrap: wrap;
1358
+ width: 100%;
1359
+ ${(props) => cssMediaRules([props.size], ([size = Sizes.MEDIUM]) => css`
1360
+ font-size: ${getSizeFontSize(size)}px;
1361
+ `)}
1362
+ ${cssMargin()}
1363
+ `;
1364
+ const GridItem = styled.div.withConfig({
1365
+ shouldForwardProp: (prop) => !["grid", "index", "rowGap", "columnGap"].includes(prop)
1366
+ })`
1367
+ align-self: flex-end;
1368
+ flex-direction: column;
1369
+ ${cssGridItem()}
1370
+ `;
1371
+ function getAlignmentMargin(alignment) {
1372
+ switch (alignment) {
1373
+ case Alignments.LEFT:
1374
+ return "0 auto 0 0";
1375
+ case Alignments.RIGHT:
1376
+ return "0 0 0 auto";
1377
+ default:
1378
+ return "0 auto";
1379
+ }
1380
+ }
1381
+ const StyledButton = styled((props) => /* @__PURE__ */ jsx(Button$1, __spreadProps(__spreadValues({}, props), {
1382
+ as: "button"
1383
+ }))).withConfig({
1384
+ shouldForwardProp: (prop) => !["alignment"].includes(prop.toString())
1385
+ })`
1386
+ display: flex;
1387
+ align-items: center;
1388
+ justify-content: center;
1389
+ ${(props) => cssMediaRules([props.size, props.alignment], ([size = Sizes.MEDIUM, alignment = Alignments.CENTER]) => css`
1390
+ min-height: ${getSizeHeight$1(size)}px;
1391
+ max-height: ${getSizeHeight$1(size)}px;
1392
+ margin: ${getAlignmentMargin(alignment)};
1393
+ padding-top: 0;
1394
+ padding-bottom: 0;
1395
+ `)}
1396
+ `;
1397
+ const ErrorContainer = styled.div`
1398
+ padding: 8px 16px;
1399
+ background-color: #f19eb9;
1400
+ border-radius: 4px;
1401
+ margin-top: 16px;
1402
+ `;
1403
+ const IconContainer = styled.div`
1404
+ fill: currentColor;
1405
+ `;
1406
+ const ErrorMessage = styled.p`
1407
+ font-size: 12px;
1408
+ margin: 8px 0;
1409
+ color: rgba(127, 0, 0, 0.95);
1410
+ `;
1411
+ function getTableColumnDefaultValue(tableColumn) {
1412
+ switch (tableColumn.__typename) {
1413
+ case "CheckboxTableColumn":
1414
+ return false;
1415
+ case "MultipleSelectTableColumn":
1416
+ return [];
1417
+ case "SingleLineTextTableColumn":
1418
+ case "LongTextTableColumn":
1419
+ case "SingleSelectTableColumn":
1420
+ case "PhoneNumberTableColumn":
1421
+ case "EmailTableColumn":
1422
+ case "URLTableColumn":
1423
+ case "NumberTableColumn":
1424
+ default:
1425
+ return "";
1426
+ }
1427
+ }
1428
+ const CREATE_TABLE_RECORD = gql`
1429
+ mutation CreateTableRecord($input: CreateTableRecordInput!) {
1430
+ createTableRecord(input: $input) {
1431
+ tableRecord {
1432
+ id
1433
+ }
1434
+ }
1435
+ }
1436
+ `;
1437
+ const Form = forwardRef(function Form2({
1438
+ id,
1439
+ tableId,
1440
+ fields: fieldsProp,
1441
+ submitLabel = "Submit",
1442
+ submitLink,
1443
+ shape,
1444
+ size,
1445
+ contrast,
1446
+ brandColor,
1447
+ gap,
1448
+ width,
1449
+ margin,
1450
+ submitTextStyle,
1451
+ submitVariant,
1452
+ submitTextColor,
1453
+ submitWidth,
1454
+ submitAlignment,
1455
+ labelTextStyle,
1456
+ labelTextColor
1457
+ }, ref) {
1458
+ const fields = useMemo(() => {
1459
+ var _a;
1460
+ return (_a = fieldsProp == null ? void 0 : fieldsProp.fields) != null ? _a : [];
1461
+ }, [fieldsProp]);
1462
+ const grid = useMemo(() => {
1463
+ var _a;
1464
+ return (_a = fieldsProp == null ? void 0 : fieldsProp.grid) != null ? _a : [];
1465
+ }, [fieldsProp]);
1466
+ const {
1467
+ data: {
1468
+ table
1469
+ } = {}
1470
+ } = useTable(tableId);
1471
+ const [createTableRecord] = useMutation(CREATE_TABLE_RECORD);
1472
+ const [refEl, setRefEl] = useState(null);
1473
+ const [propControllers, setPropControllers] = useState(null);
1474
+ const [initialValues, setInitialValues] = useState(() => fields.reduce((acc, formField) => {
1475
+ const tableColumn = table && table.columns.find((field) => field.id === formField.tableColumnId);
1476
+ const defaultValue = formField ? formField.defaultValue : null;
1477
+ if (tableColumn) {
1478
+ acc[tableColumn.name] = defaultValue == null ? getTableColumnDefaultValue(tableColumn) : defaultValue;
1479
+ }
1480
+ return acc;
1481
+ }, {}));
1482
+ const controller = propControllers == null ? void 0 : propControllers.fields;
1483
+ const {
1484
+ container,
1485
+ items
1486
+ } = useTableFormFieldRefs(controller, {
1487
+ fieldsCount: fields.length
1488
+ });
1489
+ const [isDone, setIsDone] = useState(false);
1490
+ const linkRef = useRef(null);
1491
+ useImperativeHandle(ref, () => ({
1492
+ getBoxModel() {
1493
+ return refEl instanceof Element ? getBox(refEl) : null;
1494
+ },
1495
+ setPropControllers
1496
+ }), [refEl, setPropControllers]);
1497
+ useEffect(() => {
1498
+ container(refEl);
1499
+ }, [container, refEl]);
1500
+ useEffect(() => {
1501
+ if (!isDone)
1502
+ return;
1503
+ let timeoutId = setTimeout(() => setIsDone(false), 2500);
1504
+ return () => clearTimeout(timeoutId);
1505
+ }, [isDone]);
1506
+ function getTableColumn({
1507
+ tableColumnId
1508
+ }) {
1509
+ return table && table.columns.find((field) => tableColumnId === field.id);
1510
+ }
1511
+ async function handleSubmit(values, {
1512
+ setSubmitting,
1513
+ resetForm,
1514
+ setStatus
1515
+ }) {
1516
+ if (table) {
1517
+ const columns = [];
1518
+ fields.forEach((field) => {
1519
+ const tableColumn = getTableColumn(field);
1520
+ if (tableColumn) {
1521
+ const data = values[tableColumn.name];
1522
+ if (data) {
1523
+ columns.push({
1524
+ columnId: field.tableColumnId,
1525
+ data
1526
+ });
1527
+ if (field.autofill) {
1528
+ localStorage.setItem(`${LOCAL_STORAGE_NAMESPACE}/${tableColumn.name}`, JSON.stringify(data));
1529
+ }
1530
+ }
1531
+ }
1532
+ });
1533
+ try {
1534
+ await createTableRecord({
1535
+ variables: {
1536
+ input: {
1537
+ data: {
1538
+ tableId: table.id,
1539
+ columns
1540
+ }
1541
+ }
1542
+ }
1543
+ });
1544
+ setIsDone(true);
1545
+ setInitialValues((prev) => fields.reduce((acc, field) => {
1546
+ const tableColumn = getTableColumn(field);
1547
+ if (tableColumn) {
1548
+ const data = values[tableColumn.name];
1549
+ if (data && field.autofill)
1550
+ return __spreadProps(__spreadValues({}, acc), {
1551
+ [tableColumn.name]: data
1552
+ });
1553
+ }
1554
+ return acc;
1555
+ }, __spreadValues({}, prev)));
1556
+ resetForm();
1557
+ if (linkRef.current != null)
1558
+ linkRef.current.click();
1559
+ } catch (error) {
1560
+ setStatus({
1561
+ error: "An unexpected error has occurred, please try again later"
1562
+ });
1563
+ } finally {
1564
+ setSubmitting(false);
1565
+ }
1566
+ }
1567
+ }
1568
+ useEffect(() => {
1569
+ setInitialValues((prev) => fields.reduce((acc, formField) => {
1570
+ const tableColumn = table && table.columns.find((field) => field.id === formField.tableColumnId);
1571
+ if (tableColumn && formField.autofill) {
1572
+ const storedValue = localStorage.getItem(`${LOCAL_STORAGE_NAMESPACE}/${tableColumn.name}`);
1573
+ if (storedValue) {
1574
+ try {
1575
+ acc[tableColumn.name] = JSON.parse(storedValue);
1576
+ } catch (e) {
1577
+ }
1578
+ }
1579
+ }
1580
+ return acc;
1581
+ }, __spreadValues({}, prev)));
1582
+ }, [fields, table]);
1583
+ return /* @__PURE__ */ jsx(Provider, {
1584
+ value: {
1585
+ shape,
1586
+ size,
1587
+ contrast,
1588
+ brandColor,
1589
+ labelTextStyle,
1590
+ labelTextColor
1591
+ },
1592
+ children: tableId == null ? /* @__PURE__ */ jsx(Placeholder, {
1593
+ ref: setRefEl,
1594
+ className: cx(width),
1595
+ margin
1596
+ }) : /* @__PURE__ */ jsx(Fragment, {
1597
+ children: /* @__PURE__ */ jsx(Formik, {
1598
+ onSubmit: handleSubmit,
1599
+ initialValues,
1600
+ initialStatus: {
1601
+ error: null
1602
+ },
1603
+ enableReinitialize: true,
1604
+ children: (formik) => {
1605
+ const error = formik.status && formik.status.error;
1606
+ const errors = fields.map((field) => {
1607
+ const tableColumn = getTableColumn(field);
1608
+ return tableColumn && getIn(formik.touched, tableColumn.name) && getIn(formik.errors, tableColumn.name);
1609
+ }).filter((message) => typeof message === "string");
1610
+ return /* @__PURE__ */ jsxs(Fragment, {
1611
+ children: [/* @__PURE__ */ jsxs(GridForm, {
1612
+ ref: setRefEl,
1613
+ id,
1614
+ className: cx(width),
1615
+ margin,
1616
+ size,
1617
+ onSubmit: formik.handleSubmit,
1618
+ onReset: formik.handleReset,
1619
+ noValidate: true,
1620
+ children: [fields.map((field, index) => {
1621
+ const tableColumn = getTableColumn(field);
1622
+ return /* @__PURE__ */ jsx(GridItem, {
1623
+ ref: items[index],
1624
+ grid,
1625
+ index,
1626
+ rowGap: gap,
1627
+ columnGap: gap,
1628
+ children: /* @__PURE__ */ jsx(Field, {
1629
+ tableColumn,
1630
+ tableFormField: field
1631
+ })
1632
+ }, field.id);
1633
+ }), /* @__PURE__ */ jsxs(GridItem, {
1634
+ ref: items[fields.length],
1635
+ grid,
1636
+ index: fields.length,
1637
+ rowGap: gap,
1638
+ columnGap: gap,
1639
+ children: [/* @__PURE__ */ jsx(StyledButton, {
1640
+ type: "submit",
1641
+ disabled: formik.isSubmitting || isDone,
1642
+ shape,
1643
+ size,
1644
+ color: brandColor,
1645
+ variant: submitVariant,
1646
+ textColor: submitTextColor,
1647
+ width: submitWidth,
1648
+ alignment: submitAlignment,
1649
+ textStyle: submitTextStyle,
1650
+ children: formik.isSubmitting ? /* @__PURE__ */ jsx(Spinner, {}) : isDone ? /* @__PURE__ */ jsx(IconContainer, {
1651
+ children: /* @__PURE__ */ jsx(SvgCheck12, {})
1652
+ }) : submitLabel
1653
+ }), (errors.length > 0 || error) && /* @__PURE__ */ jsxs(ErrorContainer, {
1654
+ children: [errors.map((message) => /* @__PURE__ */ jsx(ErrorMessage, {
1655
+ children: message
1656
+ }, message)), error != null && /* @__PURE__ */ jsx(ErrorMessage, {
1657
+ children: error
1658
+ })]
1659
+ })]
1660
+ })]
1661
+ }), submitLink != null && /* @__PURE__ */ jsx(Link, {
1662
+ ref: linkRef,
1663
+ hidden: true,
1664
+ link: submitLink
1665
+ })]
1666
+ });
1667
+ }
1668
+ })
1669
+ })
1670
+ });
1671
+ });
1672
+ var Form$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1673
+ __proto__: null,
1674
+ "default": Form
1675
+ }, Symbol.toStringTag, { value: "Module" }));
1676
+ export { Form as F, Form$1 as a, useTable as u };
1677
+ //# sourceMappingURL=Form.es.js.map