@10x-media/form-builder 0.1.0-beta.1 → 0.1.0-beta.11

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 (556) hide show
  1. package/CHANGELOG.md +304 -0
  2. package/README.md +6 -4
  3. package/dist/actions/assertNoBlockCollision.js +18 -0
  4. package/dist/actions/assertNoBlockCollision.js.map +1 -0
  5. package/dist/actions/body/converters.d.ts +20 -0
  6. package/dist/actions/body/converters.js +57 -0
  7. package/dist/actions/body/converters.js.map +1 -0
  8. package/dist/actions/body/escapeHtml.d.ts +6 -0
  9. package/dist/actions/body/escapeHtml.js +14 -0
  10. package/dist/actions/body/escapeHtml.js.map +1 -0
  11. package/dist/actions/body/serializeBody.d.ts +55 -0
  12. package/dist/actions/body/serializeBody.js +78 -0
  13. package/dist/actions/body/serializeBody.js.map +1 -0
  14. package/dist/actions/body/serializeSlate.js +31 -0
  15. package/dist/actions/body/serializeSlate.js.map +1 -0
  16. package/dist/actions/body/textOfBody.d.ts +13 -0
  17. package/dist/actions/body/textOfBody.js +35 -0
  18. package/dist/actions/body/textOfBody.js.map +1 -0
  19. package/dist/actions/body/wildcards.d.ts +10 -0
  20. package/dist/actions/body/wildcards.js +33 -0
  21. package/dist/actions/body/wildcards.js.map +1 -0
  22. package/dist/actions/buildActionBlocks.js +12 -9
  23. package/dist/actions/buildActionBlocks.js.map +1 -1
  24. package/dist/actions/builtin/confirmation.js +47 -43
  25. package/dist/actions/builtin/confirmation.js.map +1 -1
  26. package/dist/actions/builtin/emailAction.d.ts +19 -0
  27. package/dist/actions/builtin/emailAction.js +114 -0
  28. package/dist/actions/builtin/emailAction.js.map +1 -0
  29. package/dist/actions/builtin/emailTeam.js +20 -38
  30. package/dist/actions/builtin/emailTeam.js.map +1 -1
  31. package/dist/actions/builtin/index.d.ts +16 -1
  32. package/dist/actions/builtin/index.js +21 -7
  33. package/dist/actions/builtin/index.js.map +1 -1
  34. package/dist/actions/builtin/signedWebhook.js +6 -2
  35. package/dist/actions/builtin/signedWebhook.js.map +1 -1
  36. package/dist/actions/defineAction.d.ts +8 -5
  37. package/dist/actions/defineAction.js.map +1 -1
  38. package/dist/actions/dispatch.js +3 -2
  39. package/dist/actions/dispatch.js.map +1 -1
  40. package/dist/actions/emailRecipients.d.ts +12 -0
  41. package/dist/actions/emailRecipients.js +143 -0
  42. package/dist/actions/emailRecipients.js.map +1 -0
  43. package/dist/actions/fromAddresses.d.ts +21 -0
  44. package/dist/actions/fromAddresses.js +74 -0
  45. package/dist/actions/fromAddresses.js.map +1 -0
  46. package/dist/actions/recipientSources.d.ts +34 -0
  47. package/dist/actions/recipientSources.js +11 -0
  48. package/dist/actions/recipientSources.js.map +1 -0
  49. package/dist/actions/registry.d.ts +2 -1
  50. package/dist/actions/registry.js +2 -6
  51. package/dist/actions/registry.js.map +1 -1
  52. package/dist/actions/runActions.js +10 -1
  53. package/dist/actions/runActions.js.map +1 -1
  54. package/dist/actions/task.js +40 -15
  55. package/dist/actions/task.js.map +1 -1
  56. package/dist/aggregation/aggregateResponses.d.ts +9 -0
  57. package/dist/aggregation/aggregateResponses.js +8 -14
  58. package/dist/aggregation/aggregateResponses.js.map +1 -1
  59. package/dist/aggregation/resolveResultsRequest.d.ts +35 -6
  60. package/dist/aggregation/resolveResultsRequest.js +68 -11
  61. package/dist/aggregation/resolveResultsRequest.js.map +1 -1
  62. package/dist/calc/computeCalcFields.js +2 -1
  63. package/dist/calc/computeCalcFields.js.map +1 -1
  64. package/dist/calc/evaluate.js +1 -2
  65. package/dist/calc/evaluate.js.map +1 -1
  66. package/dist/calc/normalizeCalc.js +6 -19
  67. package/dist/calc/normalizeCalc.js.map +1 -1
  68. package/dist/calc/types.d.ts +8 -2
  69. package/dist/calc/types.js +22 -0
  70. package/dist/calc/types.js.map +1 -0
  71. package/dist/client/ByteSizeField.d.ts +29 -0
  72. package/dist/client/ByteSizeField.js +58 -0
  73. package/dist/client/ByteSizeField.js.map +1 -0
  74. package/dist/client/ClosePollButton.d.ts +15 -0
  75. package/dist/client/ClosePollButton.js +80 -0
  76. package/dist/client/ClosePollButton.js.map +1 -0
  77. package/dist/client/CondensedArray.d.ts +15 -0
  78. package/dist/client/CondensedArray.js +97 -0
  79. package/dist/client/CondensedArray.js.map +1 -0
  80. package/dist/client/ConditionBuilder.js +2 -1
  81. package/dist/client/ConditionBuilder.js.map +1 -1
  82. package/dist/client/ConsentBlockLabel.d.ts +15 -0
  83. package/dist/client/ConsentBlockLabel.js +71 -0
  84. package/dist/client/ConsentBlockLabel.js.map +1 -0
  85. package/dist/client/ConsentSourceRowLabel.d.ts +9 -0
  86. package/dist/client/ConsentSourceRowLabel.js +21 -0
  87. package/dist/client/ConsentSourceRowLabel.js.map +1 -0
  88. package/dist/client/EndpointOptionsSelect.d.ts +46 -0
  89. package/dist/client/EndpointOptionsSelect.js +106 -0
  90. package/dist/client/EndpointOptionsSelect.js.map +1 -0
  91. package/dist/client/FieldBlockLabel.d.ts +18 -0
  92. package/dist/client/FieldBlockLabel.js +34 -0
  93. package/dist/client/FieldBlockLabel.js.map +1 -0
  94. package/dist/client/FieldNameSelect.d.ts +37 -0
  95. package/dist/client/FieldNameSelect.js +72 -0
  96. package/dist/client/FieldNameSelect.js.map +1 -0
  97. package/dist/client/FlowBuilder.d.ts +2 -2
  98. package/dist/client/FlowBuilder.js +137 -88
  99. package/dist/client/FlowBuilder.js.map +1 -1
  100. package/dist/client/FormConditionField.js +1 -4
  101. package/dist/client/FormConditionField.js.map +1 -1
  102. package/dist/client/RecipientsSelect.d.ts +35 -0
  103. package/dist/client/RecipientsSelect.js +193 -0
  104. package/dist/client/RecipientsSelect.js.map +1 -0
  105. package/dist/client/RuleDescription.d.ts +21 -0
  106. package/dist/client/RuleDescription.js +19 -0
  107. package/dist/client/RuleDescription.js.map +1 -0
  108. package/dist/client/admin.css +275 -0
  109. package/dist/client/endpointOptions.js +29 -0
  110. package/dist/client/endpointOptions.js.map +1 -0
  111. package/dist/client/flowAuthoring.js +142 -0
  112. package/dist/client/flowAuthoring.js.map +1 -0
  113. package/dist/client/synthesizeClientField.js +21 -10
  114. package/dist/client/synthesizeClientField.js.map +1 -1
  115. package/dist/client/toStaticLabel.js +13 -0
  116. package/dist/client/toStaticLabel.js.map +1 -0
  117. package/dist/collections/buttonFields.d.ts +34 -0
  118. package/dist/collections/buttonFields.js +35 -0
  119. package/dist/collections/buttonFields.js.map +1 -0
  120. package/dist/collections/cells/FieldCountCell.d.ts +15 -0
  121. package/dist/collections/cells/FieldCountCell.js +18 -0
  122. package/dist/collections/cells/FieldCountCell.js.map +1 -0
  123. package/dist/collections/cells/FlowStepsCell.d.ts +14 -0
  124. package/dist/collections/cells/FlowStepsCell.js +17 -0
  125. package/dist/collections/cells/FlowStepsCell.js.map +1 -0
  126. package/dist/collections/formSubmissions.js +133 -47
  127. package/dist/collections/formSubmissions.js.map +1 -1
  128. package/dist/collections/forms.js +416 -114
  129. package/dist/collections/forms.js.map +1 -1
  130. package/dist/collections/formsEndpoints.js +101 -0
  131. package/dist/collections/formsEndpoints.js.map +1 -0
  132. package/dist/collections/redirectFields.d.ts +29 -0
  133. package/dist/conditions/conditionType.js +9 -2
  134. package/dist/conditions/conditionType.js.map +1 -1
  135. package/dist/conditions/evaluate.js +1 -1
  136. package/dist/conditions/evaluate.js.map +1 -1
  137. package/dist/conditions/fieldTypes.d.ts +3 -1
  138. package/dist/conditions/fieldTypes.js +4 -1
  139. package/dist/conditions/fieldTypes.js.map +1 -1
  140. package/dist/conditions/normalizeConditions.js +20 -6
  141. package/dist/conditions/normalizeConditions.js.map +1 -1
  142. package/dist/consent/applyConsentStatements.d.ts +14 -0
  143. package/dist/consent/applyConsentStatements.js +17 -0
  144. package/dist/consent/applyConsentStatements.js.map +1 -0
  145. package/dist/consent/captureConsent.d.ts +38 -11
  146. package/dist/consent/captureConsent.js +60 -13
  147. package/dist/consent/captureConsent.js.map +1 -1
  148. package/dist/consent/consentSourcesField.d.ts +66 -0
  149. package/dist/consent/consentSourcesField.js +90 -0
  150. package/dist/consent/consentSourcesField.js.map +1 -0
  151. package/dist/consent/resolveConsentEntries.d.ts +24 -0
  152. package/dist/consent/resolveConsentEntries.js +40 -0
  153. package/dist/consent/resolveConsentEntries.js.map +1 -0
  154. package/dist/consent/resolveConsentSourcesRequest.d.ts +37 -0
  155. package/dist/consent/resolveConsentSourcesRequest.js +54 -0
  156. package/dist/consent/resolveConsentSourcesRequest.js.map +1 -0
  157. package/dist/consent/resolveConsentStatements.d.ts +45 -0
  158. package/dist/consent/resolveConsentStatements.js +44 -0
  159. package/dist/consent/resolveConsentStatements.js.map +1 -0
  160. package/dist/consent/resolvePublishedVersionRef.d.ts +17 -11
  161. package/dist/consent/resolvePublishedVersionRef.js +13 -10
  162. package/dist/consent/resolvePublishedVersionRef.js.map +1 -1
  163. package/dist/consent/types.d.ts +61 -0
  164. package/dist/context/formContext.d.ts +30 -0
  165. package/dist/context/formContext.js +54 -0
  166. package/dist/context/formContext.js.map +1 -0
  167. package/dist/email/departments.d.ts +59 -0
  168. package/dist/email/departments.js +87 -0
  169. package/dist/email/departments.js.map +1 -0
  170. package/dist/email/departmentsField.d.ts +53 -0
  171. package/dist/email/departmentsField.js +73 -0
  172. package/dist/email/departmentsField.js.map +1 -0
  173. package/dist/exports/client.d.ts +13 -1
  174. package/dist/exports/client.js +13 -1
  175. package/dist/exports/i18n.d.ts +5 -2
  176. package/dist/exports/i18n.js +5 -2
  177. package/dist/exports/react.d.ts +26 -8
  178. package/dist/exports/react.js +19 -3
  179. package/dist/exports/rsc.d.ts +9 -1
  180. package/dist/exports/rsc.js +9 -1
  181. package/dist/exports/types.d.ts +19 -10
  182. package/dist/fields/buildFieldBlocks.js +53 -19
  183. package/dist/fields/buildFieldBlocks.js.map +1 -1
  184. package/dist/fields/builtin/calculation.js +122 -2
  185. package/dist/fields/builtin/calculation.js.map +1 -1
  186. package/dist/fields/builtin/checkbox.js +8 -0
  187. package/dist/fields/builtin/checkbox.js.map +1 -1
  188. package/dist/fields/builtin/consent.js +30 -15
  189. package/dist/fields/builtin/consent.js.map +1 -1
  190. package/dist/fields/builtin/country.d.ts +13 -0
  191. package/dist/fields/builtin/country.js +30 -0
  192. package/dist/fields/builtin/country.js.map +1 -0
  193. package/dist/fields/builtin/date.js +31 -0
  194. package/dist/fields/builtin/date.js.map +1 -0
  195. package/dist/fields/builtin/email.js +1 -1
  196. package/dist/fields/builtin/email.js.map +1 -1
  197. package/dist/fields/builtin/file.d.ts +15 -0
  198. package/dist/fields/builtin/file.js +95 -8
  199. package/dist/fields/builtin/file.js.map +1 -1
  200. package/dist/fields/builtin/index.d.ts +26 -0
  201. package/dist/fields/builtin/index.js +30 -6
  202. package/dist/fields/builtin/index.js.map +1 -1
  203. package/dist/fields/builtin/message.js +30 -0
  204. package/dist/fields/builtin/message.js.map +1 -0
  205. package/dist/fields/builtin/repeater.js +49 -0
  206. package/dist/fields/builtin/repeater.js.map +1 -0
  207. package/dist/fields/builtin/select.js +8 -3
  208. package/dist/fields/builtin/select.js.map +1 -1
  209. package/dist/fields/builtin/state.d.ts +13 -0
  210. package/dist/fields/builtin/state.js +30 -0
  211. package/dist/fields/builtin/state.js.map +1 -0
  212. package/dist/fields/data/regions.d.ts +21 -0
  213. package/dist/fields/data/regions.js +1238 -0
  214. package/dist/fields/data/regions.js.map +1 -0
  215. package/dist/fields/fieldKey.d.ts +15 -0
  216. package/dist/fields/fieldKey.js +16 -0
  217. package/dist/fields/fieldKey.js.map +1 -0
  218. package/dist/fields/fieldNamesOfType.js +30 -0
  219. package/dist/fields/fieldNamesOfType.js.map +1 -0
  220. package/dist/fields/instanceOptions.js +20 -0
  221. package/dist/fields/instanceOptions.js.map +1 -0
  222. package/dist/fields/localizedIf.d.ts +13 -0
  223. package/dist/fields/localizedIf.js +12 -0
  224. package/dist/fields/localizedIf.js.map +1 -0
  225. package/dist/fields/registry.d.ts +3 -1
  226. package/dist/fields/registry.js +23 -8
  227. package/dist/fields/registry.js.map +1 -1
  228. package/dist/fields/sharedConfig.js +120 -58
  229. package/dist/fields/sharedConfig.js.map +1 -1
  230. package/dist/fields/types.d.ts +71 -7
  231. package/dist/flow/engine.d.ts +6 -4
  232. package/dist/flow/engine.js +11 -6
  233. package/dist/flow/engine.js.map +1 -1
  234. package/dist/flow/normalizeFlow.js +28 -9
  235. package/dist/flow/normalizeFlow.js.map +1 -1
  236. package/dist/flow/stepLabel.js +15 -0
  237. package/dist/flow/stepLabel.js.map +1 -0
  238. package/dist/flow/types.d.ts +12 -3
  239. package/dist/flow/types.js +11 -0
  240. package/dist/flow/types.js.map +1 -0
  241. package/dist/form/pollState.d.ts +22 -0
  242. package/dist/form/pollState.js +17 -0
  243. package/dist/form/pollState.js.map +1 -0
  244. package/dist/form/toFormDocument.d.ts +102 -0
  245. package/dist/form/toFormDocument.js +87 -0
  246. package/dist/form/toFormDocument.js.map +1 -0
  247. package/dist/form/types.d.ts +65 -0
  248. package/dist/index.d.ts +55 -39
  249. package/dist/index.js +89 -23
  250. package/dist/index.js.map +1 -1
  251. package/dist/options.d.ts +236 -0
  252. package/dist/plugin/applyRegistryConfig.d.ts +11 -0
  253. package/dist/plugin/applyRegistryConfig.js +20 -0
  254. package/dist/plugin/applyRegistryConfig.js.map +1 -0
  255. package/dist/plugin/collectionOverrides.d.ts +22 -0
  256. package/dist/plugin/customState.js +26 -0
  257. package/dist/plugin/customState.js.map +1 -0
  258. package/dist/plugin/registerCollections.js +40 -20
  259. package/dist/plugin/registerCollections.js.map +1 -1
  260. package/dist/plugin/uploadsCollection.d.ts +16 -0
  261. package/dist/plugin/uploadsCollection.js +53 -0
  262. package/dist/plugin/uploadsCollection.js.map +1 -0
  263. package/dist/poll/applyPollOptions.js +18 -0
  264. package/dist/poll/applyPollOptions.js.map +1 -0
  265. package/dist/poll/buildPollOptionSourceFields.js +50 -0
  266. package/dist/poll/buildPollOptionSourceFields.js.map +1 -0
  267. package/dist/poll/closeJob.d.ts +52 -0
  268. package/dist/poll/closeJob.js +119 -0
  269. package/dist/poll/closeJob.js.map +1 -0
  270. package/dist/poll/definePollOptionSource.d.ts +44 -0
  271. package/dist/poll/definePollOptionSource.js +6 -0
  272. package/dist/poll/definePollOptionSource.js.map +1 -0
  273. package/dist/poll/definePollType.d.ts +34 -0
  274. package/dist/poll/definePollType.js +6 -0
  275. package/dist/poll/definePollType.js.map +1 -0
  276. package/dist/poll/effectivePollOptions.d.ts +38 -0
  277. package/dist/poll/effectivePollOptions.js +64 -0
  278. package/dist/poll/effectivePollOptions.js.map +1 -0
  279. package/dist/poll/mostVoted.d.ts +21 -0
  280. package/dist/poll/mostVoted.js +32 -0
  281. package/dist/poll/mostVoted.js.map +1 -0
  282. package/dist/poll/outcomeBeforeChange.js +91 -0
  283. package/dist/poll/outcomeBeforeChange.js.map +1 -0
  284. package/dist/poll/outcomeFields.d.ts +38 -0
  285. package/dist/poll/outcomeFields.js +52 -0
  286. package/dist/poll/outcomeFields.js.map +1 -0
  287. package/dist/poll/pollTypeRegistry.d.ts +34 -0
  288. package/dist/poll/pollTypeRegistry.js +69 -0
  289. package/dist/poll/pollTypeRegistry.js.map +1 -0
  290. package/dist/poll/registry.d.ts +17 -0
  291. package/dist/poll/registry.js +12 -0
  292. package/dist/poll/registry.js.map +1 -0
  293. package/dist/poll/resolvePollCloseRequest.js +105 -0
  294. package/dist/poll/resolvePollCloseRequest.js.map +1 -0
  295. package/dist/poll/resolvePollOptions.d.ts +29 -0
  296. package/dist/poll/resolvePollOptions.js +52 -0
  297. package/dist/poll/resolvePollOptions.js.map +1 -0
  298. package/dist/poll/resolvePollOptionsRequest.js +50 -0
  299. package/dist/poll/resolvePollOptionsRequest.js.map +1 -0
  300. package/dist/poll/resolvePollOutcome.d.ts +34 -0
  301. package/dist/poll/resolvePollOutcome.js +76 -0
  302. package/dist/poll/resolvePollOutcome.js.map +1 -0
  303. package/dist/poll/resultsField.js +21 -0
  304. package/dist/poll/resultsField.js.map +1 -0
  305. package/dist/prefill/valuesFromSearchParams.js +5 -9
  306. package/dist/prefill/valuesFromSearchParams.js.map +1 -1
  307. package/dist/presentations/types.d.ts +3 -2
  308. package/dist/react/Form.d.ts +74 -20
  309. package/dist/react/Form.js +346 -180
  310. package/dist/react/Form.js.map +1 -1
  311. package/dist/react/FormContext.d.ts +44 -1
  312. package/dist/react/FormContext.js.map +1 -1
  313. package/dist/react/FormControls.d.ts +55 -0
  314. package/dist/react/FormControls.js +56 -0
  315. package/dist/react/FormControls.js.map +1 -0
  316. package/dist/react/FormFields.d.ts +18 -0
  317. package/dist/react/FormFields.js +114 -0
  318. package/dist/react/FormFields.js.map +1 -0
  319. package/dist/react/FormLayout.d.ts +4 -2
  320. package/dist/react/FormLayout.js +3 -2
  321. package/dist/react/FormLayout.js.map +1 -1
  322. package/dist/react/FormResults.d.ts +6 -3
  323. package/dist/react/FormResults.js +37 -29
  324. package/dist/react/FormResults.js.map +1 -1
  325. package/dist/react/FormSteps.d.ts +17 -0
  326. package/dist/react/FormSteps.js +35 -0
  327. package/dist/react/FormSteps.js.map +1 -0
  328. package/dist/react/Poll.d.ts +17 -6
  329. package/dist/react/Poll.js +79 -21
  330. package/dist/react/Poll.js.map +1 -1
  331. package/dist/react/captcha/HcaptchaCaptcha.d.ts +28 -0
  332. package/dist/react/captcha/HcaptchaCaptcha.js +53 -0
  333. package/dist/react/captcha/HcaptchaCaptcha.js.map +1 -0
  334. package/dist/react/captcha/RecaptchaCaptcha.d.ts +41 -0
  335. package/dist/react/captcha/RecaptchaCaptcha.js +93 -0
  336. package/dist/react/captcha/RecaptchaCaptcha.js.map +1 -0
  337. package/dist/react/captcha/TurnstileCaptcha.d.ts +28 -0
  338. package/dist/react/captcha/TurnstileCaptcha.js +53 -0
  339. package/dist/react/captcha/TurnstileCaptcha.js.map +1 -0
  340. package/dist/react/captcha/types.d.ts +8 -0
  341. package/dist/react/captcha/useCaptchaScript.js +45 -0
  342. package/dist/react/captcha/useCaptchaScript.js.map +1 -0
  343. package/dist/react/captcha/vendors.js +8 -0
  344. package/dist/react/captcha/vendors.js.map +1 -0
  345. package/dist/react/contract.d.ts +2 -3
  346. package/dist/react/contract.js.map +1 -1
  347. package/dist/react/fetchResults.d.ts +1 -1
  348. package/dist/react/fetchResults.js +1 -1
  349. package/dist/react/fetchResults.js.map +1 -1
  350. package/dist/react/presentation/DialogSurface.js +1 -4
  351. package/dist/react/presentation/DialogSurface.js.map +1 -1
  352. package/dist/react/primitives/Checkbox.d.ts +4 -2
  353. package/dist/react/primitives/Checkbox.js +2 -1
  354. package/dist/react/primitives/Checkbox.js.map +1 -1
  355. package/dist/react/primitives/FieldShell.d.ts +2 -4
  356. package/dist/react/primitives/FieldShell.js +12 -19
  357. package/dist/react/primitives/FieldShell.js.map +1 -1
  358. package/dist/react/primitives/Input.d.ts +1 -1
  359. package/dist/react/primitives/Input.js.map +1 -1
  360. package/dist/react/renderers/calculation.js +1 -4
  361. package/dist/react/renderers/calculation.js.map +1 -1
  362. package/dist/react/renderers/checkbox.js +1 -4
  363. package/dist/react/renderers/checkbox.js.map +1 -1
  364. package/dist/react/renderers/consent.js +78 -35
  365. package/dist/react/renderers/consent.js.map +1 -1
  366. package/dist/react/renderers/date.js +33 -0
  367. package/dist/react/renderers/date.js.map +1 -0
  368. package/dist/react/renderers/email.js +1 -4
  369. package/dist/react/renderers/email.js.map +1 -1
  370. package/dist/react/renderers/file.js +29 -14
  371. package/dist/react/renderers/file.js.map +1 -1
  372. package/dist/react/renderers/index.js +9 -0
  373. package/dist/react/renderers/index.js.map +1 -1
  374. package/dist/react/renderers/message.js +41 -0
  375. package/dist/react/renderers/message.js.map +1 -0
  376. package/dist/react/renderers/number.js +1 -4
  377. package/dist/react/renderers/number.js.map +1 -1
  378. package/dist/react/renderers/region.js +43 -0
  379. package/dist/react/renderers/region.js.map +1 -0
  380. package/dist/react/renderers/repeater.js +131 -0
  381. package/dist/react/renderers/repeater.js.map +1 -0
  382. package/dist/react/renderers/select.js +1 -4
  383. package/dist/react/renderers/select.js.map +1 -1
  384. package/dist/react/renderers/text.js +1 -4
  385. package/dist/react/renderers/text.js.map +1 -1
  386. package/dist/react/renderers/textarea.js +1 -4
  387. package/dist/react/renderers/textarea.js.map +1 -1
  388. package/dist/react/state.d.ts +40 -3
  389. package/dist/react/state.js +64 -9
  390. package/dist/react/state.js.map +1 -1
  391. package/dist/react/uploadFile.d.ts +2 -2
  392. package/dist/react/uploadFile.js +1 -1
  393. package/dist/react/uploadFile.js.map +1 -1
  394. package/dist/react/useField.d.ts +0 -1
  395. package/dist/react/useField.js +6 -6
  396. package/dist/react/useField.js.map +1 -1
  397. package/dist/react/useFormState.d.ts +1 -1
  398. package/dist/react/useFormState.js +1 -1
  399. package/dist/react/useFormState.js.map +1 -1
  400. package/dist/react/validateField.js +3 -6
  401. package/dist/react/validateField.js.map +1 -1
  402. package/dist/recall/interpolate.d.ts +4 -3
  403. package/dist/recall/interpolate.js +5 -4
  404. package/dist/recall/interpolate.js.map +1 -1
  405. package/dist/recall/resolver.d.ts +1 -1
  406. package/dist/recall/resolver.js +14 -2
  407. package/dist/recall/resolver.js.map +1 -1
  408. package/dist/spam/captcha.d.ts +4 -3
  409. package/dist/spam/captcha.js +4 -3
  410. package/dist/spam/captcha.js.map +1 -1
  411. package/dist/spam/clientIp.js +9 -0
  412. package/dist/spam/clientIp.js.map +1 -0
  413. package/dist/spam/constants.js +13 -1
  414. package/dist/spam/constants.js.map +1 -1
  415. package/dist/spam/identify.js +3 -6
  416. package/dist/spam/identify.js.map +1 -1
  417. package/dist/spam/providers/hcaptcha.d.ts +17 -0
  418. package/dist/spam/providers/hcaptcha.js +18 -0
  419. package/dist/spam/providers/hcaptcha.js.map +1 -0
  420. package/dist/spam/providers/recaptcha.d.ts +23 -0
  421. package/dist/spam/providers/recaptcha.js +23 -0
  422. package/dist/spam/providers/recaptcha.js.map +1 -0
  423. package/dist/spam/providers/siteverify.js +34 -0
  424. package/dist/spam/providers/siteverify.js.map +1 -0
  425. package/dist/spam/providers/turnstile.d.ts +17 -0
  426. package/dist/spam/providers/turnstile.js +18 -0
  427. package/dist/spam/providers/turnstile.js.map +1 -0
  428. package/dist/spam/resolveSpam.js +2 -1
  429. package/dist/spam/resolveSpam.js.map +1 -1
  430. package/dist/spam/spamGuard.js +23 -10
  431. package/dist/spam/spamGuard.js.map +1 -1
  432. package/dist/spam/types.d.ts +19 -4
  433. package/dist/submissions/SubmissionAnswers.d.ts +2 -4
  434. package/dist/submissions/SubmissionAnswers.js +114 -34
  435. package/dist/submissions/SubmissionAnswers.js.map +1 -1
  436. package/dist/submissions/SubmissionAnswersClient.js +178 -0
  437. package/dist/submissions/SubmissionAnswersClient.js.map +1 -0
  438. package/dist/submissions/coerceBoolean.js +14 -0
  439. package/dist/submissions/coerceBoolean.js.map +1 -0
  440. package/dist/submissions/createSubmission.d.ts +36 -0
  441. package/dist/submissions/createSubmission.js +26 -0
  442. package/dist/submissions/createSubmission.js.map +1 -0
  443. package/dist/submissions/runSubmission.d.ts +10 -0
  444. package/dist/submissions/runSubmission.js +128 -27
  445. package/dist/submissions/runSubmission.js.map +1 -1
  446. package/dist/submissions/types.d.ts +12 -4
  447. package/dist/submissions/validateSubmission.js +62 -11
  448. package/dist/submissions/validateSubmission.js.map +1 -1
  449. package/dist/submissions/verifyContext.js +35 -0
  450. package/dist/submissions/verifyContext.js.map +1 -0
  451. package/dist/submissions/votedCookie.d.ts +13 -0
  452. package/dist/submissions/votedCookie.js +27 -0
  453. package/dist/submissions/votedCookie.js.map +1 -0
  454. package/dist/translations/clientRuntimeKeys.d.ts +17 -0
  455. package/dist/translations/clientRuntimeKeys.js +46 -0
  456. package/dist/translations/clientRuntimeKeys.js.map +1 -0
  457. package/dist/translations/de.d.ts +12 -0
  458. package/dist/translations/de.js +313 -0
  459. package/dist/translations/de.js.map +1 -0
  460. package/dist/translations/en.js +207 -27
  461. package/dist/translations/en.js.map +1 -1
  462. package/dist/translations/index.d.ts +14 -5
  463. package/dist/translations/index.js +14 -3
  464. package/dist/translations/index.js.map +1 -1
  465. package/dist/translations/keys.d.ts +203 -23
  466. package/dist/translations/keys.js +204 -24
  467. package/dist/translations/keys.js.map +1 -1
  468. package/dist/translations/makeTranslate.d.ts +7 -3
  469. package/dist/translations/makeTranslate.js +12 -3
  470. package/dist/translations/makeTranslate.js.map +1 -1
  471. package/dist/translations/server.js +8 -1
  472. package/dist/translations/server.js.map +1 -1
  473. package/dist/uploads/captureFileRef.d.ts +10 -3
  474. package/dist/uploads/captureFileRef.js +18 -9
  475. package/dist/uploads/captureFileRef.js.map +1 -1
  476. package/dist/uploads/formatBytes.d.ts +9 -0
  477. package/dist/uploads/formatBytes.js +25 -0
  478. package/dist/uploads/formatBytes.js.map +1 -0
  479. package/dist/uploads/resolveFileRef.js +3 -2
  480. package/dist/uploads/resolveFileRef.js.map +1 -1
  481. package/dist/uploads/types.d.ts +1 -2
  482. package/dist/validation/buildRuleBlocks.js +18 -17
  483. package/dist/validation/buildRuleBlocks.js.map +1 -1
  484. package/dist/validation/builtin/email.js +2 -1
  485. package/dist/validation/builtin/email.js.map +1 -1
  486. package/dist/validation/builtin/index.d.ts +14 -0
  487. package/dist/validation/builtin/index.js +12 -1
  488. package/dist/validation/builtin/index.js.map +1 -1
  489. package/dist/validation/builtin/matchesField.js +3 -7
  490. package/dist/validation/builtin/matchesField.js.map +1 -1
  491. package/dist/validation/builtin/max.js +1 -0
  492. package/dist/validation/builtin/max.js.map +1 -1
  493. package/dist/validation/builtin/maxDate.js +24 -0
  494. package/dist/validation/builtin/maxDate.js.map +1 -0
  495. package/dist/validation/builtin/maxLength.js +1 -0
  496. package/dist/validation/builtin/maxLength.js.map +1 -1
  497. package/dist/validation/builtin/min.js +1 -0
  498. package/dist/validation/builtin/min.js.map +1 -1
  499. package/dist/validation/builtin/minDate.js +24 -0
  500. package/dist/validation/builtin/minDate.js.map +1 -0
  501. package/dist/validation/builtin/minLength.js +1 -0
  502. package/dist/validation/builtin/minLength.js.map +1 -1
  503. package/dist/validation/builtin/notAlreadySubmitted.js +2 -0
  504. package/dist/validation/builtin/notAlreadySubmitted.js.map +1 -1
  505. package/dist/validation/builtin/oneOf.js +1 -0
  506. package/dist/validation/builtin/oneOf.js.map +1 -1
  507. package/dist/validation/builtin/pattern.js +11 -2
  508. package/dist/validation/builtin/pattern.js.map +1 -1
  509. package/dist/validation/builtin/url.js +1 -0
  510. package/dist/validation/builtin/url.js.map +1 -1
  511. package/dist/validation/builtin/validateDateBound.js +18 -0
  512. package/dist/validation/builtin/validateDateBound.js.map +1 -0
  513. package/dist/validation/builtin/validateRegexParams.js +44 -0
  514. package/dist/validation/builtin/validateRegexParams.js.map +1 -0
  515. package/dist/validation/emailPattern.js +10 -0
  516. package/dist/validation/emailPattern.js.map +1 -0
  517. package/dist/validation/fieldTargetParam.d.ts +22 -0
  518. package/dist/validation/fieldTargetParam.js +38 -0
  519. package/dist/validation/fieldTargetParam.js.map +1 -0
  520. package/dist/validation/registry.d.ts +2 -1
  521. package/dist/validation/registry.js +2 -9
  522. package/dist/validation/registry.js.map +1 -1
  523. package/dist/validation/runValidation.js +9 -30
  524. package/dist/validation/runValidation.js.map +1 -1
  525. package/dist/validation/types.d.ts +5 -11
  526. package/dist/validation/validateUrl.js +22 -0
  527. package/dist/validation/validateUrl.js.map +1 -0
  528. package/package.json +7 -5
  529. package/styles/form-builder.css +10 -190
  530. package/dist/collections/uploads.d.ts +0 -29
  531. package/dist/collections/uploads.js +0 -46
  532. package/dist/collections/uploads.js.map +0 -1
  533. package/dist/consent/buildConsentSourceConfig.js +0 -49
  534. package/dist/consent/buildConsentSourceConfig.js.map +0 -1
  535. package/dist/consent/builtin/index.d.ts +0 -7
  536. package/dist/consent/builtin/index.js +0 -11
  537. package/dist/consent/builtin/index.js.map +0 -1
  538. package/dist/consent/builtin/pageReference.js +0 -75
  539. package/dist/consent/builtin/pageReference.js.map +0 -1
  540. package/dist/consent/builtin/static.js +0 -44
  541. package/dist/consent/builtin/static.js.map +0 -1
  542. package/dist/consent/defineConsentSource.d.ts +0 -35
  543. package/dist/consent/defineConsentSource.js +0 -6
  544. package/dist/consent/defineConsentSource.js.map +0 -1
  545. package/dist/consent/registry.d.ts +0 -16
  546. package/dist/consent/registry.js +0 -16
  547. package/dist/consent/registry.js.map +0 -1
  548. package/dist/consent/resolveConsentLinks.d.ts +0 -19
  549. package/dist/consent/resolveConsentLinks.js +0 -26
  550. package/dist/consent/resolveConsentLinks.js.map +0 -1
  551. package/dist/presentations/registry.d.ts +0 -15
  552. package/dist/presentations/registry.js +0 -15
  553. package/dist/presentations/registry.js.map +0 -1
  554. package/dist/react/toFormDocument.d.ts +0 -24
  555. package/dist/react/toFormDocument.js +0 -22
  556. package/dist/react/toFormDocument.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { fieldNamesOfType } from "../fields/fieldNamesOfType.js";
2
+ import { keys } from "../translations/keys.js";
3
+ import { asTranslate } from "../translations/server.js";
4
+ //#region src/poll/resultsField.ts
5
+ /** Slugs of registered field types choosable as a poll's results field (`pollEligible: true`). */
6
+ const pollEligibleTypes = (registry) => [...registry.values()].filter((definition) => definition.pollEligible === true).map((definition) => definition.type);
7
+ /**
8
+ * Validate for `poll.resultsField`, closed over the eligible type slugs derived from the registry
9
+ * at collection-build time (mirrors the confirmation action's `toField`): unset is fine, otherwise
10
+ * the value must name an existing, named field instance whose type is poll-eligible. Payload skips
11
+ * the validate while the poll is disabled (the field's `admin.condition`), so a stale reference on
12
+ * a disabled poll never blocks a save.
13
+ */
14
+ const buildValidateResultsField = (eligibleTypes) => (value, { data, req }) => {
15
+ if (typeof value !== "string" || value.length === 0) return true;
16
+ return fieldNamesOfType(data && typeof data === "object" ? data.fields : void 0, eligibleTypes).includes(value) ? true : asTranslate(req.t)(keys.validationResultsFieldUnknown);
17
+ };
18
+ //#endregion
19
+ export { buildValidateResultsField, pollEligibleTypes };
20
+
21
+ //# sourceMappingURL=resultsField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resultsField.js","names":[],"sources":["../../src/poll/resultsField.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\nimport { fieldNamesOfType } from '../fields/fieldNamesOfType'\nimport type { FieldTypeRegistry } from '../fields/registry'\nimport { keys } from '../translations/keys'\nimport { asTranslate } from '../translations/server'\n\n/** Slugs of registered field types choosable as a poll's results field (`pollEligible: true`). */\nexport const pollEligibleTypes = (registry: FieldTypeRegistry): string[] =>\n\t[...registry.values()]\n\t\t.filter((definition) => definition.pollEligible === true)\n\t\t.map((definition) => definition.type)\n\n/**\n * Validate for `poll.resultsField`, closed over the eligible type slugs derived from the registry\n * at collection-build time (mirrors the confirmation action's `toField`): unset is fine, otherwise\n * the value must name an existing, named field instance whose type is poll-eligible. Payload skips\n * the validate while the poll is disabled (the field's `admin.condition`), so a stale reference on\n * a disabled poll never blocks a save.\n */\nexport const buildValidateResultsField =\n\t(eligibleTypes: readonly string[]) =>\n\t(value: unknown, { data, req }: { data?: unknown; req: PayloadRequest }): string | true => {\n\t\tif (typeof value !== 'string' || value.length === 0) {\n\t\t\treturn true\n\t\t}\n\t\tconst fields =\n\t\t\tdata && typeof data === 'object' ? (data as Record<string, unknown>).fields : undefined\n\t\treturn fieldNamesOfType(fields, eligibleTypes).includes(value)\n\t\t\t? true\n\t\t\t: asTranslate(req.t)(keys.validationResultsFieldUnknown)\n\t}\n"],"mappings":";;;;;AAOA,MAAa,qBAAqB,aACjC,CAAC,GAAG,SAAS,OAAO,CAAC,EACnB,QAAQ,eAAe,WAAW,iBAAiB,IAAI,EACvD,KAAK,eAAe,WAAW,IAAI;;;;;;;;AAStC,MAAa,6BACX,mBACA,OAAgB,EAAE,MAAM,UAAkE;CAC1F,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW,GACjD,OAAO;CAIR,OAAO,iBADN,QAAQ,OAAO,SAAS,WAAY,KAAiC,SAAS,KAAA,GAC/C,aAAa,EAAE,SAAS,KAAK,IAC1D,OACA,YAAY,IAAI,CAAC,EAAE,KAAK,6BAA6B;AACzD"}
@@ -1,17 +1,13 @@
1
+ import { isNamedField } from "../fields/fieldKey.js";
2
+ import { isTruthyString } from "../submissions/coerceBoolean.js";
1
3
  //#region src/prefill/valuesFromSearchParams.ts
2
- const TRUTHY = new Set([
3
- "true",
4
- "1",
5
- "on",
6
- "yes"
7
- ]);
8
4
  const coerce = (kind, raw, all) => {
9
5
  switch (kind) {
10
6
  case "number": {
11
7
  const n = Number(raw);
12
8
  return Number.isNaN(n) ? void 0 : n;
13
9
  }
14
- case "boolean": return TRUTHY.has(raw.toLowerCase());
10
+ case "boolean": return isTruthyString(raw);
15
11
  case "text[]": return all;
16
12
  default: return raw;
17
13
  }
@@ -24,7 +20,7 @@ const coerce = (kind, raw, all) => {
24
20
  const valuesFromSearchParams = (params, fields, registry, options = {}) => {
25
21
  const isSearch = params instanceof URLSearchParams;
26
22
  const paramKeys = isSearch ? [...new Set(params.keys())] : Object.keys(params);
27
- const byName = new Map(fields.map((field) => [field.name, field]));
23
+ const byName = new Map(fields.filter(isNamedField).map((field) => [field.name, field]));
28
24
  const result = {};
29
25
  for (const param of paramKeys) {
30
26
  const fieldName = options.map?.[param] ?? param;
@@ -32,7 +28,7 @@ const valuesFromSearchParams = (params, fields, registry, options = {}) => {
32
28
  if (options.deny?.includes(fieldName)) continue;
33
29
  const field = byName.get(fieldName);
34
30
  const definition = field && registry.get(field.blockType);
35
- if (!field || !definition) continue;
31
+ if (!field || !definition || definition.value === "none") continue;
36
32
  const all = isSearch ? params.getAll(param) : [params[param]];
37
33
  const value = coerce(definition.value, all[0] ?? "", all);
38
34
  if (value !== void 0) result[fieldName] = value;
@@ -1 +1 @@
1
- {"version":3,"file":"valuesFromSearchParams.js","names":[],"sources":["../../src/prefill/valuesFromSearchParams.ts"],"sourcesContent":["import type { FieldTypeRegistry } from '../fields/registry'\nimport type { FormFieldValueKind } from '../fields/types'\nimport type { FormFieldInstance } from '../submissions/types'\n\nexport type PrefillOptions = {\n\t/** Map a query-param name to a field name. Unmapped params use their own name. */\n\tmap?: Record<string, string>\n\t/** If set, only these field names may be prefilled. */\n\tallow?: string[]\n\t/** These field names may never be prefilled. */\n\tdeny?: string[]\n}\n\nconst TRUTHY = new Set(['true', '1', 'on', 'yes'])\n\nconst coerce = (kind: FormFieldValueKind, raw: string, all: string[]): unknown => {\n\tswitch (kind) {\n\t\tcase 'number': {\n\t\t\tconst n = Number(raw)\n\t\t\treturn Number.isNaN(n) ? undefined : n\n\t\t}\n\t\tcase 'boolean':\n\t\t\treturn TRUTHY.has(raw.toLowerCase())\n\t\tcase 'text[]':\n\t\t\treturn all\n\t\tdefault:\n\t\t\treturn raw\n\t}\n}\n\n/**\n * Map URL/query params to typed initial values for KNOWN fields only, coerced by each field's value\n * kind. Unknown, denied, or un-allowed params are ignored; invalid numbers are dropped. Prefilled\n * values are never trusted -- they still validate on submit. Pass the result to `<Form initialValues>`.\n */\n// biome-ignore lint/complexity/useMaxParams: four positional args are the minimal surface (params, fields, registry, options)\nexport const valuesFromSearchParams = (\n\tparams: URLSearchParams | Record<string, string>,\n\tfields: FormFieldInstance[],\n\tregistry: FieldTypeRegistry,\n\toptions: PrefillOptions = {}\n): Record<string, unknown> => {\n\tconst isSearch = params instanceof URLSearchParams\n\tconst paramKeys = isSearch ? [...new Set(params.keys())] : Object.keys(params)\n\tconst byName = new Map(fields.map((field) => [field.name, field]))\n\tconst result: Record<string, unknown> = {}\n\n\tfor (const param of paramKeys) {\n\t\tconst fieldName = options.map?.[param] ?? param\n\n\t\tif (options.allow && !options.allow.includes(fieldName)) {\n\t\t\tcontinue\n\t\t}\n\t\tif (options.deny?.includes(fieldName)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst field = byName.get(fieldName)\n\t\tconst definition = field && registry.get(field.blockType)\n\t\tif (!field || !definition) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst all = isSearch ? params.getAll(param) : [params[param] as string]\n\t\tconst value = coerce(definition.value, all[0] ?? '', all)\n\t\tif (value !== undefined) {\n\t\t\tresult[fieldName] = value\n\t\t}\n\t}\n\n\treturn result\n}\n"],"mappings":";AAaA,MAAM,SAAS,IAAI,IAAI;CAAC;CAAQ;CAAK;CAAM;AAAK,CAAC;AAEjD,MAAM,UAAU,MAA0B,KAAa,QAA2B;CACjF,QAAQ,MAAR;EACC,KAAK,UAAU;GACd,MAAM,IAAI,OAAO,GAAG;GACpB,OAAO,OAAO,MAAM,CAAC,IAAI,KAAA,IAAY;EACtC;EACA,KAAK,WACJ,OAAO,OAAO,IAAI,IAAI,YAAY,CAAC;EACpC,KAAK,UACJ,OAAO;EACR,SACC,OAAO;CACT;AACD;;;;;;AAQA,MAAa,0BACZ,QACA,QACA,UACA,UAA0B,CAAC,MACE;CAC7B,MAAM,WAAW,kBAAkB;CACnC,MAAM,YAAY,WAAW,CAAC,GAAG,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAM;CAC7E,MAAM,SAAS,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;CACjE,MAAM,SAAkC,CAAC;CAEzC,KAAK,MAAM,SAAS,WAAW;EAC9B,MAAM,YAAY,QAAQ,MAAM,UAAU;EAE1C,IAAI,QAAQ,SAAS,CAAC,QAAQ,MAAM,SAAS,SAAS,GACrD;EAED,IAAI,QAAQ,MAAM,SAAS,SAAS,GACnC;EAGD,MAAM,QAAQ,OAAO,IAAI,SAAS;EAClC,MAAM,aAAa,SAAS,SAAS,IAAI,MAAM,SAAS;EACxD,IAAI,CAAC,SAAS,CAAC,YACd;EAGD,MAAM,MAAM,WAAW,OAAO,OAAO,KAAK,IAAI,CAAC,OAAO,MAAgB;EACtE,MAAM,QAAQ,OAAO,WAAW,OAAO,IAAI,MAAM,IAAI,GAAG;EACxD,IAAI,UAAU,KAAA,GACb,OAAO,aAAa;CAEtB;CAEA,OAAO;AACR"}
1
+ {"version":3,"file":"valuesFromSearchParams.js","names":[],"sources":["../../src/prefill/valuesFromSearchParams.ts"],"sourcesContent":["import { isNamedField } from '../fields/fieldKey'\nimport type { FieldTypeRegistry } from '../fields/registry'\nimport type { FormFieldValueKind } from '../fields/types'\nimport { isTruthyString } from '../submissions/coerceBoolean'\nimport type { FormFieldInstance } from '../submissions/types'\n\nexport type PrefillOptions = {\n\t/** Map a query-param name to a field name. Unmapped params use their own name. */\n\tmap?: Record<string, string>\n\t/** If set, only these field names may be prefilled. */\n\tallow?: string[]\n\t/** These field names may never be prefilled. */\n\tdeny?: string[]\n}\n\nconst coerce = (kind: FormFieldValueKind, raw: string, all: string[]): unknown => {\n\tswitch (kind) {\n\t\tcase 'number': {\n\t\t\tconst n = Number(raw)\n\t\t\treturn Number.isNaN(n) ? undefined : n\n\t\t}\n\t\tcase 'boolean':\n\t\t\treturn isTruthyString(raw)\n\t\tcase 'text[]':\n\t\t\treturn all\n\t\tdefault:\n\t\t\treturn raw\n\t}\n}\n\n/**\n * Map URL/query params to typed initial values for KNOWN fields only, coerced by each field's value\n * kind. Unknown, denied, or un-allowed params are ignored; invalid numbers are dropped. Prefilled\n * values are never trusted -- they still validate on submit. Pass the result to `<Form initialValues>`.\n */\n// biome-ignore lint/complexity/useMaxParams: four positional args are the minimal surface (params, fields, registry, options)\nexport const valuesFromSearchParams = (\n\tparams: URLSearchParams | Record<string, string>,\n\tfields: FormFieldInstance[],\n\tregistry: FieldTypeRegistry,\n\toptions: PrefillOptions = {}\n): Record<string, unknown> => {\n\tconst isSearch = params instanceof URLSearchParams\n\tconst paramKeys = isSearch ? [...new Set(params.keys())] : Object.keys(params)\n\tconst byName = new Map(fields.filter(isNamedField).map((field) => [field.name, field]))\n\tconst result: Record<string, unknown> = {}\n\n\tfor (const param of paramKeys) {\n\t\tconst fieldName = options.map?.[param] ?? param\n\n\t\tif (options.allow && !options.allow.includes(fieldName)) {\n\t\t\tcontinue\n\t\t}\n\t\tif (options.deny?.includes(fieldName)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst field = byName.get(fieldName)\n\t\tconst definition = field && registry.get(field.blockType)\n\t\t// 'none'-kind (display-only) fields carry no value, so a param under their name is ignored.\n\t\tif (!field || !definition || definition.value === 'none') {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst all = isSearch ? params.getAll(param) : [params[param] as string]\n\t\tconst value = coerce(definition.value, all[0] ?? '', all)\n\t\tif (value !== undefined) {\n\t\t\tresult[fieldName] = value\n\t\t}\n\t}\n\n\treturn result\n}\n"],"mappings":";;;AAeA,MAAM,UAAU,MAA0B,KAAa,QAA2B;CACjF,QAAQ,MAAR;EACC,KAAK,UAAU;GACd,MAAM,IAAI,OAAO,GAAG;GACpB,OAAO,OAAO,MAAM,CAAC,IAAI,KAAA,IAAY;EACtC;EACA,KAAK,WACJ,OAAO,eAAe,GAAG;EAC1B,KAAK,UACJ,OAAO;EACR,SACC,OAAO;CACT;AACD;;;;;;AAQA,MAAa,0BACZ,QACA,QACA,UACA,UAA0B,CAAC,MACE;CAC7B,MAAM,WAAW,kBAAkB;CACnC,MAAM,YAAY,WAAW,CAAC,GAAG,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAM;CAC7E,MAAM,SAAS,IAAI,IAAI,OAAO,OAAO,YAAY,EAAE,KAAK,UAAU,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;CACtF,MAAM,SAAkC,CAAC;CAEzC,KAAK,MAAM,SAAS,WAAW;EAC9B,MAAM,YAAY,QAAQ,MAAM,UAAU;EAE1C,IAAI,QAAQ,SAAS,CAAC,QAAQ,MAAM,SAAS,SAAS,GACrD;EAED,IAAI,QAAQ,MAAM,SAAS,SAAS,GACnC;EAGD,MAAM,QAAQ,OAAO,IAAI,SAAS;EAClC,MAAM,aAAa,SAAS,SAAS,IAAI,MAAM,SAAS;EAExD,IAAI,CAAC,SAAS,CAAC,cAAc,WAAW,UAAU,QACjD;EAGD,MAAM,MAAM,WAAW,OAAO,OAAO,KAAK,IAAI,CAAC,OAAO,MAAgB;EACtE,MAAM,QAAQ,OAAO,WAAW,OAAO,IAAI,MAAM,IAAI,GAAG;EACxD,IAAI,UAAU,KAAA,GACb,OAAO,aAAa;CAEtB;CAEA,OAAO;AACR"}
@@ -3,8 +3,9 @@
3
3
  type PresentationSurface = 'inline' | 'page' | 'overlay';
4
4
  type PresentationDensity = 'comfortable' | 'compact';
5
5
  /**
6
- * Serializable, framework-agnostic description of a presentation. The admin select and the
7
- * stored `defaultPresentation` use only this; the React `Wrapper` is added in `./react`. No React here.
6
+ * Serializable, framework-agnostic description of a presentation. `presentations/defaults.ts`
7
+ * ships the built-ins the React presentation registry wraps with a `Wrapper` (see `./react`). No
8
+ * React here.
8
9
  */
9
10
  type PresentationDescriptor = {
10
11
  name: string; /** i18n key or literal shown in the admin select. */
@@ -1,9 +1,10 @@
1
1
  import { AnyFormFieldDefinition } from "../fields/types.js";
2
- import { FormFieldInstance } from "../submissions/types.js";
3
- import { FormFlow } from "../flow/types.js";
2
+ import { BodyConverter } from "../actions/body/converters.js";
3
+ import { FormButtonSettings, FormDocument, FormPollSettings, FormResponseSettings } from "../form/types.js";
4
4
  import { RendererTranslate } from "./contract.js";
5
5
  import { FormEventSink } from "../events/types.js";
6
6
  import { AnyValidationRuleDefinition } from "../validation/types.js";
7
+ import { BackButtonRenderProps, NextButtonRenderProps, SubmitButtonRenderProps } from "./FormControls.js";
7
8
  import { FormPresentation } from "./presentation/types.js";
8
9
  import { PresentationsConfig } from "./presentation/registry.js";
9
10
  import { RenderersConfig } from "./registry.js";
@@ -11,11 +12,20 @@ import { SubmitHandler } from "./submitForm.js";
11
12
  import { ReactNode } from "react";
12
13
 
13
14
  //#region src/react/Form.d.ts
14
- type FormDocument = {
15
- id: number | string;
16
- fields: FormFieldInstance[];
17
- flow?: FormFlow; /** Stored presentation name; overridden by the `presentation` prop. */
18
- defaultPresentation?: string;
15
+ /**
16
+ * The success response passed to `onSuccess`, recall-resolved and (for a message) serialized with the
17
+ * form's active converters, so a host can render or toast the resolved response without re-deriving it.
18
+ */
19
+ type FormSuccessResponse = {
20
+ type: 'message';
21
+ html?: string;
22
+ } | {
23
+ type: 'redirect';
24
+ url?: string;
25
+ };
26
+ /** The second argument to `onSuccess`: the resolved success response (an object, so it can grow). */
27
+ type FormSuccessResult = {
28
+ response?: FormSuccessResponse;
19
29
  };
20
30
  type FormProps = {
21
31
  form: FormDocument;
@@ -24,28 +34,62 @@ type FormProps = {
24
34
  renderers?: RenderersConfig;
25
35
  apiRoute?: string;
26
36
  onSubmit?: SubmitHandler;
27
- onSuccess?: (submissionId?: string) => void;
37
+ /**
38
+ * Called after a successful submission with the submission id and the resolved success response
39
+ * (recall-applied, serialized with `converters`), so a host can toast or render it. Fires in both
40
+ * `successBehavior` modes and on the custom-`children` path.
41
+ */
42
+ onSuccess?: (submissionId?: string, result?: FormSuccessResult) => void;
28
43
  onError?: (message: string) => void;
44
+ /**
45
+ * Custom Lexical block converters (e.g. host `icon`/`badge` blocks) spread over the defaults for the
46
+ * client serializer, so those blocks survive in the success message and in the `onSuccess` response.
47
+ */
48
+ converters?: Record<string, BodyConverter>;
49
+ /**
50
+ * What happens on a successful submit. `'replace'` (default) swaps the form for the success screen;
51
+ * `'reset'` clears the fields in place and shows no success screen, so a host can toast via `onSuccess`
52
+ * and keep the form usable.
53
+ */
54
+ successBehavior?: 'replace' | 'reset';
29
55
  events?: FormEventSink;
30
56
  t?: RendererTranslate;
31
57
  locale?: string;
32
- layout?: boolean;
33
- submitLabel?: string;
34
- nextLabel?: string;
35
- backLabel?: string; /** Label for the overlay close control (modal/drawer). */
58
+ layout?: boolean; /** Submit button label. Precedence: this prop, then the form's `buttons.submitLabel`, then the translated default. */
59
+ submitLabel?: string; /** "Next" button label for multi-step forms. Precedence: this prop, then the form's `buttons.nextLabel`, then the translated default. */
60
+ nextLabel?: string; /** "Back" button label for multi-step forms. Precedence: this prop, then the form's `buttons.prevLabel`, then the translated default. */
61
+ prevLabel?: string; /** Label for the overlay close control (modal/drawer). */
36
62
  closeLabel?: string;
37
- successMessage?: string; /** Active presentation: a name into the registry or an inline presentation. Overrides the form's stored default. */
63
+ successMessage?: string; /** Active presentation: a name into the registry or an inline presentation. Defaults to `'page'` when omitted. */
38
64
  presentation?: string | FormPresentation; /** Per-render presentation overrides merged onto the defaults (add, replace, or `false` to remove). */
39
65
  presentations?: PresentationsConfig; /** Invoked when an overlay presentation dismisses (close button, Escape, outside click, or `dismissOnSuccess`). */
40
- onClose?: () => void; /** Accessible name for an overlay surface. */
66
+ onClose?: () => void;
67
+ /**
68
+ * Accessible name for an overlay surface (modal/drawer). Hosts choosing between a trigger
69
+ * label and the form's own admin title should prefer `form.title` when set, falling back to
70
+ * their own label otherwise.
71
+ */
41
72
  title?: string; /** Seed initial field values (e.g. from `valuesFromSearchParams`). Still validated on submit. */
42
73
  initialValues?: Record<string, unknown>; /** Honeypot decoy (on by default). `false` removes it; `{ name }` matches a customized server `spam.honeypot.fieldName`. */
43
74
  honeypot?: false | {
44
75
  name?: string;
45
76
  }; /** A token from your captcha widget; verified server-side when a captcha provider is configured. */
46
- captchaToken?: string; /** Custom layout: render fields with `useField`/`useFormState` instead of the auto-rendered field loop. */
47
- children?: ReactNode; /** Additional CSS class names applied to the root `<form>` element (and the success node). */
48
- className?: string;
77
+ captchaToken?: string;
78
+ /**
79
+ * A signed form-context token from `signFormContext` (server/RSC), tying this render to a document
80
+ * (e.g. the profile page it is on). Carried alongside the answers, verified server-side, and
81
+ * available to `email.recipientSources`; it is never stored as an answer.
82
+ */
83
+ context?: string; /** Custom layout: render fields with `useField`/`useFormState` instead of the auto-rendered field loop. */
84
+ children?: ReactNode; /** Chrome rendered inside the form, above the fields, in default mode (e.g. `<FormSteps />`). */
85
+ header?: ReactNode; /** Additional CSS class names applied to the root `<form>` element (and the success node). */
86
+ className?: string; /** Replace the default submit button entirely. Receives the resolved label and submitting state. */
87
+ renderSubmit?: (props: SubmitButtonRenderProps) => ReactNode; /** Replace the default "Next" button in multi-step forms. */
88
+ renderNext?: (props: NextButtonRenderProps) => ReactNode; /** Replace the default "Back" button in multi-step forms. */
89
+ renderBack?: (props: BackButtonRenderProps) => ReactNode; /** CSS class forwarded to the default submit `<button>`. Ignored when `renderSubmit` is provided. */
90
+ submitButtonClassName?: string; /** CSS class forwarded to the default "Next" `<button>`. Ignored when `renderNext` is provided. */
91
+ nextButtonClassName?: string; /** CSS class forwarded to the default "Back" `<button>`. Ignored when `renderBack` is provided. */
92
+ backButtonClassName?: string;
49
93
  };
50
94
  /** The headless form controller: state, progressive client validation, conditional visibility, submission, events. */
51
95
  declare const Form: ({
@@ -57,13 +101,15 @@ declare const Form: ({
57
101
  onSubmit,
58
102
  onSuccess,
59
103
  onError,
104
+ converters,
105
+ successBehavior,
60
106
  events,
61
107
  t,
62
108
  locale,
63
109
  layout,
64
110
  submitLabel,
65
111
  nextLabel,
66
- backLabel,
112
+ prevLabel,
67
113
  closeLabel,
68
114
  successMessage,
69
115
  presentation,
@@ -73,9 +119,17 @@ declare const Form: ({
73
119
  initialValues,
74
120
  honeypot,
75
121
  captchaToken,
122
+ context,
76
123
  children,
77
- className
124
+ header,
125
+ className,
126
+ renderSubmit,
127
+ renderNext,
128
+ renderBack,
129
+ submitButtonClassName,
130
+ nextButtonClassName,
131
+ backButtonClassName
78
132
  }: FormProps) => import("react/jsx-runtime").JSX.Element;
79
133
  //#endregion
80
- export { Form, FormDocument, FormProps };
134
+ export { Form, FormProps, FormSuccessResponse, FormSuccessResult };
81
135
  //# sourceMappingURL=Form.d.ts.map