@sonordev/site-kit 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/agent-manifest.json +6 -1
  2. package/dist/AnalyticsProvider-G5P5RQOA.js +31 -0
  3. package/dist/{AnalyticsProvider-UE34SYF2.js.map → AnalyticsProvider-G5P5RQOA.js.map} +1 -1
  4. package/dist/AnalyticsProvider-NGQLQL5N.mjs +10 -0
  5. package/dist/{AnalyticsProvider-NSXC6IOO.mjs.map → AnalyticsProvider-NGQLQL5N.mjs.map} +1 -1
  6. package/dist/ChatWidget-AYKZBKJH.js +20 -0
  7. package/dist/{ChatWidget-OW37OU3Z.js.map → ChatWidget-AYKZBKJH.js.map} +1 -1
  8. package/dist/ChatWidget-LPFHRK7U.mjs +11 -0
  9. package/dist/{ChatWidget-ASWCGCJJ.mjs.map → ChatWidget-LPFHRK7U.mjs.map} +1 -1
  10. package/dist/DatePicker-4WNKNNCV.mjs +4 -0
  11. package/dist/DatePicker-4WNKNNCV.mjs.map +1 -0
  12. package/dist/DatePicker-VPZR7RU3.js +13 -0
  13. package/dist/DatePicker-VPZR7RU3.js.map +1 -0
  14. package/dist/EngageWidget-HKPAJAMR.js +18 -0
  15. package/dist/{EngageWidget-MXOCMVBQ.js.map → EngageWidget-HKPAJAMR.js.map} +1 -1
  16. package/dist/EngageWidget-KDE7BYAK.mjs +9 -0
  17. package/dist/{EngageWidget-67UZ3P5P.mjs.map → EngageWidget-KDE7BYAK.mjs.map} +1 -1
  18. package/dist/FileField-DDDNSRMR.js +91 -0
  19. package/dist/FileField-DDDNSRMR.js.map +1 -0
  20. package/dist/FileField-SU4HTY4F.mjs +85 -0
  21. package/dist/FileField-SU4HTY4F.mjs.map +1 -0
  22. package/dist/{FormSpotlight-6MXGX6TU.mjs → FormSpotlight-B6TJPNYN.mjs} +7 -6
  23. package/dist/FormSpotlight-B6TJPNYN.mjs.map +1 -0
  24. package/dist/{FormSpotlight-LOR57ENP.js → FormSpotlight-M4S57VC6.js} +20 -19
  25. package/dist/FormSpotlight-M4S57VC6.js.map +1 -0
  26. package/dist/{FormStage-H35FBWTX.js → FormStage-2ASJGNOX.js} +16 -16
  27. package/dist/FormStage-2ASJGNOX.js.map +1 -0
  28. package/dist/{FormStage-ZLZD5EW4.mjs → FormStage-GH7SA6FQ.mjs} +6 -6
  29. package/dist/FormStage-GH7SA6FQ.mjs.map +1 -0
  30. package/dist/ManagedForm-D2JT3QV3.js +23 -0
  31. package/dist/ManagedForm-D2JT3QV3.js.map +1 -0
  32. package/dist/ManagedForm-RCC7NEV2.mjs +14 -0
  33. package/dist/ManagedForm-RCC7NEV2.mjs.map +1 -0
  34. package/dist/{SignalCore-HEXXYFSX.mjs → SignalCore-36PY3SRB.mjs} +5 -5
  35. package/dist/{SignalCore-HEXXYFSX.mjs.map → SignalCore-36PY3SRB.mjs.map} +1 -1
  36. package/dist/{SignalCore-EUMJIPDK.js → SignalCore-7H4ZGFZO.js} +11 -11
  37. package/dist/{SignalCore-EUMJIPDK.js.map → SignalCore-7H4ZGFZO.js.map} +1 -1
  38. package/dist/SitemapSync-AYVBNCH4.js +17 -0
  39. package/dist/{SitemapSync-HKUEDDG6.js.map → SitemapSync-AYVBNCH4.js.map} +1 -1
  40. package/dist/SitemapSync-HKAG3JU3.mjs +8 -0
  41. package/dist/{SitemapSync-T4QDPMFG.mjs.map → SitemapSync-HKAG3JU3.mjs.map} +1 -1
  42. package/dist/analytics/index.js +9 -9
  43. package/dist/analytics/index.mjs +4 -4
  44. package/dist/{chunk-ZGQUIL7L.js → chunk-2ACKOMAL.js} +105 -514
  45. package/dist/chunk-2ACKOMAL.js.map +1 -0
  46. package/dist/{chunk-52K556WM.js → chunk-2IH5FM2A.js} +14 -14
  47. package/dist/{chunk-52K556WM.js.map → chunk-2IH5FM2A.js.map} +1 -1
  48. package/dist/{chunk-PVE6G5XQ.mjs → chunk-2RJ5UHAC.mjs} +3 -3
  49. package/dist/{chunk-PVE6G5XQ.mjs.map → chunk-2RJ5UHAC.mjs.map} +1 -1
  50. package/dist/{chunk-VL2WAC22.js → chunk-3GJBSUVS.js} +14 -14
  51. package/dist/{chunk-VL2WAC22.js.map → chunk-3GJBSUVS.js.map} +1 -1
  52. package/dist/chunk-4ROQDPUE.mjs +60 -0
  53. package/dist/chunk-4ROQDPUE.mjs.map +1 -0
  54. package/dist/{chunk-4JEJTQYC.mjs → chunk-5GAOZTMW.mjs} +3 -3
  55. package/dist/{chunk-4JEJTQYC.mjs.map → chunk-5GAOZTMW.mjs.map} +1 -1
  56. package/dist/{chunk-NU5DJUVI.js → chunk-5JFJJNWS.js} +12 -192
  57. package/dist/chunk-5JFJJNWS.js.map +1 -0
  58. package/dist/{chunk-JGTIVQIN.mjs → chunk-7CYSA5EN.mjs} +3 -3
  59. package/dist/{chunk-JGTIVQIN.mjs.map → chunk-7CYSA5EN.mjs.map} +1 -1
  60. package/dist/{chunk-CTZHLX2B.mjs → chunk-7JES77WC.mjs} +5 -182
  61. package/dist/chunk-7JES77WC.mjs.map +1 -0
  62. package/dist/{chunk-DG34TZ6T.mjs → chunk-A4E6EOU4.mjs} +5 -5
  63. package/dist/{chunk-DG34TZ6T.mjs.map → chunk-A4E6EOU4.mjs.map} +1 -1
  64. package/dist/{chunk-YNIZKOEW.js → chunk-A624YYDG.js} +2 -2
  65. package/dist/{chunk-YNIZKOEW.js.map → chunk-A624YYDG.js.map} +1 -1
  66. package/dist/chunk-ANTVZSQI.mjs +183 -0
  67. package/dist/chunk-ANTVZSQI.mjs.map +1 -0
  68. package/dist/{chunk-2LKWN26R.mjs → chunk-D7IY27X5.mjs} +3 -3
  69. package/dist/{chunk-2LKWN26R.mjs.map → chunk-D7IY27X5.mjs.map} +1 -1
  70. package/dist/{chunk-QXIVUWQZ.js → chunk-DAGLPS6P.js} +8 -8
  71. package/dist/{chunk-QXIVUWQZ.js.map → chunk-DAGLPS6P.js.map} +1 -1
  72. package/dist/{chunk-XAMUTD4I.mjs → chunk-DBZU2TRZ.mjs} +3 -3
  73. package/dist/{chunk-XAMUTD4I.mjs.map → chunk-DBZU2TRZ.mjs.map} +1 -1
  74. package/dist/{chunk-I424AZPT.js → chunk-DCITIONV.js} +4 -4
  75. package/dist/{chunk-I424AZPT.js.map → chunk-DCITIONV.js.map} +1 -1
  76. package/dist/chunk-DVYYGHSG.js +285 -0
  77. package/dist/chunk-DVYYGHSG.js.map +1 -0
  78. package/dist/{chunk-62QRWS2I.mjs → chunk-FJ5EMPCK.mjs} +8 -8
  79. package/dist/{chunk-62QRWS2I.mjs.map → chunk-FJ5EMPCK.mjs.map} +1 -1
  80. package/dist/{chunk-6SHBMFYM.mjs → chunk-FNOCLT4A.mjs} +3 -3
  81. package/dist/{chunk-6SHBMFYM.mjs.map → chunk-FNOCLT4A.mjs.map} +1 -1
  82. package/dist/chunk-FQ4BDJXG.js +46 -0
  83. package/dist/chunk-FQ4BDJXG.js.map +1 -0
  84. package/dist/{chunk-EDFZ6EMM.js → chunk-FYPA5GLS.js} +15 -15
  85. package/dist/{chunk-EDFZ6EMM.js.map → chunk-FYPA5GLS.js.map} +1 -1
  86. package/dist/chunk-G7IMEY5T.mjs +44 -0
  87. package/dist/chunk-G7IMEY5T.mjs.map +1 -0
  88. package/dist/chunk-GJVC7KKL.mjs +508 -0
  89. package/dist/chunk-GJVC7KKL.mjs.map +1 -0
  90. package/dist/{chunk-Q7HLRTZA.js → chunk-HK33JRWA.js} +16 -16
  91. package/dist/{chunk-Q7HLRTZA.js.map → chunk-HK33JRWA.js.map} +1 -1
  92. package/dist/{chunk-ARBOKZAU.mjs → chunk-IUZ2RH4V.mjs} +3 -4
  93. package/dist/chunk-IUZ2RH4V.mjs.map +1 -0
  94. package/dist/{chunk-62RQTXHX.js → chunk-L6WWNP2N.js} +5 -5
  95. package/dist/{chunk-62RQTXHX.js.map → chunk-L6WWNP2N.js.map} +1 -1
  96. package/dist/chunk-LAWESLXJ.js +511 -0
  97. package/dist/chunk-LAWESLXJ.js.map +1 -0
  98. package/dist/{chunk-LYDTOFXJ.mjs → chunk-LB7LHVWI.mjs} +107 -503
  99. package/dist/chunk-LB7LHVWI.mjs.map +1 -0
  100. package/dist/{chunk-OIBQYBEL.mjs → chunk-LMKDQCU7.mjs} +3 -3
  101. package/dist/{chunk-OIBQYBEL.mjs.map → chunk-LMKDQCU7.mjs.map} +1 -1
  102. package/dist/{chunk-RZW4XVG5.js → chunk-LRHECSZK.js} +14 -14
  103. package/dist/{chunk-RZW4XVG5.js.map → chunk-LRHECSZK.js.map} +1 -1
  104. package/dist/{chunk-L5Q2ZJJM.js → chunk-MKQZVTD3.js} +6 -6
  105. package/dist/{chunk-L5Q2ZJJM.js.map → chunk-MKQZVTD3.js.map} +1 -1
  106. package/dist/chunk-MU3D5IO7.mjs +283 -0
  107. package/dist/chunk-MU3D5IO7.mjs.map +1 -0
  108. package/dist/{chunk-Z74IVGJB.mjs → chunk-MXPGAJLM.mjs} +4 -4
  109. package/dist/{chunk-Z74IVGJB.mjs.map → chunk-MXPGAJLM.mjs.map} +1 -1
  110. package/dist/{chunk-7QDTXT4N.js → chunk-NF3QVKWU.js} +6 -7
  111. package/dist/chunk-NF3QVKWU.js.map +1 -0
  112. package/dist/chunk-NSIRG3C3.js +148 -0
  113. package/dist/chunk-NSIRG3C3.js.map +1 -0
  114. package/dist/{chunk-WHGVQJG4.js → chunk-NTFLRRTQ.js} +8 -8
  115. package/dist/{chunk-WHGVQJG4.js.map → chunk-NTFLRRTQ.js.map} +1 -1
  116. package/dist/{chunk-NDB7EIOI.js → chunk-O554YMPI.js} +3 -3
  117. package/dist/{chunk-NDB7EIOI.js.map → chunk-O554YMPI.js.map} +1 -1
  118. package/dist/chunk-PKCEJWLD.mjs +6 -0
  119. package/dist/{chunk-6GFEJH4F.mjs.map → chunk-PKCEJWLD.mjs.map} +1 -1
  120. package/dist/{chunk-MJY7LYOV.mjs → chunk-QYLGVXRX.mjs} +4 -4
  121. package/dist/{chunk-MJY7LYOV.mjs.map → chunk-QYLGVXRX.mjs.map} +1 -1
  122. package/dist/chunk-R35CW6MM.js +8 -0
  123. package/dist/{chunk-34WY5XN2.js.map → chunk-R35CW6MM.js.map} +1 -1
  124. package/dist/chunk-S4U44UUD.mjs +138 -0
  125. package/dist/chunk-S4U44UUD.mjs.map +1 -0
  126. package/dist/{chunk-LDRE2ELU.js → chunk-SEH2K6NG.js} +12 -12
  127. package/dist/{chunk-LDRE2ELU.js.map → chunk-SEH2K6NG.js.map} +1 -1
  128. package/dist/chunk-TH2ANDPK.mjs +104 -0
  129. package/dist/chunk-TH2ANDPK.mjs.map +1 -0
  130. package/dist/{chunk-KHJYA64F.mjs → chunk-U2CJZ6O5.mjs} +2 -2
  131. package/dist/{chunk-KHJYA64F.mjs.map → chunk-U2CJZ6O5.mjs.map} +1 -1
  132. package/dist/{chunk-5GPFPMDQ.mjs → chunk-UDHQNYBD.mjs} +4 -4
  133. package/dist/{chunk-5GPFPMDQ.mjs.map → chunk-UDHQNYBD.mjs.map} +1 -1
  134. package/dist/chunk-UTANIZUO.js +110 -0
  135. package/dist/chunk-UTANIZUO.js.map +1 -0
  136. package/dist/{chunk-QABZPSHD.js → chunk-VJAUA77N.js} +5 -5
  137. package/dist/{chunk-QABZPSHD.js.map → chunk-VJAUA77N.js.map} +1 -1
  138. package/dist/{chunk-CBUK2XB3.js → chunk-VOYLJCHB.js} +9 -9
  139. package/dist/{chunk-CBUK2XB3.js.map → chunk-VOYLJCHB.js.map} +1 -1
  140. package/dist/{chunk-XCCW4Y3B.mjs → chunk-VPBLW4ZN.mjs} +5 -5
  141. package/dist/{chunk-XCCW4Y3B.mjs.map → chunk-VPBLW4ZN.mjs.map} +1 -1
  142. package/dist/{chunk-6535RSF5.mjs → chunk-WJJQWAG2.mjs} +3 -3
  143. package/dist/{chunk-6535RSF5.mjs.map → chunk-WJJQWAG2.mjs.map} +1 -1
  144. package/dist/chunk-WNUUVBD7.js +64 -0
  145. package/dist/chunk-WNUUVBD7.js.map +1 -0
  146. package/dist/{chunk-DPTNQVMK.mjs → chunk-XCCMVJUA.mjs} +3 -3
  147. package/dist/{chunk-DPTNQVMK.mjs.map → chunk-XCCMVJUA.mjs.map} +1 -1
  148. package/dist/chunk-XRQ47XDA.js +188 -0
  149. package/dist/chunk-XRQ47XDA.js.map +1 -0
  150. package/dist/{chunk-YGWWLTH5.js → chunk-ZDXGB3UC.js} +4 -4
  151. package/dist/{chunk-YGWWLTH5.js.map → chunk-ZDXGB3UC.js.map} +1 -1
  152. package/dist/cli/index.js +3 -3
  153. package/dist/cli/index.mjs +1 -1
  154. package/dist/client/index.js +5 -5
  155. package/dist/client/index.mjs +4 -4
  156. package/dist/cms/index.d.ts +23 -0
  157. package/dist/cms/index.d.ts.map +1 -1
  158. package/dist/cms/index.js +2 -2
  159. package/dist/cms/index.mjs +1 -1
  160. package/dist/cms/server-api.d.ts.map +1 -1
  161. package/dist/cms/server.js +4 -4
  162. package/dist/cms/server.mjs +1 -1
  163. package/dist/commerce/index.js +56 -56
  164. package/dist/commerce/index.mjs +5 -5
  165. package/dist/engage/EngageWidget.d.ts.map +1 -1
  166. package/dist/engage/dependency-contract.test.d.ts +2 -0
  167. package/dist/engage/dependency-contract.test.d.ts.map +1 -0
  168. package/dist/engage/index.js +10 -9
  169. package/dist/engage/index.js.map +1 -1
  170. package/dist/engage/index.mjs +7 -6
  171. package/dist/engage/index.mjs.map +1 -1
  172. package/dist/engage/socket-loader.d.ts +13 -0
  173. package/dist/engage/socket-loader.d.ts.map +1 -1
  174. package/dist/fleet/index.js +9 -9
  175. package/dist/fleet/index.mjs +5 -5
  176. package/dist/forms/FileField.d.ts +31 -0
  177. package/dist/forms/FileField.d.ts.map +1 -0
  178. package/dist/forms/FormClient.d.ts +10 -1
  179. package/dist/forms/FormClient.d.ts.map +1 -1
  180. package/dist/forms/FormEnhancer.d.ts +72 -0
  181. package/dist/forms/FormEnhancer.d.ts.map +1 -0
  182. package/dist/forms/FormField.d.ts +26 -3
  183. package/dist/forms/FormField.d.ts.map +1 -1
  184. package/dist/forms/FormSpotlight.d.ts.map +1 -1
  185. package/dist/forms/FormStage.d.ts.map +1 -1
  186. package/dist/forms/HoneypotField.d.ts +8 -2
  187. package/dist/forms/HoneypotField.d.ts.map +1 -1
  188. package/dist/forms/ManagedForm.d.ts +1 -1
  189. package/dist/forms/ManagedForm.d.ts.map +1 -1
  190. package/dist/forms/ServerForm.d.ts +73 -0
  191. package/dist/forms/ServerForm.d.ts.map +1 -0
  192. package/dist/forms/StaticForm.d.ts +50 -0
  193. package/dist/forms/StaticForm.d.ts.map +1 -0
  194. package/dist/forms/field-controls.d.ts +7 -0
  195. package/dist/forms/field-controls.d.ts.map +1 -0
  196. package/dist/forms/index.d.ts +7 -0
  197. package/dist/forms/index.d.ts.map +1 -1
  198. package/dist/forms/index.js +33 -557
  199. package/dist/forms/index.js.map +1 -1
  200. package/dist/forms/index.mjs +14 -550
  201. package/dist/forms/index.mjs.map +1 -1
  202. package/dist/forms/normalize-config.d.ts +18 -0
  203. package/dist/forms/normalize-config.d.ts.map +1 -0
  204. package/dist/forms/server.d.ts +5 -0
  205. package/dist/forms/server.d.ts.map +1 -1
  206. package/dist/forms/server.js +47 -0
  207. package/dist/forms/server.js.map +1 -1
  208. package/dist/forms/server.mjs +44 -1
  209. package/dist/forms/server.mjs.map +1 -1
  210. package/dist/forms/static-form.test.d.ts +2 -0
  211. package/dist/forms/static-form.test.d.ts.map +1 -0
  212. package/dist/forms/static.d.ts +17 -0
  213. package/dist/forms/static.d.ts.map +1 -0
  214. package/dist/forms/static.js +20 -0
  215. package/dist/forms/static.js.map +1 -0
  216. package/dist/forms/static.mjs +11 -0
  217. package/dist/forms/static.mjs.map +1 -0
  218. package/dist/forms/types.d.ts +7 -0
  219. package/dist/forms/types.d.ts.map +1 -1
  220. package/dist/forms/useForm.d.ts.map +1 -1
  221. package/dist/images/index.js +11 -11
  222. package/dist/images/index.mjs +4 -4
  223. package/dist/index.js +109 -109
  224. package/dist/index.mjs +9 -9
  225. package/dist/layout/client.js +9 -9
  226. package/dist/layout/client.mjs +8 -8
  227. package/dist/layout/index.js +11 -11
  228. package/dist/layout/index.mjs +9 -9
  229. package/dist/maps/index.js +5 -5
  230. package/dist/maps/index.mjs +3 -3
  231. package/dist/search/index.js +4 -4
  232. package/dist/search/index.mjs +3 -3
  233. package/dist/seo/client.js +5 -5
  234. package/dist/seo/client.mjs +4 -4
  235. package/dist/seo/index.js +14 -14
  236. package/dist/seo/index.mjs +6 -6
  237. package/dist/seo/server.js +5 -5
  238. package/dist/seo/server.mjs +1 -1
  239. package/dist/server/index.js +3 -3
  240. package/dist/server/index.mjs +2 -2
  241. package/dist/shared/build-entries.d.ts +6 -0
  242. package/dist/shared/build-entries.d.ts.map +1 -1
  243. package/dist/shared/no-cjs-require.test.d.ts +2 -0
  244. package/dist/shared/no-cjs-require.test.d.ts.map +1 -0
  245. package/dist/shared/version.d.ts +1 -1
  246. package/dist/signal/index.js +11 -11
  247. package/dist/signal/index.mjs +2 -2
  248. package/dist/{socket-loader-YEAQZ3XC.js → socket-loader-2NYBMBFQ.js} +2 -2
  249. package/dist/socket-loader-2NYBMBFQ.js.map +1 -0
  250. package/dist/{socket-loader-JHNN2QK4.mjs → socket-loader-JA2DI2RT.mjs} +2 -2
  251. package/dist/socket-loader-JA2DI2RT.mjs.map +1 -0
  252. package/dist/sync/index.js +16 -16
  253. package/dist/sync/index.mjs +4 -4
  254. package/package.json +28 -11
  255. package/dist/AnalyticsProvider-NSXC6IOO.mjs +0 -10
  256. package/dist/AnalyticsProvider-UE34SYF2.js +0 -31
  257. package/dist/ChatWidget-ASWCGCJJ.mjs +0 -10
  258. package/dist/ChatWidget-OW37OU3Z.js +0 -19
  259. package/dist/EngageWidget-67UZ3P5P.mjs +0 -9
  260. package/dist/EngageWidget-MXOCMVBQ.js +0 -18
  261. package/dist/FormSpotlight-6MXGX6TU.mjs.map +0 -1
  262. package/dist/FormSpotlight-LOR57ENP.js.map +0 -1
  263. package/dist/FormStage-H35FBWTX.js.map +0 -1
  264. package/dist/FormStage-ZLZD5EW4.mjs.map +0 -1
  265. package/dist/SitemapSync-HKUEDDG6.js +0 -17
  266. package/dist/SitemapSync-T4QDPMFG.mjs +0 -8
  267. package/dist/chunk-34WY5XN2.js +0 -8
  268. package/dist/chunk-6GFEJH4F.mjs +0 -6
  269. package/dist/chunk-7QDTXT4N.js.map +0 -1
  270. package/dist/chunk-ARBOKZAU.mjs.map +0 -1
  271. package/dist/chunk-CTZHLX2B.mjs.map +0 -1
  272. package/dist/chunk-LYDTOFXJ.mjs.map +0 -1
  273. package/dist/chunk-NU5DJUVI.js.map +0 -1
  274. package/dist/chunk-ZGQUIL7L.js.map +0 -1
  275. package/dist/socket-loader-JHNN2QK4.mjs.map +0 -1
  276. package/dist/socket-loader-YEAQZ3XC.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-XCCW4Y3B.mjs';
3
- import '../chunk-ZVBLXXNJ.mjs';
2
+ export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-VPBLW4ZN.mjs';
4
3
  export { FLEET_CONTRACT_VERSION, FLEET_MODULES, FLEET_MODULES_MAX, FLEET_SITE_MAX_LENGTH, FLEET_VERSION_MAX_LENGTH, FLEET_VERSION_PATTERN, buildFleetHeartbeatPayload, isFleetModule, normalizeFleetModules, normalizeFleetSite, sanitizeFleetVersion } from '../chunk-ZPLN537Q.mjs';
5
- import '../chunk-5GPFPMDQ.mjs';
6
- import '../chunk-JGTIVQIN.mjs';
7
- import '../chunk-6GFEJH4F.mjs';
4
+ import '../chunk-ZVBLXXNJ.mjs';
5
+ import '../chunk-UDHQNYBD.mjs';
6
+ import '../chunk-7CYSA5EN.mjs';
7
+ import '../chunk-PKCEJWLD.mjs';
8
8
  import '../chunk-BEXTDHO4.mjs';
9
9
  //# sourceMappingURL=index.mjs.map
10
10
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * File upload field — the one field type that cannot render on the server.
3
+ *
4
+ * It holds upload state and reads the browser-published credential globals, so
5
+ * it lives here rather than in FormField.tsx. Pulling it out is what lets
6
+ * FormField drop its `'use client'` directive and render inside a Server
7
+ * Component (see StaticForm.tsx); a form WITHOUT a file field now ships no
8
+ * field-rendering JavaScript at all.
9
+ *
10
+ * Uploads the chosen file to the Sonor API, which stores it and returns a
11
+ * public URL — that URL becomes the field value, so large files never touch
12
+ * the JSON submission body. The value stays empty until the upload succeeds,
13
+ * so a required file field correctly blocks submission until the upload
14
+ * completes (rather than submitting a useless bare filename).
15
+ *
16
+ * Note: forms containing a file field are NOT native-POST eligible (see
17
+ * native-fallback.tsx) — a form-encoded POST cannot run this upload — so the
18
+ * server shell renders a plain disabled-looking file input and the real
19
+ * control arrives with the enhancement.
20
+ */
21
+ import React from 'react';
22
+ import type { FormField as FormFieldType } from './types';
23
+ export interface FileFieldProps {
24
+ field: FormFieldType;
25
+ inputId: string;
26
+ classPrefix: string;
27
+ baseInputStyle: React.CSSProperties;
28
+ onChange: (value: unknown) => void;
29
+ }
30
+ export declare function FileField({ field, inputId, classPrefix, baseInputStyle, onChange, }: FileFieldProps): React.JSX.Element;
31
+ //# sourceMappingURL=FileField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileField.d.ts","sourceRoot":"","sources":["../../src/forms/FileField.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AAGzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAA;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,QAAQ,GACT,EAAE,cAAc,qBA6ChB"}
@@ -12,6 +12,15 @@ interface FormClientProps {
12
12
  onSuccess?: (submission: FormSubmission) => void;
13
13
  onError?: (error: Error) => void;
14
14
  customRender?: (props: FormRenderProps) => React.ReactNode;
15
+ /**
16
+ * Pre-fill field values by slug. For context the page already has and the
17
+ * visitor should not retype: an email captured earlier in a conversation,
18
+ * the service they were reading about, an estimate the assistant just
19
+ * produced. Applied ON TOP of each field's configured default_value.
20
+ *
21
+ * Unknown slugs are ignored, so a stale key cannot break the form.
22
+ */
23
+ defaultValues?: Record<string, unknown>;
15
24
  /**
16
25
  * Which rendering the form gets. Defaults to the form's `layout` config
17
26
  * (`layout: 'stage'` in Sonor flips a form to stage with no site deploy),
@@ -21,6 +30,6 @@ interface FormClientProps {
21
30
  /** Absolute page URL for the no-JS 303 to land on (see native-fallback). */
22
31
  nativeReturnTo?: string;
23
32
  }
24
- export declare function FormClient({ config, className, onSuccess, onError, customRender, experience, nativeReturnTo, }: FormClientProps): React.JSX.Element;
33
+ export declare function FormClient({ config, className, onSuccess, onError, customRender, experience, nativeReturnTo, defaultValues, }: FormClientProps): React.JSX.Element;
25
34
  export {};
26
35
  //# sourceMappingURL=FormClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormClient.d.ts","sourceRoot":"","sources":["../../src/forms/FormClient.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAIhF,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,SAAS,CAAA;AAEpE,UAAU,eAAe;IACvB,MAAM,EAAE,iBAAiB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1D;;;;OAIG;IACH,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,EACV,cAAc,GACf,EAAE,eAAe,qBAmnBjB"}
1
+ {"version":3,"file":"FormClient.d.ts","sourceRoot":"","sources":["../../src/forms/FormClient.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAIhF,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAA;AAOhB,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,SAAS,CAAA;AAEpE,UAAU,eAAe;IACvB,MAAM,EAAE,iBAAiB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1D;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,EACP,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,GACd,EAAE,eAAe,qBA6nBjB"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * FormEnhancer — the only client code a managed form needs up front.
3
+ *
4
+ * Renders the server-rendered shell (<StaticForm>, passed as `children`) until
5
+ * an idle/first-interaction gate fires, then lazy-imports the interactive form
6
+ * and swaps it in. Everything expensive — validation, conditional logic,
7
+ * spotlight/stage, celebration, momentum — lives behind that dynamic import,
8
+ * so a page ships this boundary and nothing else in its initial chunk set.
9
+ *
10
+ * The shell is a REAL form the whole time (native action + signed token), so
11
+ * the progression is:
12
+ *
13
+ * no JS at all -> shell, submits natively. Works.
14
+ * JS, pre-idle -> shell, submits natively. Works.
15
+ * JS, post-idle -> enhanced form, submits over JSON. Works, with delight.
16
+ * chunk 404s -> shell stays. Works. (Never left blank.)
17
+ *
18
+ * That last line is the invariant to protect: the shell is only removed once
19
+ * the enhancement has actually rendered. Do not "hide the shell then load" —
20
+ * a CDN hiccup would leave a visitor staring at an empty box where the form
21
+ * used to be.
22
+ *
23
+ * ── Entrance animation ──────────────────────────────────────────────────
24
+ *
25
+ * Above-the-fold forms upgrade while the visitor is looking at them, so the
26
+ * swap must not pop. The wrapper carries `data-sk-form-mount="shell"` and
27
+ * flips to `"enhanced"`, and the enhanced form gets `data-sk-enter` for one
28
+ * frame, so a site can style the transition entirely in CSS:
29
+ *
30
+ * [data-sk-form-mount] { transition: opacity .35s ease }
31
+ * [data-sk-form-mount="shell"] { opacity: .6 }
32
+ *
33
+ * Defaults ship as CSS variables rather than hard-coded values:
34
+ *
35
+ * --sk-form-enter-duration (default 320ms)
36
+ * --sk-form-enter-easing (default cubic-bezier(.22,1,.36,1))
37
+ * --sk-form-enter-distance (default 6px)
38
+ *
39
+ * `enter="none"` opts out entirely; `enter="custom"` emits the data
40
+ * attributes but no site-kit styles, leaving the animation to the site.
41
+ * Every default is collapsed by prefers-reduced-motion.
42
+ */
43
+ import React from 'react';
44
+ import type { FormExperience, FormSubmission } from './types';
45
+ export type FormEnterAnimation = 'fade' | 'none' | 'custom';
46
+ export interface FormEnhancerProps {
47
+ formId: string;
48
+ /** Server-fetched raw config — hands the enhancement its fields instantly. */
49
+ initialConfig?: Record<string, unknown> | null;
50
+ className?: string;
51
+ nativeReturnTo?: string;
52
+ experience?: FormExperience;
53
+ /** Pre-fill field values by slug. See ManagedForm.defaultValues. */
54
+ defaultValues?: Record<string, unknown>;
55
+ onSuccess?: (submission: FormSubmission) => void;
56
+ onError?: (error: Error) => void;
57
+ /**
58
+ * How the enhanced form arrives. 'fade' (default) crossfades and lifts it
59
+ * into place; 'none' swaps instantly; 'custom' emits the data attributes
60
+ * and no styles so the site owns the animation.
61
+ */
62
+ enter?: FormEnterAnimation;
63
+ /**
64
+ * Set false to enhance immediately instead of waiting for idle. Only worth
65
+ * it for a form that is the entire point of the page AND above the fold.
66
+ */
67
+ defer?: boolean;
68
+ /** The server-rendered <StaticForm>. Shown until the enhancement mounts. */
69
+ children: React.ReactNode;
70
+ }
71
+ export declare function FormEnhancer({ formId, initialConfig, className, nativeReturnTo, experience, defaultValues, onSuccess, onError, enter, defer, children, }: FormEnhancerProps): React.JSX.Element;
72
+ //# sourceMappingURL=FormEnhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormEnhancer.d.ts","sourceRoot":"","sources":["../../src/forms/FormEnhancer.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAsD,MAAM,OAAO,CAAA;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAO7D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC;;;;OAIG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,4EAA4E;IAC5E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,aAAa,EACb,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,EACb,SAAS,EACT,OAAO,EACP,KAAc,EACd,KAAY,EACZ,QAAQ,GACT,EAAE,iBAAiB,qBAiCnB"}
@@ -29,12 +29,35 @@ interface FormFieldProps {
29
29
  /** Render the valid-state tick (touched + validated). Text-like fields only. */
30
30
  showValid?: boolean;
31
31
  field: FormFieldType;
32
- value: unknown;
32
+ value?: unknown;
33
33
  error?: string;
34
- onChange: (value: unknown) => void;
34
+ /**
35
+ * Omit to render STATIC mode: uncontrolled native controls with
36
+ * `defaultValue`, no React state, no event handlers. That is what lets a
37
+ * Server Component render a complete, submittable form with zero client
38
+ * JavaScript (see StaticForm.tsx). Pass a handler for the usual controlled
39
+ * behaviour once the enhancement hydrates.
40
+ *
41
+ * The two modes MUST emit the same element/class structure — the
42
+ * enhancement replaces the shell in place, and a mismatch shows up as a
43
+ * visible jump. field-parity.test.tsx pins this.
44
+ */
45
+ onChange?: (value: unknown) => void;
35
46
  /** Optional class name prefix for custom styling */
36
47
  classPrefix?: string;
48
+ /**
49
+ * Client-only controls, injected by FormClient. DatePicker and FileField
50
+ * carry hooks; importing them here would pull them into this module's chunk
51
+ * and the build would stamp the whole thing `'use client'`, so a Server
52
+ * Component rendering one text input would ship the date picker too.
53
+ * Injection keeps this file hook-free and therefore server-renderable.
54
+ * Absent = static mode falls back to the native control.
55
+ */
56
+ controls?: {
57
+ Date?: React.ComponentType<any>;
58
+ File?: React.ComponentType<any>;
59
+ };
37
60
  }
38
- export declare function FormField({ field, value, error, onChange, classPrefix, showValid }: FormFieldProps): React.JSX.Element;
61
+ export declare function FormField({ field, value, error, onChange, classPrefix, showValid, controls }: FormFieldProps): React.JSX.Element;
39
62
  export {};
40
63
  //# sourceMappingURL=FormField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../src/forms/FormField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AAIzD,UAAU,cAAc;IACtB,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,aAAa,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AA4BD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAuB,EAAG,SAAS,EAAE,EAAE,cAAc,qBA8S/G"}
1
+ {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../src/forms/FormField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AAEzD,UAAU,cAAc;IACtB,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,aAAa,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACnC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;KAChC,CAAA;CACF;AA4BD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAuB,EAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,cAAc,qBA4WzH"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormSpotlight.d.ts","sourceRoot":"","sources":["../../src/forms/FormSpotlight.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAWhF,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AA+BhF;;6BAE6B;AAC7B,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,GAAG,IAAI,CAuEf;AAgID,wBAAgB,UAAU,sBAEzB;AAsBD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,MAAM,EACN,eAAe,EACf,QAAQ,GACT,EAAE,qBAAqB,qBA2kBvB"}
1
+ {"version":3,"file":"FormSpotlight.d.ts","sourceRoot":"","sources":["../../src/forms/FormSpotlight.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAYhF,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AA+BhF;;6BAE6B;AAC7B,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,GAAG,IAAI,CAuEf;AAgID,wBAAgB,UAAU,sBAEzB;AAsBD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,MAAM,EACN,eAAe,EACf,QAAQ,GACT,EAAE,qBAAqB,qBA+kBvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormStage.d.ts","sourceRoot":"","sources":["../../src/forms/FormStage.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAYhF,OAAO,KAAK,EAAE,qBAAqB,EAA8B,MAAM,SAAS,CAAA;AAKhF,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,MAAM,EACN,eAAe,EACf,QAAQ,GACT,EAAE,qBAAqB,qBAwevB"}
1
+ {"version":3,"file":"FormStage.d.ts","sourceRoot":"","sources":["../../src/forms/FormStage.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAahF,OAAO,KAAK,EAAE,qBAAqB,EAA8B,MAAM,SAAS,CAAA;AAKhF,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,MAAM,EACN,eAAe,EACf,QAAQ,GACT,EAAE,qBAAqB,qBA2evB"}
@@ -23,8 +23,14 @@
23
23
  import React from 'react';
24
24
  export interface HoneypotFieldProps {
25
25
  name: string;
26
- value: string;
27
- onChange: (value: string) => void;
26
+ value?: string;
27
+ /**
28
+ * Omit for STATIC mode — an uncontrolled trap a Server Component can render.
29
+ * The trap's whole job is server-side (the value is read off the submission
30
+ * and stripped), so it needs no client state to work; the controlled form is
31
+ * only so the hydrated JSON path can read it back out of React state.
32
+ */
33
+ onChange?: (value: string) => void;
28
34
  }
29
35
  export declare function HoneypotField({ name, value, onChange }: HoneypotFieldProps): React.JSX.Element;
30
36
  //# sourceMappingURL=HoneypotField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HoneypotField.d.ts","sourceRoot":"","sources":["../../src/forms/HoneypotField.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAoC1E"}
1
+ {"version":3,"file":"HoneypotField.d.ts","sourceRoot":"","sources":["../../src/forms/HoneypotField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAyC1E"}
@@ -4,5 +4,5 @@
4
4
  * Fetches form config from Portal API and renders fields with validation
5
5
  */
6
6
  import type { ManagedFormProps } from './types';
7
- export declare function ManagedForm({ formId, projectId, className, onSuccess, onError, initialConfig, experience, nativeReturnTo, children, }: ManagedFormProps): import("react").JSX.Element;
7
+ export declare function ManagedForm({ formId, projectId, className, onSuccess, onError, initialConfig, experience, nativeReturnTo, defaultValues, children, }: ManagedFormProps): import("react").JSX.Element;
8
8
  //# sourceMappingURL=ManagedForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedForm.d.ts","sourceRoot":"","sources":["../../src/forms/ManagedForm.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAQ/C,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,QAAQ,GACT,EAAE,gBAAgB,+BA0ClB"}
1
+ {"version":3,"file":"ManagedForm.d.ts","sourceRoot":"","sources":["../../src/forms/ManagedForm.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAQ/C,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,QAAQ,GACT,EAAE,gBAAgB,+BA2ClB"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * ServerForm — the managed form as a Server Component. This is the one to use.
3
+ *
4
+ * ```tsx
5
+ * import { ServerForm } from '@sonordev/site-kit/forms/server'
6
+ *
7
+ * export default function ContactPage() {
8
+ * return <ServerForm formId="contact" returnTo="https://example.com/contact/" />
9
+ * }
10
+ * ```
11
+ *
12
+ * That single line fetches the config on the server, renders a complete
13
+ * working `<form>` into the HTML, and upgrades it to the interactive
14
+ * experience at idle. No `'use client'` in the page, no config flash, no
15
+ * "Loading form...", and no forms runtime in the initial chunk set.
16
+ *
17
+ * What each layer is for:
18
+ *
19
+ * getFormConfig — server fetch, ISR-cached. No client round trip.
20
+ * StaticForm — real HTML form: fields, honeypot, signed native token.
21
+ * Submits without JavaScript.
22
+ * FormEnhancer — ~1 KB client boundary. Lazy-loads the interactive form
23
+ * at idle and swaps it in over the shell.
24
+ *
25
+ * Set `enhance={false}` for a form that should never load JavaScript at all —
26
+ * the native POST handles it, and the page ships zero form script.
27
+ *
28
+ * The client `ManagedForm` from `@sonordev/site-kit/forms` still exists and
29
+ * still works; reach for it only when the form must live inside an existing
30
+ * client component (a modal, a chat panel) where a Server Component cannot go.
31
+ */
32
+ import React from 'react';
33
+ import { type FormEnterAnimation } from './FormEnhancer';
34
+ import { type GetFormConfigOptions } from './server';
35
+ import type { FormExperience } from './types';
36
+ export interface ServerFormProps {
37
+ /** Form slug or id from Sonor. */
38
+ formId: string;
39
+ /**
40
+ * Absolute URL the no-JS submission should return to — normally the page
41
+ * hosting the form. Without it sonor-api falls back to the Referer origin,
42
+ * which lands the visitor on the site's homepage rather than back here.
43
+ */
44
+ returnTo?: string;
45
+ className?: string;
46
+ /** Rendering experience once enhanced. Defaults to the Sonor form config. */
47
+ experience?: FormExperience;
48
+ /** Entrance animation for the idle upgrade. See FormEnhancer. */
49
+ enter?: FormEnterAnimation;
50
+ /**
51
+ * false = ship no form JavaScript at all. The static form still submits via
52
+ * the native endpoint; you lose inline validation, the experiences, and the
53
+ * celebration. Good for a footer newsletter field, wrong for a long form.
54
+ */
55
+ enhance?: boolean;
56
+ /**
57
+ * false = enhance on mount instead of at idle. Only for a form that is the
58
+ * entire purpose of the page.
59
+ */
60
+ defer?: boolean;
61
+ /**
62
+ * Pre-fill field values by slug — context the page already has at render
63
+ * time (the service this page is about, a campaign source). Applied on top
64
+ * of each field's configured default_value.
65
+ */
66
+ defaultValues?: Record<string, unknown>;
67
+ /** Pre-fetched config, if the page already has it. Skips the fetch. */
68
+ initialConfig?: Record<string, unknown> | null;
69
+ /** Passed through to getFormConfig (api key / url / revalidate). */
70
+ configOptions?: GetFormConfigOptions;
71
+ }
72
+ export declare function ServerForm({ formId, returnTo, className, experience, enter, enhance, defer, initialConfig, configOptions, defaultValues, }: ServerFormProps): Promise<React.JSX.Element>;
73
+ //# sourceMappingURL=ServerForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerForm.d.ts","sourceRoot":"","sources":["../../src/forms/ServerForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,iEAAiE;IACjE,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC9C,oEAAoE;IACpE,aAAa,CAAC,EAAE,oBAAoB,CAAA;CACrC;AAED,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,KAAc,EACd,OAAc,EACd,KAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,GACd,EAAE,eAAe,8BA0BjB"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * StaticForm — a complete, submittable managed form with ZERO client JavaScript.
3
+ *
4
+ * No `'use client'`. This renders in a Server Component, and what it emits is
5
+ * a real `<form>`: every field, the honeypot, the signed native token, and a
6
+ * submit button. With JavaScript disabled, off, or still downloading, the
7
+ * browser performs an ordinary form-encoded POST to
8
+ * `/api/public/forms/submit-native`, sonor-api runs the honeypot +
9
+ * render-timestamp + quarantine stack, and the lead lands. 4.0.1 built that
10
+ * endpoint; this is what finally puts it under every form by default.
11
+ *
12
+ * ── Why this exists ─────────────────────────────────────────────────────
13
+ *
14
+ * ManagedForm was a client component for historical reasons that no longer
15
+ * hold: it used to fetch its own config (getFormConfig removed that) and it
16
+ * could only submit via JSON (the native endpoint removed that). Nobody moved
17
+ * the boundary afterward, so every site that rendered a form paid for the
18
+ * whole forms runtime — validation, spotlight, celebration, momentum — as an
19
+ * INITIAL script, on the LCP-critical path.
20
+ *
21
+ * Measured on upforge.io's homepage: 48 KB of form code in the initial chunk
22
+ * set cost 6 Lighthouse points (88 -> 82, LCP 3.8s -> 4.7s). Deferring the
23
+ * client component recovered the score but deleted the form from the HTML,
24
+ * taking the no-JS floor and crawlable fields with it. Neither half was
25
+ * acceptable; a server-rendered form is what makes both true at once.
26
+ *
27
+ * Pair it with <FormEnhancer> to upgrade this markup at idle. Alone, it is
28
+ * still a working form — that is the point. Never make this file `'use
29
+ * client'`, and never import a hook into it.
30
+ */
31
+ import React from 'react';
32
+ import type { ManagedFormConfig } from './types';
33
+ export interface StaticFormProps {
34
+ /**
35
+ * RAW /api/public/forms/config payload from `getFormConfig`, or an
36
+ * already-normalized config. Normalized here through the SAME function the
37
+ * client fetch uses, so the shell and the enhancement cannot disagree about
38
+ * field order, step count, or success copy.
39
+ */
40
+ config: Record<string, unknown> | ManagedFormConfig | null | undefined;
41
+ className?: string;
42
+ /**
43
+ * Absolute URL the no-JS 303 should return to (usually the page hosting the
44
+ * form). Without it the API falls back to the Referer origin — right site,
45
+ * wrong page.
46
+ */
47
+ nativeReturnTo?: string;
48
+ }
49
+ export declare function StaticForm({ config: raw, className, nativeReturnTo }: StaticFormProps): React.JSX.Element | null;
50
+ //# sourceMappingURL=StaticForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaticForm.d.ts","sourceRoot":"","sources":["../../src/forms/StaticForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAA;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAgBD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,eAAe,4BA2CrF"}
@@ -0,0 +1,7 @@
1
+ import type { FormField as FormFieldType } from './types';
2
+ export interface FieldControls {
3
+ Date?: React.ComponentType<any>;
4
+ File?: React.ComponentType<any>;
5
+ }
6
+ export declare function useFieldControls(fields: FormFieldType[] | undefined): FieldControls;
7
+ //# sourceMappingURL=field-controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-controls.d.ts","sourceRoot":"","sources":["../../src/forms/field-controls.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AAEzD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;CAChC;AAKD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,GAAG,aAAa,CA+CnF"}
@@ -100,6 +100,13 @@ export type { Form, FormField, FormStep, FormType, FieldType, CreateFormInput, U
100
100
  export { useForm } from './useForm';
101
101
  export type { UseFormOptions, UseFormReturn } from './useForm';
102
102
  export { ManagedForm } from './ManagedForm';
103
+ /**
104
+ * Client boundary that upgrades a server-rendered <StaticForm> at idle.
105
+ * Most sites want ServerForm from '@sonordev/site-kit/forms/server' instead,
106
+ * which wires this up for them.
107
+ */
108
+ export { FormEnhancer } from './FormEnhancer';
109
+ export type { FormEnhancerProps, FormEnterAnimation } from './FormEnhancer';
103
110
  export { FormClient } from './FormClient';
104
111
  export { FormCelebration } from './FormCelebration';
105
112
  export type { FormCelebrationProps } from './FormCelebration';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AAGH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5F,YAAY,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG7D,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,SAAS,IAAI,eAAe,GAC7B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AAGH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5F,YAAY,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG7D,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,SAAS,IAAI,eAAe,GAC7B,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}