powr-sdk-web 5.6.6 → 5.6.8

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.
@@ -8,6 +8,15 @@ exports["default"] = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _auth = require("../utils/auth");
10
10
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t4 in e) "default" !== _t4 && {}.hasOwnProperty.call(e, _t4) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t4)) && (i.get || i.set) ? o(f, _t4, i) : f[_t4] = e[_t4]); return f; })(e, t); }
11
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
12
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
14
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
11
20
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
12
21
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
13
22
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
@@ -39,14 +48,19 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
39
48
  _useState8 = _slicedToArray(_useState7, 2),
40
49
  showCreateModal = _useState8[0],
41
50
  setShowCreateModal = _useState8[1];
42
- var _useState9 = (0, _react.useState)(null),
51
+ var _useState9 = (0, _react.useState)(false),
43
52
  _useState0 = _slicedToArray(_useState9, 2),
44
- selectedFile = _useState0[0],
45
- setSelectedFile = _useState0[1];
46
- var _useState1 = (0, _react.useState)(false),
53
+ isSaving = _useState0[0],
54
+ setIsSaving = _useState0[1];
55
+ var _useState1 = (0, _react.useState)({
56
+ formTitle: '',
57
+ formName: '',
58
+ formId: '',
59
+ fields: []
60
+ }),
47
61
  _useState10 = _slicedToArray(_useState1, 2),
48
- isUploading = _useState10[0],
49
- setIsUploading = _useState10[1];
62
+ formDraft = _useState10[0],
63
+ setFormDraft = _useState10[1];
50
64
  var _useState11 = (0, _react.useState)(null),
51
65
  _useState12 = _slicedToArray(_useState11, 2),
52
66
  selectedForm = _useState12[0],
@@ -75,7 +89,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
75
89
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
76
90
  var _yield$apiCall, data, ok, _t;
77
91
  return _regenerator().w(function (_context) {
78
- while (1) switch (_context.n) {
92
+ while (1) switch (_context.p = _context.n) {
79
93
  case 0:
80
94
  _context.p = 0;
81
95
  setLoading(true);
@@ -129,7 +143,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
129
143
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(formName) {
130
144
  var _yield$apiCall2, data, ok, _t2;
131
145
  return _regenerator().w(function (_context2) {
132
- while (1) switch (_context2.n) {
146
+ while (1) switch (_context2.p = _context2.n) {
133
147
  case 0:
134
148
  setLoadingResponses(true);
135
149
  _context2.p = 1;
@@ -176,86 +190,163 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
176
190
  return _ref3.apply(this, arguments);
177
191
  };
178
192
  }();
193
+ var resetFormDraft = function resetFormDraft() {
194
+ setFormDraft({
195
+ formTitle: '',
196
+ formName: '',
197
+ formId: '',
198
+ fields: []
199
+ });
200
+ };
201
+ var slugify = function slugify(value) {
202
+ return value.toLowerCase().trim().replace(/[^a-z0-9]+/g, '').slice(0, 32);
203
+ };
204
+ var addField = function addField(type) {
205
+ var index = formDraft.fields.length + 1;
206
+ setFormDraft(function (prev) {
207
+ return _objectSpread(_objectSpread({}, prev), {}, {
208
+ fields: [].concat(_toConsumableArray(prev.fields), [_objectSpread({
209
+ name: "field".concat(index),
210
+ label: "Field ".concat(index),
211
+ type: type,
212
+ required: false
213
+ }, type === 'radio' ? {
214
+ options: ['Option 1', 'Option 2']
215
+ } : {})])
216
+ });
217
+ });
218
+ };
219
+ var updateField = function updateField(index, updates) {
220
+ setFormDraft(function (prev) {
221
+ return _objectSpread(_objectSpread({}, prev), {}, {
222
+ fields: prev.fields.map(function (field, i) {
223
+ return i === index ? _objectSpread(_objectSpread({}, field), updates) : field;
224
+ })
225
+ });
226
+ });
227
+ };
228
+ var removeField = function removeField(index) {
229
+ setFormDraft(function (prev) {
230
+ return _objectSpread(_objectSpread({}, prev), {}, {
231
+ fields: prev.fields.filter(function (_, i) {
232
+ return i !== index;
233
+ })
234
+ });
235
+ });
236
+ };
179
237
  var createForm = /*#__PURE__*/function () {
180
238
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
181
- var formData, _yield$apiCall3, result, ok, errorMessage, _errorMessage, _t3;
239
+ var trimmedTitle, trimmedName, trimmedId, hasInvalidField, payload, _yield$apiCall3, result, ok, errorMessage, _t3;
182
240
  return _regenerator().w(function (_context3) {
183
- while (1) switch (_context3.n) {
241
+ while (1) switch (_context3.p = _context3.n) {
184
242
  case 0:
185
- if (!(!projectId || !selectedFile)) {
243
+ if (projectId) {
186
244
  _context3.n = 1;
187
245
  break;
188
246
  }
189
247
  if (onFormAction) {
190
- onFormAction('error', 'Please select a JSON file to upload');
248
+ onFormAction('error', 'Project ID is required');
191
249
  }
192
250
  return _context3.a(2);
193
251
  case 1:
194
- setIsUploading(true);
195
- _context3.p = 2;
196
- formData = new FormData();
197
- formData.append('jsonFile', selectedFile);
198
- _context3.n = 3;
252
+ trimmedTitle = formDraft.formTitle.trim();
253
+ trimmedName = formDraft.formName.trim();
254
+ trimmedId = formDraft.formId.trim();
255
+ if (!(!trimmedTitle || !trimmedName || !trimmedId)) {
256
+ _context3.n = 2;
257
+ break;
258
+ }
259
+ if (onFormAction) {
260
+ onFormAction('error', 'Form title, name, and ID are required');
261
+ }
262
+ return _context3.a(2);
263
+ case 2:
264
+ if (!(formDraft.fields.length === 0)) {
265
+ _context3.n = 3;
266
+ break;
267
+ }
268
+ if (onFormAction) {
269
+ onFormAction('error', 'Add at least one field');
270
+ }
271
+ return _context3.a(2);
272
+ case 3:
273
+ hasInvalidField = formDraft.fields.some(function (field) {
274
+ var _field$name, _field$label;
275
+ return !((_field$name = field.name) !== null && _field$name !== void 0 && _field$name.trim()) || !((_field$label = field.label) !== null && _field$label !== void 0 && _field$label.trim());
276
+ });
277
+ if (!hasInvalidField) {
278
+ _context3.n = 4;
279
+ break;
280
+ }
281
+ if (onFormAction) {
282
+ onFormAction('error', 'Each field needs a name and label');
283
+ }
284
+ return _context3.a(2);
285
+ case 4:
286
+ setIsSaving(true);
287
+ _context3.p = 5;
288
+ payload = {
289
+ formTitle: trimmedTitle,
290
+ formName: trimmedName,
291
+ formId: trimmedId,
292
+ fields: formDraft.fields.map(function (field) {
293
+ return _objectSpread({
294
+ name: field.name.trim(),
295
+ label: field.label.trim(),
296
+ type: field.type,
297
+ required: !!field.required
298
+ }, field.type === 'radio' ? {
299
+ options: field.options || []
300
+ } : {});
301
+ })
302
+ };
303
+ _context3.n = 6;
199
304
  return (0, _auth.apiCall)(apiUrl, "/forms/create-form", projectId, {
200
305
  method: 'POST',
201
- body: formData
306
+ body: payload
202
307
  });
203
- case 3:
308
+ case 6:
204
309
  _yield$apiCall3 = _context3.v;
205
310
  result = _yield$apiCall3.data;
206
311
  ok = _yield$apiCall3.ok;
207
312
  if (ok) {
208
- _context3.n = 4;
313
+ _context3.n = 7;
209
314
  break;
210
315
  }
211
- errorMessage = result.message || 'Failed to create form';
212
- throw new Error(errorMessage);
213
- case 4:
316
+ throw new Error(result.message || 'Failed to create form');
317
+ case 7:
214
318
  if (onFormAction) {
215
319
  onFormAction('success', result.message || 'Form created successfully!');
216
320
  }
217
- setSelectedFile(null);
321
+ resetFormDraft();
218
322
  setShowCreateModal(false);
219
323
  fetchForms();
220
324
  if (onRefresh) {
221
325
  onRefresh();
222
326
  }
223
- _context3.n = 6;
327
+ _context3.n = 9;
224
328
  break;
225
- case 5:
226
- _context3.p = 5;
329
+ case 8:
330
+ _context3.p = 8;
227
331
  _t3 = _context3.v;
228
332
  console.error('Error creating form:', _t3);
229
- _errorMessage = _t3 instanceof Error ? _t3.message : 'Failed to create form';
333
+ errorMessage = _t3 instanceof Error ? _t3.message : 'Failed to create form';
230
334
  if (onFormAction) {
231
- onFormAction('error', _errorMessage);
335
+ onFormAction('error', errorMessage);
232
336
  }
233
- setSelectedFile(null);
234
- setShowCreateModal(false);
235
- case 6:
236
- _context3.p = 6;
237
- setIsUploading(false);
238
- return _context3.f(6);
239
- case 7:
337
+ case 9:
338
+ _context3.p = 9;
339
+ setIsSaving(false);
340
+ return _context3.f(9);
341
+ case 10:
240
342
  return _context3.a(2);
241
343
  }
242
- }, _callee3, null, [[2, 5, 6, 7]]);
344
+ }, _callee3, null, [[5, 8, 9, 10]]);
243
345
  }));
244
346
  return function createForm() {
245
347
  return _ref4.apply(this, arguments);
246
348
  };
247
349
  }();
248
- var handleFileChange = function handleFileChange(e) {
249
- var _e$target$files;
250
- var file = (_e$target$files = e.target.files) === null || _e$target$files === void 0 ? void 0 : _e$target$files[0];
251
- if (file && file.type === 'application/json') {
252
- setSelectedFile(file);
253
- } else {
254
- if (onFormAction) {
255
- onFormAction('error', 'Please select a valid JSON file');
256
- }
257
- }
258
- };
259
350
  var handleViewForm = function handleViewForm(form) {
260
351
  setSelectedForm(form);
261
352
  setActiveTab('responses');
@@ -287,7 +378,8 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
287
378
  className: "text-gray-600 mt-1"
288
379
  }, "Create and manage your dynamic forms")), /*#__PURE__*/_react["default"].createElement("button", {
289
380
  onClick: function onClick() {
290
- return setShowCreateModal(true);
381
+ resetFormDraft();
382
+ setShowCreateModal(true);
291
383
  },
292
384
  className: "bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg flex items-center gap-2"
293
385
  }, /*#__PURE__*/_react["default"].createElement("svg", {
@@ -345,38 +437,160 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
345
437
  className: "text-sm text-gray-500"
346
438
  }, ((_form$fields = form.fields) === null || _form$fields === void 0 ? void 0 : _form$fields.length) || 0, " fields"));
347
439
  })))), showCreateModal && /*#__PURE__*/_react["default"].createElement("div", {
348
- className: "fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50"
440
+ className: "fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50 p-4"
349
441
  }, /*#__PURE__*/_react["default"].createElement("div", {
350
- className: "bg-white rounded-2xl shadow-xl p-8 w-full max-w-lg"
442
+ className: "bg-white rounded-2xl shadow-xl p-8 w-full max-w-3xl max-h-[90vh] overflow-y-auto"
351
443
  }, /*#__PURE__*/_react["default"].createElement("h2", {
352
444
  className: "text-xl font-bold text-gray-800 mb-6"
353
445
  }, "Create New Form"), /*#__PURE__*/_react["default"].createElement("div", {
354
- className: "space-y-4"
446
+ className: "space-y-6"
447
+ }, /*#__PURE__*/_react["default"].createElement("div", {
448
+ className: "grid grid-cols-1 md:grid-cols-2 gap-4"
355
449
  }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
356
- htmlFor: "jsonFile",
450
+ htmlFor: "formTitle",
451
+ className: "block text-sm font-medium text-gray-700 mb-1"
452
+ }, "Form Title *"), /*#__PURE__*/_react["default"].createElement("input", {
453
+ id: "formTitle",
454
+ type: "text",
455
+ value: formDraft.formTitle,
456
+ onChange: function onChange(e) {
457
+ var formTitle = e.target.value;
458
+ setFormDraft(function (prev) {
459
+ return _objectSpread(_objectSpread({}, prev), {}, {
460
+ formTitle: formTitle,
461
+ formName: prev.formName || slugify(formTitle)
462
+ });
463
+ });
464
+ },
465
+ placeholder: "Genkit Workshop Registration",
466
+ className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
467
+ })), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", {
468
+ htmlFor: "formId",
469
+ className: "block text-sm font-medium text-gray-700 mb-1"
470
+ }, "Form ID *"), /*#__PURE__*/_react["default"].createElement("input", {
471
+ id: "formId",
472
+ type: "text",
473
+ value: formDraft.formId,
474
+ onChange: function onChange(e) {
475
+ return setFormDraft(function (prev) {
476
+ return _objectSpread(_objectSpread({}, prev), {}, {
477
+ formId: e.target.value.toUpperCase()
478
+ });
479
+ });
480
+ },
481
+ placeholder: "KHA2025A2",
482
+ className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
483
+ })), /*#__PURE__*/_react["default"].createElement("div", {
484
+ className: "md:col-span-2"
485
+ }, /*#__PURE__*/_react["default"].createElement("label", {
486
+ htmlFor: "formName",
357
487
  className: "block text-sm font-medium text-gray-700 mb-1"
358
- }, "JSON Form Schema *"), /*#__PURE__*/_react["default"].createElement("input", {
359
- id: "jsonFile",
360
- name: "jsonFile",
361
- type: "file",
362
- accept: ".json",
363
- onChange: handleFileChange,
364
- required: true,
488
+ }, "Form Name (URL slug) *"), /*#__PURE__*/_react["default"].createElement("input", {
489
+ id: "formName",
490
+ type: "text",
491
+ value: formDraft.formName,
492
+ onChange: function onChange(e) {
493
+ return setFormDraft(function (prev) {
494
+ return _objectSpread(_objectSpread({}, prev), {}, {
495
+ formName: slugify(e.target.value)
496
+ });
497
+ });
498
+ },
499
+ placeholder: "workshopform",
365
500
  className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
366
501
  }), /*#__PURE__*/_react["default"].createElement("p", {
367
502
  className: "text-xs text-gray-500 mt-1"
368
- }, "Upload a JSON file containing your form schema"))), /*#__PURE__*/_react["default"].createElement("div", {
503
+ }, "Used in URLs like `/forms?id=workshopform`"))), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
504
+ className: "flex items-center justify-between mb-3"
505
+ }, /*#__PURE__*/_react["default"].createElement("h3", {
506
+ className: "text-sm font-semibold text-gray-900"
507
+ }, "Fields"), /*#__PURE__*/_react["default"].createElement("div", {
508
+ className: "flex flex-wrap gap-2"
509
+ }, ['text', 'email', 'textarea', 'radio', 'fileUploader'].map(function (type) {
510
+ return /*#__PURE__*/_react["default"].createElement("button", {
511
+ key: type,
512
+ type: "button",
513
+ onClick: function onClick() {
514
+ return addField(type);
515
+ },
516
+ className: "px-3 py-1 text-xs rounded-full border border-gray-300 hover:bg-gray-50"
517
+ }, "+ ", type);
518
+ }))), formDraft.fields.length === 0 ? /*#__PURE__*/_react["default"].createElement("div", {
519
+ className: "rounded-lg border border-dashed border-gray-300 p-6 text-center text-sm text-gray-500"
520
+ }, "Add fields using the buttons above") : /*#__PURE__*/_react["default"].createElement("div", {
521
+ className: "space-y-4"
522
+ }, formDraft.fields.map(function (field, index) {
523
+ return /*#__PURE__*/_react["default"].createElement("div", {
524
+ key: "".concat(field.name, "-").concat(index),
525
+ className: "rounded-lg border border-gray-200 p-4 space-y-3"
526
+ }, /*#__PURE__*/_react["default"].createElement("div", {
527
+ className: "flex items-center justify-between"
528
+ }, /*#__PURE__*/_react["default"].createElement("span", {
529
+ className: "text-sm font-medium text-gray-700 capitalize"
530
+ }, field.type, " field"), /*#__PURE__*/_react["default"].createElement("button", {
531
+ type: "button",
532
+ onClick: function onClick() {
533
+ return removeField(index);
534
+ },
535
+ className: "text-sm text-red-600 hover:text-red-700"
536
+ }, "Remove")), /*#__PURE__*/_react["default"].createElement("div", {
537
+ className: "grid grid-cols-1 md:grid-cols-2 gap-3"
538
+ }, /*#__PURE__*/_react["default"].createElement("input", {
539
+ type: "text",
540
+ value: field.label,
541
+ onChange: function onChange(e) {
542
+ return updateField(index, {
543
+ label: e.target.value
544
+ });
545
+ },
546
+ placeholder: "Label",
547
+ className: "w-full px-3 py-2 border border-gray-300 rounded-md"
548
+ }), /*#__PURE__*/_react["default"].createElement("input", {
549
+ type: "text",
550
+ value: field.name,
551
+ onChange: function onChange(e) {
552
+ return updateField(index, {
553
+ name: slugify(e.target.value)
554
+ });
555
+ },
556
+ placeholder: "name",
557
+ className: "w-full px-3 py-2 border border-gray-300 rounded-md"
558
+ })), /*#__PURE__*/_react["default"].createElement("label", {
559
+ className: "flex items-center gap-2 text-sm text-gray-700"
560
+ }, /*#__PURE__*/_react["default"].createElement("input", {
561
+ type: "checkbox",
562
+ checked: !!field.required,
563
+ onChange: function onChange(e) {
564
+ return updateField(index, {
565
+ required: e.target.checked
566
+ });
567
+ }
568
+ }), "Required"), field.type === 'radio' && /*#__PURE__*/_react["default"].createElement("textarea", {
569
+ value: (field.options || []).join('\n'),
570
+ onChange: function onChange(e) {
571
+ return updateField(index, {
572
+ options: e.target.value.split('\n').map(function (option) {
573
+ return option.trim();
574
+ }).filter(Boolean)
575
+ });
576
+ },
577
+ placeholder: "One option per line",
578
+ rows: 3,
579
+ className: "w-full px-3 py-2 border border-gray-300 rounded-md"
580
+ }));
581
+ })))), /*#__PURE__*/_react["default"].createElement("div", {
369
582
  className: "flex justify-end gap-4 mt-6"
370
583
  }, /*#__PURE__*/_react["default"].createElement("button", {
371
584
  onClick: function onClick() {
372
- return setShowCreateModal(false);
585
+ resetFormDraft();
586
+ setShowCreateModal(false);
373
587
  },
374
588
  className: "bg-gray-300 text-gray-700 hover:bg-gray-400 px-4 py-2 rounded-md"
375
589
  }, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
376
590
  onClick: createForm,
377
- disabled: isUploading || !selectedFile,
591
+ disabled: isSaving,
378
592
  className: "bg-blue-600 text-white hover:bg-blue-700 px-4 py-2 rounded-md disabled:opacity-50"
379
- }, isUploading ? /*#__PURE__*/_react["default"].createElement("div", {
593
+ }, isSaving ? /*#__PURE__*/_react["default"].createElement("div", {
380
594
  className: "animate-spin h-5 w-5 mx-auto border-2 border-white border-t-transparent rounded-full"
381
595
  }) : 'Create Form')))), showDetailModal && selectedForm && /*#__PURE__*/_react["default"].createElement("div", {
382
596
  className: "fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50"
@@ -72,7 +72,7 @@ var PowrForm = function PowrForm(_ref) {
72
72
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
73
73
  var response, apiResponse, formData, _t;
74
74
  return _regenerator().w(function (_context) {
75
- while (1) switch (_context.n) {
75
+ while (1) switch (_context.p = _context.n) {
76
76
  case 0:
77
77
  if (!(!formName || !projectId)) {
78
78
  _context.n = 1;
@@ -121,7 +121,7 @@ var PowrForm = function PowrForm(_ref) {
121
121
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(data) {
122
122
  var finalData, response, resData, errorMsg, _errorMsg, _error$response, _errorMsg2, _t2;
123
123
  return _regenerator().w(function (_context2) {
124
- while (1) switch (_context2.n) {
124
+ while (1) switch (_context2.p = _context2.n) {
125
125
  case 0:
126
126
  setHasSubmitted(true);
127
127
  setSubmitError(null);
@@ -144,7 +144,7 @@ var PowrBaseFunctionsAdmin = function PowrBaseFunctionsAdmin(_ref) {
144
144
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
145
145
  var _yield$apiCall, data, ok, errorMsg, _t;
146
146
  return _regenerator().w(function (_context) {
147
- while (1) switch (_context.n) {
147
+ while (1) switch (_context.p = _context.n) {
148
148
  case 0:
149
149
  _context.p = 0;
150
150
  setLoading(true);
@@ -215,7 +215,7 @@ var PowrBaseFunctionsAdmin = function PowrBaseFunctionsAdmin(_ref) {
215
215
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
216
216
  var errorMsg, _yield$apiCall2, result, ok, successMsg, _errorMsg, _t2;
217
217
  return _regenerator().w(function (_context2) {
218
- while (1) switch (_context2.n) {
218
+ while (1) switch (_context2.p = _context2.n) {
219
219
  case 0:
220
220
  if (!(!formData.name || !formData.path)) {
221
221
  _context2.n = 1;
@@ -303,7 +303,7 @@ var PowrBaseFunctionsAdmin = function PowrBaseFunctionsAdmin(_ref) {
303
303
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
304
304
  var errorMsg, _yield$apiCall3, result, ok, successMsg, _errorMsg2, _t3;
305
305
  return _regenerator().w(function (_context3) {
306
- while (1) switch (_context3.n) {
306
+ while (1) switch (_context3.p = _context3.n) {
307
307
  case 0:
308
308
  if (!(!editingFunction || !editFormData.code)) {
309
309
  _context3.n = 1;
@@ -104,7 +104,7 @@ var PowrBaseInvoicesAdmin = function PowrBaseInvoicesAdmin(_ref) {
104
104
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
105
105
  var _yield$apiCall, data, ok, _t;
106
106
  return _regenerator().w(function (_context) {
107
- while (1) switch (_context.n) {
107
+ while (1) switch (_context.p = _context.n) {
108
108
  case 0:
109
109
  setLoading(true);
110
110
  setError(null);
@@ -153,7 +153,7 @@ var PowrBaseInvoicesAdmin = function PowrBaseInvoicesAdmin(_ref) {
153
153
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(e) {
154
154
  var _yield$apiCall2, data, ok, _t2;
155
155
  return _regenerator().w(function (_context2) {
156
- while (1) switch (_context2.n) {
156
+ while (1) switch (_context2.p = _context2.n) {
157
157
  case 0:
158
158
  e.preventDefault();
159
159
  setAddLoading(true);
@@ -318,7 +318,7 @@ var PowrBaseInvoicesAdmin = function PowrBaseInvoicesAdmin(_ref) {
318
318
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(e) {
319
319
  var _yield$apiCall3, data, ok, _t3;
320
320
  return _regenerator().w(function (_context3) {
321
- while (1) switch (_context3.n) {
321
+ while (1) switch (_context3.p = _context3.n) {
322
322
  case 0:
323
323
  e.preventDefault();
324
324
  if (editInvoiceId) {
@@ -36,7 +36,7 @@ var PowrBaseInvoice = function PowrBaseInvoice(_ref) {
36
36
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
37
37
  var _yield$apiCall, data, ok, _t;
38
38
  return _regenerator().w(function (_context) {
39
- while (1) switch (_context.n) {
39
+ while (1) switch (_context.p = _context.n) {
40
40
  case 0:
41
41
  _context.p = 0;
42
42
  _context.n = 1;
@@ -83,7 +83,7 @@ var PowrLike = function PowrLike(_ref2) {
83
83
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
84
84
  var endpoint, _yield$apiCall, data, ok, _t;
85
85
  return _regenerator().w(function (_context) {
86
- while (1) switch (_context.n) {
86
+ while (1) switch (_context.p = _context.n) {
87
87
  case 0:
88
88
  setLoading(true);
89
89
  _context.p = 1;
@@ -124,7 +124,7 @@ var PowrLike = function PowrLike(_ref2) {
124
124
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
125
125
  var endpoint, _yield$apiCall2, data, ok, _t2;
126
126
  return _regenerator().w(function (_context2) {
127
- while (1) switch (_context2.n) {
127
+ while (1) switch (_context2.p = _context2.n) {
128
128
  case 0:
129
129
  if (userId) {
130
130
  _context2.n = 1;
@@ -168,7 +168,7 @@ var PowrLike = function PowrLike(_ref2) {
168
168
  var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
169
169
  var endpoint, _t3;
170
170
  return _regenerator().w(function (_context3) {
171
- while (1) switch (_context3.n) {
171
+ while (1) switch (_context3.p = _context3.n) {
172
172
  case 0:
173
173
  setSubmitting(true);
174
174
  _context3.p = 1;
@@ -84,7 +84,7 @@ var PowrBaseNotificationsAdmin = function PowrBaseNotificationsAdmin(_ref) {
84
84
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
85
85
  var _yield$apiCall, data, ok, _t;
86
86
  return _regenerator().w(function (_context) {
87
- while (1) switch (_context.n) {
87
+ while (1) switch (_context.p = _context.n) {
88
88
  case 0:
89
89
  setLoading(true);
90
90
  setError(null);
@@ -162,7 +162,7 @@ var PowrBaseNotificationsAdmin = function PowrBaseNotificationsAdmin(_ref) {
162
162
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
163
163
  var _yield$apiCall2, result, ok, _t2;
164
164
  return _regenerator().w(function (_context2) {
165
- while (1) switch (_context2.n) {
165
+ while (1) switch (_context2.p = _context2.n) {
166
166
  case 0:
167
167
  _context2.p = 0;
168
168
  _context2.n = 1;
@@ -237,7 +237,7 @@ var PowrBaseNotificationsAdmin = function PowrBaseNotificationsAdmin(_ref) {
237
237
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
238
238
  var _yield$apiCall3, data, ok, _t3;
239
239
  return _regenerator().w(function (_context3) {
240
- while (1) switch (_context3.n) {
240
+ while (1) switch (_context3.p = _context3.n) {
241
241
  case 0:
242
242
  setLoadingGCS(true);
243
243
  _context3.p = 1;
@@ -85,7 +85,7 @@ var PowrVerify = function PowrVerify(_ref) {
85
85
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
86
86
  var phoneNumber, appVerifier, confirmation, _t, _t2;
87
87
  return _regenerator().w(function (_context) {
88
- while (1) switch (_context.n) {
88
+ while (1) switch (_context.p = _context.n) {
89
89
  case 0:
90
90
  setLoading(true);
91
91
  setError('');
@@ -150,7 +150,7 @@ var PowrVerify = function PowrVerify(_ref) {
150
150
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
151
151
  var result, token, _t3, _t4;
152
152
  return _regenerator().w(function (_context2) {
153
- while (1) switch (_context2.n) {
153
+ while (1) switch (_context2.p = _context2.n) {
154
154
  case 0:
155
155
  setLoading(true);
156
156
  setError('');
@@ -25,7 +25,7 @@ function _getReviews() {
25
25
  _getReviews = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref) {
26
26
  var projectId, entityId, apiUrl, _yield$apiCall, data, ok, _t;
27
27
  return _regenerator().w(function (_context2) {
28
- while (1) switch (_context2.n) {
28
+ while (1) switch (_context2.p = _context2.n) {
29
29
  case 0:
30
30
  projectId = _ref.projectId, entityId = _ref.entityId, apiUrl = _ref.apiUrl;
31
31
  _context2.p = 1;
@@ -86,7 +86,7 @@ var PowrBaseSlidesAdmin = function PowrBaseSlidesAdmin(_ref) {
86
86
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(projectId) {
87
87
  var _yield$apiCall, bannerInfo, ok, _t;
88
88
  return _regenerator().w(function (_context) {
89
- while (1) switch (_context.n) {
89
+ while (1) switch (_context.p = _context.n) {
90
90
  case 0:
91
91
  _context.p = 0;
92
92
  _context.n = 1;
@@ -165,7 +165,7 @@ var PowrBaseSlidesAdmin = function PowrBaseSlidesAdmin(_ref) {
165
165
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
166
166
  var _yield$apiCall2, data, ok, _t2;
167
167
  return _regenerator().w(function (_context2) {
168
- while (1) switch (_context2.n) {
168
+ while (1) switch (_context2.p = _context2.n) {
169
169
  case 0:
170
170
  setIsSubmitting(true);
171
171
  _context2.p = 1;
@@ -229,7 +229,7 @@ var PowrBaseSlidesAdmin = function PowrBaseSlidesAdmin(_ref) {
229
229
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
230
230
  var response, data, _t3;
231
231
  return _regenerator().w(function (_context3) {
232
- while (1) switch (_context3.n) {
232
+ while (1) switch (_context3.p = _context3.n) {
233
233
  case 0:
234
234
  setLoadingGCS(true);
235
235
  _context3.p = 1;