powr-sdk-web 6.7.0 → 6.9.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.
@@ -672,7 +672,7 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
672
672
  className: "text-sm font-semibold text-gray-900"
673
673
  }, "Fields"), /*#__PURE__*/_react["default"].createElement("div", {
674
674
  className: "flex flex-wrap gap-2"
675
- }, ['text', 'email', 'mobile', 'textarea', 'radio', 'fileUploader'].map(function (type) {
675
+ }, ['text', 'email', 'mobile', 'textarea', 'radio', 'photo', 'fileUploader'].map(function (type) {
676
676
  return /*#__PURE__*/_react["default"].createElement("button", {
677
677
  key: type,
678
678
  type: "button",
@@ -1137,7 +1137,25 @@ var PowrFormsAdmin = function PowrFormsAdmin(_ref) {
1137
1137
  className: "text-sm font-medium text-gray-700"
1138
1138
  }, "Message"), /*#__PURE__*/_react["default"].createElement("p", {
1139
1139
  className: "text-gray-900 bg-gray-50 p-3 rounded whitespace-pre-wrap"
1140
- }, response.message)), response.paymentProofUrls && response.paymentProofUrls.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
1140
+ }, response.message)), (selectedForm.fields || []).filter(function (field) {
1141
+ return field.type === 'photo' && response[field.name];
1142
+ }).map(function (field) {
1143
+ return /*#__PURE__*/_react["default"].createElement("div", {
1144
+ key: field.name,
1145
+ className: "space-y-1"
1146
+ }, /*#__PURE__*/_react["default"].createElement("label", {
1147
+ className: "text-sm font-medium text-gray-700"
1148
+ }, field.label), /*#__PURE__*/_react["default"].createElement("a", {
1149
+ href: response[field.name],
1150
+ target: "_blank",
1151
+ rel: "noopener noreferrer",
1152
+ className: "block"
1153
+ }, /*#__PURE__*/_react["default"].createElement("img", {
1154
+ src: response[field.name],
1155
+ alt: field.label,
1156
+ className: "max-h-40 rounded border border-gray-200 bg-gray-50"
1157
+ })));
1158
+ }), response.paymentProofUrls && response.paymentProofUrls.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
1141
1159
  className: "space-y-1 md:col-span-2"
1142
1160
  }, /*#__PURE__*/_react["default"].createElement("label", {
1143
1161
  className: "text-sm font-medium text-gray-700"
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -9,9 +8,11 @@ var _react = _interopRequireWildcard(require("react"));
9
8
  var _reactHookForm = require("react-hook-form");
10
9
  var _axios = _interopRequireDefault(require("axios"));
11
10
  var _config = require("../config");
11
+ var _uploader = _interopRequireDefault(require("../uploader"));
12
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
13
  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 _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
14
14
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
15
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15
16
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
17
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
18
  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; }
@@ -27,6 +28,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
27
28
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
28
29
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
29
30
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
31
+ var UPLOAD_FIELD_TYPES = ["photo", "fileUploader"];
30
32
  var PowrForm = function PowrForm(_ref) {
31
33
  var formName = _ref.formName,
32
34
  projectId = _ref.projectId,
@@ -37,35 +39,50 @@ var PowrForm = function PowrForm(_ref) {
37
39
  _ref$className = _ref.className,
38
40
  className = _ref$className === void 0 ? "" : _ref$className,
39
41
  _ref$theme = _ref.theme,
40
- theme = _ref$theme === void 0 ? "purple" : _ref$theme;
41
- var _useState = (0, _react.useState)(null),
42
+ theme = _ref$theme === void 0 ? "purple" : _ref$theme,
43
+ _ref$embed = _ref.embed,
44
+ embed = _ref$embed === void 0 ? false : _ref$embed,
45
+ _ref$showHeader = _ref.showHeader,
46
+ showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
47
+ bannerUrl = _ref.bannerUrl,
48
+ title = _ref.title,
49
+ description = _ref.description,
50
+ _ref$requireLogin = _ref.requireLogin,
51
+ requireLogin = _ref$requireLogin === void 0 ? false : _ref$requireLogin,
52
+ _ref$isAuthenticated = _ref.isAuthenticated,
53
+ isAuthenticated = _ref$isAuthenticated === void 0 ? false : _ref$isAuthenticated,
54
+ onNeedLogin = _ref.onNeedLogin,
55
+ extraFields = _ref.extraFields,
56
+ submitLabel = _ref.submitLabel,
57
+ _ref$loginLabel = _ref.loginLabel,
58
+ loginLabel = _ref$loginLabel === void 0 ? "Sign in" : _ref$loginLabel,
59
+ _ref$loginMessage = _ref.loginMessage,
60
+ loginMessage = _ref$loginMessage === void 0 ? "Sign in to send this. Fill the questions first if you want." : _ref$loginMessage,
61
+ authenticatedLabel = _ref.authenticatedLabel;
62
+ var _useState = (0, _react.useState)({}),
42
63
  _useState2 = _slicedToArray(_useState, 2),
43
- uploadedFileUrl = _useState2[0],
44
- setUploadedFileUrl = _useState2[1];
45
- var _useState3 = (0, _react.useState)(false),
64
+ uploads = _useState2[0],
65
+ setUploads = _useState2[1];
66
+ var _useState3 = (0, _react.useState)(null),
46
67
  _useState4 = _slicedToArray(_useState3, 2),
47
- hasSubmitted = _useState4[0],
48
- setHasSubmitted = _useState4[1];
49
- var _useState5 = (0, _react.useState)(null),
68
+ formSchema = _useState4[0],
69
+ setFormSchema = _useState4[1];
70
+ var _useState5 = (0, _react.useState)(true),
50
71
  _useState6 = _slicedToArray(_useState5, 2),
51
- formSchema = _useState6[0],
52
- setFormSchema = _useState6[1];
53
- var _useState7 = (0, _react.useState)(true),
72
+ isLoading = _useState6[0],
73
+ setIsLoading = _useState6[1];
74
+ var _useState7 = (0, _react.useState)(null),
54
75
  _useState8 = _slicedToArray(_useState7, 2),
55
- isLoading = _useState8[0],
56
- setIsLoading = _useState8[1];
76
+ error = _useState8[0],
77
+ setError = _useState8[1];
57
78
  var _useState9 = (0, _react.useState)(null),
58
79
  _useState0 = _slicedToArray(_useState9, 2),
59
- error = _useState0[0],
60
- setError = _useState0[1];
80
+ successMessage = _useState0[0],
81
+ setSuccessMessage = _useState0[1];
61
82
  var _useState1 = (0, _react.useState)(null),
62
83
  _useState10 = _slicedToArray(_useState1, 2),
63
- successMessage = _useState10[0],
64
- setSuccessMessage = _useState10[1];
65
- var _useState11 = (0, _react.useState)(null),
66
- _useState12 = _slicedToArray(_useState11, 2),
67
- submitError = _useState12[0],
68
- setSubmitError = _useState12[1];
84
+ submitError = _useState10[0],
85
+ setSubmitError = _useState10[1];
69
86
  var submissionId = Math.random().toString(36).substring(2, 10);
70
87
  (0, _react.useEffect)(function () {
71
88
  var fetchFormSchema = /*#__PURE__*/function () {
@@ -116,26 +133,53 @@ var PowrForm = function PowrForm(_ref) {
116
133
  }),
117
134
  register = _useForm.register,
118
135
  handleSubmit = _useForm.handleSubmit,
136
+ setValue = _useForm.setValue,
119
137
  errors = _useForm.formState.errors;
138
+
139
+ // /files needs a Powr token, so a form with an upload field is login-only.
140
+ var hasUploadField = ((formSchema === null || formSchema === void 0 ? void 0 : formSchema.fields) || []).some(function (f) {
141
+ return UPLOAD_FIELD_TYPES.includes(f.type);
142
+ });
143
+ var needsLogin = Boolean(requireLogin || (formSchema === null || formSchema === void 0 ? void 0 : formSchema.requireLogin) || hasUploadField) && !isAuthenticated;
144
+ var setUploadedUrl = function setUploadedUrl(field, files) {
145
+ var url = files !== null && files !== void 0 && files.length ? files[files.length - 1].url : "";
146
+ setUploads(function (prev) {
147
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, field.name, url));
148
+ });
149
+ setValue(field.name, url, {
150
+ shouldValidate: true
151
+ });
152
+ };
120
153
  var onSubmit = /*#__PURE__*/function () {
121
154
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(data) {
122
- var finalData, response, resData, errorMsg, _errorMsg, _error$response, _errorMsg2, _t2;
155
+ var paymentProofUrls, finalData, response, resData, errorMsg, _errorMsg, _error$response, _errorMsg2, _t2;
123
156
  return _regenerator().w(function (_context2) {
124
157
  while (1) switch (_context2.p = _context2.n) {
125
158
  case 0:
126
- setHasSubmitted(true);
159
+ if (!needsLogin) {
160
+ _context2.n = 1;
161
+ break;
162
+ }
163
+ if (onNeedLogin) onNeedLogin();
164
+ return _context2.a(2);
165
+ case 1:
127
166
  setSubmitError(null);
128
167
  setSuccessMessage(null);
129
- finalData = _objectSpread(_objectSpread({}, data), {}, {
130
- paymentProofUrls: uploadedFileUrl ? [uploadedFileUrl] : [],
168
+ paymentProofUrls = ((formSchema === null || formSchema === void 0 ? void 0 : formSchema.fields) || []).filter(function (f) {
169
+ return f.type === "fileUploader" && uploads[f.name];
170
+ }).map(function (f) {
171
+ return uploads[f.name];
172
+ });
173
+ finalData = _objectSpread(_objectSpread(_objectSpread({}, data), extraFields && _typeof(extraFields) === "object" ? extraFields : {}), {}, {
174
+ paymentProofUrls: paymentProofUrls,
131
175
  id: submissionId,
132
176
  formTitle: formSchema === null || formSchema === void 0 ? void 0 : formSchema.formTitle,
133
177
  formName: formSchema === null || formSchema === void 0 ? void 0 : formSchema.formName
134
178
  });
135
- _context2.p = 1;
136
- _context2.n = 2;
179
+ _context2.p = 2;
180
+ _context2.n = 3;
137
181
  return _axios["default"].post("".concat(apiUrl, "/forms/studentform?projectId=").concat(projectId), finalData);
138
- case 2:
182
+ case 3:
139
183
  response = _context2.v;
140
184
  resData = response.data;
141
185
  if (resData && resData.existingFormId) {
@@ -150,18 +194,18 @@ var PowrForm = function PowrForm(_ref) {
150
194
  setSubmitError(_errorMsg);
151
195
  if (onSubmitError) onSubmitError(_errorMsg);
152
196
  }
153
- _context2.n = 4;
197
+ _context2.n = 5;
154
198
  break;
155
- case 3:
156
- _context2.p = 3;
199
+ case 4:
200
+ _context2.p = 4;
157
201
  _t2 = _context2.v;
158
202
  _errorMsg2 = (_t2 === null || _t2 === void 0 || (_error$response = _t2.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 ? void 0 : _error$response.message) || "Submission failed. Please try again.";
159
203
  setSubmitError(_errorMsg2);
160
204
  if (onSubmitError) onSubmitError(_errorMsg2);
161
- case 4:
205
+ case 5:
162
206
  return _context2.a(2);
163
207
  }
164
- }, _callee2, null, [[1, 3]]);
208
+ }, _callee2, null, [[2, 4]]);
165
209
  }));
166
210
  return function onSubmit(_x) {
167
211
  return _ref3.apply(this, arguments);
@@ -264,69 +308,110 @@ var PowrForm = function PowrForm(_ref) {
264
308
  })));
265
309
  }
266
310
  return null;
311
+ case "photo":
267
312
  case "fileUploader":
268
- return /*#__PURE__*/_react["default"].createElement("div", {
269
- key: field.name,
270
- className: "space-y-4"
271
- }, /*#__PURE__*/_react["default"].createElement("label", {
272
- className: "block text-base font-medium mb-1"
273
- }, field.label, " ", field.required && /*#__PURE__*/_react["default"].createElement("span", {
274
- className: "text-red-600"
275
- }, "*")), field.description && /*#__PURE__*/_react["default"].createElement("p", {
276
- className: "text-sm text-gray-500 mb-2"
277
- }, field.description), /*#__PURE__*/_react["default"].createElement("input", {
278
- type: "file",
279
- accept: "image/*,application/pdf",
280
- onChange: function onChange(e) {
281
- var _e$target$files;
282
- var file = (_e$target$files = e.target.files) === null || _e$target$files === void 0 ? void 0 : _e$target$files[0];
283
- if (file) {
284
- setUploadedFileUrl("uploaded-".concat(file.name));
313
+ {
314
+ var isPhoto = field.type === "photo";
315
+ return /*#__PURE__*/_react["default"].createElement(InputField, {
316
+ key: field.name,
317
+ label: field.label,
318
+ required: field.required,
319
+ error: errors[field.name] && {
320
+ message: isPhoto ? "Please add a photo." : "Please upload a file."
321
+ },
322
+ description: field.description,
323
+ theme: theme
324
+ }, /*#__PURE__*/_react["default"].createElement("input", _extends({
325
+ type: "hidden"
326
+ }, register(field.name, {
327
+ required: field.required
328
+ }))), isAuthenticated ? /*#__PURE__*/_react["default"].createElement(_uploader["default"], {
329
+ apiUrl: apiUrl,
330
+ projectId: projectId,
331
+ maxFiles: 1,
332
+ acceptedFileTypes: isPhoto ? "image/*" : "image/*,application/pdf",
333
+ onUploadComplete: function onUploadComplete(files) {
334
+ return setUploadedUrl(field, files);
335
+ },
336
+ onRemove: function onRemove(files) {
337
+ return setUploadedUrl(field, files);
338
+ },
339
+ onUploadError: function onUploadError() {
340
+ return setSubmitError("Upload failed. Please try again.");
285
341
  }
286
- },
287
- className: inputClass
288
- }), uploadedFileUrl && /*#__PURE__*/_react["default"].createElement("p", null, "File uploaded: ", uploadedFileUrl), hasSubmitted && !uploadedFileUrl && field.required && /*#__PURE__*/_react["default"].createElement("p", {
289
- className: "text-red-600 text-sm mt-1"
290
- }, "Payment proof is required."));
342
+ }) : /*#__PURE__*/_react["default"].createElement("p", {
343
+ className: "text-sm text-gray-500"
344
+ }, "Sign in to add ", isPhoto ? "a photo" : "a file", "."));
345
+ }
291
346
  default:
292
347
  return null;
293
348
  }
294
349
  };
350
+ var shellClass = embed ? "w-full ".concat(className) : "min-h-screen ".concat(theme === "purple" ? "bg-[#f3eaff]" : "bg-".concat(theme, "-50"), " flex justify-center items-start py-12 px-4 ").concat(className);
351
+ var cardClass = embed ? "bg-white w-full" : "bg-white w-full max-w-3xl rounded-lg shadow-lg p-10";
295
352
  if (isLoading) {
296
353
  return /*#__PURE__*/_react["default"].createElement("div", {
297
- className: "min-h-screen bg-gray-50 flex justify-center items-center"
354
+ className: embed ? "py-8 text-center text-gray-600" : "min-h-screen bg-gray-50 flex justify-center items-center"
298
355
  }, /*#__PURE__*/_react["default"].createElement("div", {
299
356
  className: "text-xl text-gray-600"
300
357
  }, "Loading form..."));
301
358
  }
302
359
  if (error) {
303
360
  return /*#__PURE__*/_react["default"].createElement("div", {
304
- className: "min-h-screen bg-gray-50 flex justify-center items-center"
361
+ className: embed ? "py-8 text-center text-red-600" : "min-h-screen bg-gray-50 flex justify-center items-center"
305
362
  }, /*#__PURE__*/_react["default"].createElement("div", {
306
363
  className: "text-xl text-red-600"
307
364
  }, "Error: ", error));
308
365
  }
309
366
  if (!formSchema) {
310
367
  return /*#__PURE__*/_react["default"].createElement("div", {
311
- className: "min-h-screen bg-gray-50 flex justify-center items-center"
368
+ className: embed ? "py-8 text-center text-red-600" : "min-h-screen bg-gray-50 flex justify-center items-center"
312
369
  }, /*#__PURE__*/_react["default"].createElement("div", {
313
370
  className: "text-xl text-red-600"
314
371
  }, "No form schema found"));
315
372
  }
316
- var bgColor = theme === "purple" ? "bg-[#f3eaff]" : "bg-".concat(theme, "-50");
317
373
  var borderColor = theme === "purple" ? "border-purple-600" : "border-".concat(theme, "-600");
318
374
  var buttonColor = theme === "purple" ? "bg-purple-600 hover:bg-purple-700" : "bg-".concat(theme, "-600 hover:bg-").concat(theme, "-700");
375
+ var heading = title || formSchema.formTitle;
376
+ var blurb = description || formSchema.description;
377
+ var banner = bannerUrl || formSchema.imageUrl;
378
+ var buttonText = submitLabel || (needsLogin ? "Sign in to submit" : "Submit");
319
379
  return /*#__PURE__*/_react["default"].createElement("div", {
320
- className: "min-h-screen ".concat(bgColor, " flex justify-center items-start py-12 px-4 ").concat(className)
380
+ className: shellClass
321
381
  }, /*#__PURE__*/_react["default"].createElement("div", {
322
- className: "bg-white w-full max-w-3xl rounded-lg shadow-lg p-10"
382
+ className: cardClass
383
+ }, showHeader && banner ? /*#__PURE__*/_react["default"].createElement("div", {
384
+ className: "relative mb-8 overflow-hidden rounded-xl bg-slate-900 text-white"
323
385
  }, /*#__PURE__*/_react["default"].createElement("div", {
386
+ className: "absolute inset-0 bg-cover bg-center opacity-40",
387
+ style: {
388
+ backgroundImage: "url('".concat(banner, "')")
389
+ }
390
+ }), /*#__PURE__*/_react["default"].createElement("div", {
391
+ className: "absolute inset-0 bg-gradient-to-t from-slate-900 via-slate-900/70 to-slate-900/30"
392
+ }), /*#__PURE__*/_react["default"].createElement("div", {
393
+ className: "relative px-5 py-8"
394
+ }, /*#__PURE__*/_react["default"].createElement("h1", {
395
+ className: "text-2xl font-extrabold md:text-3xl"
396
+ }, heading), blurb ? /*#__PURE__*/_react["default"].createElement("p", {
397
+ className: "mt-2 max-w-xl text-sm text-slate-200"
398
+ }, blurb) : null)) : null, showHeader && !banner ? /*#__PURE__*/_react["default"].createElement("div", {
324
399
  className: "border-b-4 ".concat(borderColor, " pb-6 mb-8")
325
400
  }, /*#__PURE__*/_react["default"].createElement("h1", {
326
401
  className: "text-3xl font-bold text-gray-800"
327
- }, formSchema.formTitle), formSchema.description && /*#__PURE__*/_react["default"].createElement("p", {
402
+ }, heading), blurb && /*#__PURE__*/_react["default"].createElement("p", {
328
403
  className: "text-gray-600 mt-3 text-base leading-relaxed"
329
- }, formSchema.description)), successMessage && /*#__PURE__*/_react["default"].createElement("div", {
404
+ }, blurb)) : null, needsLogin ? /*#__PURE__*/_react["default"].createElement("div", {
405
+ className: "mb-6 flex flex-col gap-3 rounded-xl border-2 border-yellow-400 bg-[#fff8d6] px-4 py-3 sm:flex-row sm:items-center sm:justify-between"
406
+ }, /*#__PURE__*/_react["default"].createElement("p", {
407
+ className: "text-sm font-semibold text-slate-900"
408
+ }, loginMessage), onNeedLogin ? /*#__PURE__*/_react["default"].createElement("button", {
409
+ type: "button",
410
+ onClick: onNeedLogin,
411
+ className: "shrink-0 rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white hover:bg-slate-800"
412
+ }, loginLabel) : null) : null, isAuthenticated && authenticatedLabel ? /*#__PURE__*/_react["default"].createElement("p", {
413
+ className: "mb-6 text-sm text-slate-600"
414
+ }, authenticatedLabel) : null, successMessage && /*#__PURE__*/_react["default"].createElement("div", {
330
415
  className: "mb-8 flex flex-col items-center justify-center p-6 bg-green-50 border border-green-300 rounded-lg shadow animate-fade-in"
331
416
  }, /*#__PURE__*/_react["default"].createElement("div", {
332
417
  className: "mb-2"
@@ -368,7 +453,7 @@ var PowrForm = function PowrForm(_ref) {
368
453
  }, "No form fields found or invalid form structure"), /*#__PURE__*/_react["default"].createElement("button", {
369
454
  type: "submit",
370
455
  className: "w-full ".concat(buttonColor, " text-white py-3 px-4 rounded-md transition-colors")
371
- }, "Submit"))));
456
+ }, buttonText))));
372
457
  };
373
458
 
374
459
  // Input field wrapper component
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "6.7.0",
3
+ "version": "6.9.0",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"