@flamingo-stack/openframe-frontend-core 0.0.672 → 0.0.673-2406.7239.1

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 (164) hide show
  1. package/dist/{chunk-YNGAJGYB.cjs → chunk-6LWIJJJ6.cjs} +410 -6
  2. package/dist/{chunk-3PVOF3IB.js.map → chunk-6LWIJJJ6.cjs.map} +1 -1
  3. package/dist/{chunk-XLJNYTUW.cjs → chunk-6YSDCC3J.cjs} +56 -55
  4. package/dist/chunk-6YSDCC3J.cjs.map +1 -0
  5. package/dist/{chunk-GV7R2NTS.cjs → chunk-76DQOFZG.cjs} +23 -23
  6. package/dist/{chunk-GV7R2NTS.cjs.map → chunk-76DQOFZG.cjs.map} +1 -1
  7. package/dist/{chunk-UUOBCUHW.cjs → chunk-7ALCRUZ3.cjs} +3 -3
  8. package/dist/{chunk-UUOBCUHW.cjs.map → chunk-7ALCRUZ3.cjs.map} +1 -1
  9. package/dist/{chunk-PWPYCJ33.js → chunk-7RQZ2FTF.js} +2 -2
  10. package/dist/{chunk-XDTU23P4.js → chunk-ALSCESHG.js} +2 -2
  11. package/dist/{chunk-HVEX4BSC.cjs → chunk-AUQ4UITE.cjs} +60 -45
  12. package/dist/chunk-AUQ4UITE.cjs.map +1 -0
  13. package/dist/{chunk-CBCETEB4.cjs → chunk-E6B34U5Q.cjs} +6 -6
  14. package/dist/{chunk-CBCETEB4.cjs.map → chunk-E6B34U5Q.cjs.map} +1 -1
  15. package/dist/{chunk-H54F476P.cjs → chunk-FK3VSQ35.cjs} +3 -3
  16. package/dist/{chunk-H54F476P.cjs.map → chunk-FK3VSQ35.cjs.map} +1 -1
  17. package/dist/{chunk-HOEVEB7N.cjs → chunk-GCOVKIE7.cjs} +40 -29
  18. package/dist/chunk-GCOVKIE7.cjs.map +1 -0
  19. package/dist/{chunk-42OVTTOM.js → chunk-GIYAUKCY.js} +18 -3
  20. package/dist/{chunk-42OVTTOM.js.map → chunk-GIYAUKCY.js.map} +1 -1
  21. package/dist/{chunk-TQPKNG2E.js → chunk-INVZNRWB.js} +3 -3
  22. package/dist/{chunk-ZRIVCLPR.js → chunk-JD5TKRCU.js} +1 -1
  23. package/dist/chunk-JD5TKRCU.js.map +1 -0
  24. package/dist/{chunk-IBGHJLNT.js → chunk-JF4ZQZZJ.js} +2 -2
  25. package/dist/{chunk-SNWAN52K.cjs → chunk-JJDPSYBV.cjs} +3 -3
  26. package/dist/{chunk-SNWAN52K.cjs.map → chunk-JJDPSYBV.cjs.map} +1 -1
  27. package/dist/{chunk-D55IENZJ.cjs → chunk-LCMT2GZK.cjs} +1 -1
  28. package/dist/chunk-LCMT2GZK.cjs.map +1 -0
  29. package/dist/{chunk-AL4I5HHB.js → chunk-MMDGSGVE.js} +4 -4
  30. package/dist/{chunk-O5PYXQ6H.js → chunk-N3Q4FMMB.js} +3 -3
  31. package/dist/{chunk-RD3I5PBB.cjs → chunk-NUVRMZW5.cjs} +15 -15
  32. package/dist/{chunk-RD3I5PBB.cjs.map → chunk-NUVRMZW5.cjs.map} +1 -1
  33. package/dist/{chunk-T3KXCOB2.js → chunk-OIE6GKS3.js} +2 -2
  34. package/dist/{chunk-TFSGYKWG.js → chunk-OZL6FSB2.js} +28 -17
  35. package/dist/chunk-OZL6FSB2.js.map +1 -0
  36. package/dist/{chunk-NETIHUEY.cjs → chunk-P2A3KAYW.cjs} +10 -10
  37. package/dist/{chunk-NETIHUEY.cjs.map → chunk-P2A3KAYW.cjs.map} +1 -1
  38. package/dist/{chunk-6S2KLT7O.js → chunk-Q4KRZOQR.js} +4 -4
  39. package/dist/{chunk-BODMICIH.cjs → chunk-S7W7MTBM.cjs} +40 -40
  40. package/dist/{chunk-BODMICIH.cjs.map → chunk-S7W7MTBM.cjs.map} +1 -1
  41. package/dist/{chunk-3PVOF3IB.js → chunk-SGK4Q2W2.js} +407 -3
  42. package/dist/chunk-SGK4Q2W2.js.map +1 -0
  43. package/dist/{chunk-VZRVQEMT.cjs → chunk-SYTDEWZJ.cjs} +7 -7
  44. package/dist/{chunk-VZRVQEMT.cjs.map → chunk-SYTDEWZJ.cjs.map} +1 -1
  45. package/dist/{chunk-Z6E45TJM.js → chunk-TDCIGINK.js} +5 -5
  46. package/dist/{chunk-UOQRNZIB.cjs → chunk-TQATQ4CX.cjs} +17 -17
  47. package/dist/{chunk-UOQRNZIB.cjs.map → chunk-TQATQ4CX.cjs.map} +1 -1
  48. package/dist/{chunk-PSL2WBEO.cjs → chunk-TT6O7BUZ.cjs} +33 -33
  49. package/dist/{chunk-PSL2WBEO.cjs.map → chunk-TT6O7BUZ.cjs.map} +1 -1
  50. package/dist/{chunk-JREG4T6K.cjs → chunk-U7BJC4WF.cjs} +3 -3
  51. package/dist/{chunk-JREG4T6K.cjs.map → chunk-U7BJC4WF.cjs.map} +1 -1
  52. package/dist/{chunk-EKABOXNB.js → chunk-UIKMPCHW.js} +2 -2
  53. package/dist/{chunk-7KM34VWL.js → chunk-XMJT3QZ2.js} +3 -3
  54. package/dist/{chunk-4AZWVS7F.js → chunk-XSOL5ISO.js} +7 -6
  55. package/dist/{chunk-4AZWVS7F.js.map → chunk-XSOL5ISO.js.map} +1 -1
  56. package/dist/{chunk-KSBDARII.js → chunk-Y2ASYQ3P.js} +5 -5
  57. package/dist/components/case-studies/index.cjs +17 -14
  58. package/dist/components/case-studies/index.cjs.map +1 -1
  59. package/dist/components/case-studies/index.js +8 -5
  60. package/dist/components/case-studies/index.js.map +1 -1
  61. package/dist/components/case-studies/share-experience-section.d.ts.map +1 -1
  62. package/dist/components/contact/contact-form.d.ts +7 -1
  63. package/dist/components/contact/contact-form.d.ts.map +1 -1
  64. package/dist/components/contact/index.cjs +5 -5
  65. package/dist/components/contact/index.js +4 -4
  66. package/dist/components/docs/index.cjs +8 -8
  67. package/dist/components/docs/index.js +7 -7
  68. package/dist/components/embeds/index.cjs +5 -5
  69. package/dist/components/embeds/index.js +4 -4
  70. package/dist/components/faq/index.cjs +5 -5
  71. package/dist/components/faq/index.js +4 -4
  72. package/dist/components/features/index.cjs +4 -4
  73. package/dist/components/features/index.js +3 -3
  74. package/dist/components/features/waitlist-form.d.ts +7 -2
  75. package/dist/components/features/waitlist-form.d.ts.map +1 -1
  76. package/dist/components/help-center-pages/index.cjs +54 -52
  77. package/dist/components/help-center-pages/index.cjs.map +1 -1
  78. package/dist/components/help-center-pages/index.js +17 -15
  79. package/dist/components/help-center-pages/index.js.map +1 -1
  80. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  81. package/dist/components/index.cjs +35 -35
  82. package/dist/components/index.js +14 -14
  83. package/dist/components/meeting-scheduler/booking-form.d.ts +7 -1
  84. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  85. package/dist/components/meeting-scheduler/index.cjs +53 -31
  86. package/dist/components/meeting-scheduler/index.cjs.map +1 -1
  87. package/dist/components/meeting-scheduler/index.d.ts +5 -1
  88. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  89. package/dist/components/meeting-scheduler/index.js +31 -9
  90. package/dist/components/meeting-scheduler/index.js.map +1 -1
  91. package/dist/components/navigation/index.cjs +7 -7
  92. package/dist/components/navigation/index.js +6 -6
  93. package/dist/components/onboarding-guides/index.cjs +7 -7
  94. package/dist/components/onboarding-guides/index.js +6 -6
  95. package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
  96. package/dist/components/tickets/index.cjs +8 -8
  97. package/dist/components/tickets/index.js +7 -7
  98. package/dist/components/ui/index.cjs +4 -4
  99. package/dist/components/ui/index.js +3 -3
  100. package/dist/contexts/endpoints-runtime-context.d.ts +5 -0
  101. package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -1
  102. package/dist/contexts/index.cjs +2 -2
  103. package/dist/contexts/index.js +1 -1
  104. package/dist/hooks/index.cjs +9 -3
  105. package/dist/hooks/index.cjs.map +1 -1
  106. package/dist/hooks/index.d.ts +2 -0
  107. package/dist/hooks/index.d.ts.map +1 -1
  108. package/dist/hooks/index.js +8 -2
  109. package/dist/hooks/use-form-rescue.d.ts +43 -0
  110. package/dist/hooks/use-form-rescue.d.ts.map +1 -0
  111. package/dist/hooks/use-rescued-form.d.ts +28 -0
  112. package/dist/hooks/use-rescued-form.d.ts.map +1 -0
  113. package/dist/index.cjs +60 -8
  114. package/dist/index.cjs.map +1 -1
  115. package/dist/index.js +59 -7
  116. package/dist/index.js.map +1 -1
  117. package/dist/utils/form-rescue.cjs +142 -0
  118. package/dist/utils/form-rescue.cjs.map +1 -0
  119. package/dist/utils/form-rescue.d.ts +133 -0
  120. package/dist/utils/form-rescue.d.ts.map +1 -0
  121. package/dist/utils/form-rescue.js +118 -0
  122. package/dist/utils/form-rescue.js.map +1 -0
  123. package/dist/utils/index.cjs +138 -0
  124. package/dist/utils/index.cjs.map +1 -1
  125. package/dist/utils/index.d.ts +1 -0
  126. package/dist/utils/index.d.ts.map +1 -1
  127. package/dist/utils/index.js +116 -1
  128. package/dist/utils/index.js.map +1 -1
  129. package/package.json +7 -1
  130. package/src/components/case-studies/share-experience-section.tsx +2 -0
  131. package/src/components/contact/contact-form.tsx +33 -12
  132. package/src/components/features/waitlist-form.tsx +27 -2
  133. package/src/components/help-center-pages/trust-center-sections.tsx +2 -0
  134. package/src/components/meeting-scheduler/booking-form.tsx +30 -2
  135. package/src/components/meeting-scheduler/index.tsx +10 -1
  136. package/src/components/tickets/help-center-create-form.tsx +2 -0
  137. package/src/contexts/endpoints-runtime-context.tsx +5 -0
  138. package/src/hooks/__tests__/use-form-rescue.test.tsx +189 -0
  139. package/src/hooks/__tests__/use-rescued-form.test.tsx +91 -0
  140. package/src/hooks/index.ts +4 -0
  141. package/src/hooks/use-form-rescue.ts +330 -0
  142. package/src/hooks/use-rescued-form.ts +71 -0
  143. package/src/utils/__tests__/form-rescue.test.ts +124 -0
  144. package/src/utils/form-rescue.ts +237 -0
  145. package/src/utils/index.ts +5 -0
  146. package/dist/chunk-D55IENZJ.cjs.map +0 -1
  147. package/dist/chunk-HOEVEB7N.cjs.map +0 -1
  148. package/dist/chunk-HVEX4BSC.cjs.map +0 -1
  149. package/dist/chunk-TFSGYKWG.js.map +0 -1
  150. package/dist/chunk-XLJNYTUW.cjs.map +0 -1
  151. package/dist/chunk-YNGAJGYB.cjs.map +0 -1
  152. package/dist/chunk-ZRIVCLPR.js.map +0 -1
  153. /package/dist/{chunk-PWPYCJ33.js.map → chunk-7RQZ2FTF.js.map} +0 -0
  154. /package/dist/{chunk-XDTU23P4.js.map → chunk-ALSCESHG.js.map} +0 -0
  155. /package/dist/{chunk-TQPKNG2E.js.map → chunk-INVZNRWB.js.map} +0 -0
  156. /package/dist/{chunk-IBGHJLNT.js.map → chunk-JF4ZQZZJ.js.map} +0 -0
  157. /package/dist/{chunk-AL4I5HHB.js.map → chunk-MMDGSGVE.js.map} +0 -0
  158. /package/dist/{chunk-O5PYXQ6H.js.map → chunk-N3Q4FMMB.js.map} +0 -0
  159. /package/dist/{chunk-T3KXCOB2.js.map → chunk-OIE6GKS3.js.map} +0 -0
  160. /package/dist/{chunk-6S2KLT7O.js.map → chunk-Q4KRZOQR.js.map} +0 -0
  161. /package/dist/{chunk-Z6E45TJM.js.map → chunk-TDCIGINK.js.map} +0 -0
  162. /package/dist/{chunk-EKABOXNB.js.map → chunk-UIKMPCHW.js.map} +0 -0
  163. /package/dist/{chunk-7KM34VWL.js.map → chunk-XMJT3QZ2.js.map} +0 -0
  164. /package/dist/{chunk-KSBDARII.js.map → chunk-Y2ASYQ3P.js.map} +0 -0
@@ -5300,6 +5300,121 @@ function evaluateHumanitySignals(body, opts) {
5300
5300
  }
5301
5301
  var splitCsvEnv = (s) => s?.split(",").map((t) => t.trim()).filter(Boolean) ?? [];
5302
5302
 
5303
+ // src/utils/form-rescue.ts
5304
+ var FORM_ID_PATTERN = /^[a-z][a-z0-9_]{1,47}$/;
5305
+ var definitions = /* @__PURE__ */ new Map();
5306
+ function defineRescueForm(definition) {
5307
+ if (!FORM_ID_PATTERN.test(definition.id)) throw new Error(`[form-rescue] invalid form id "${definition.id}"`);
5308
+ const existing = definitions.get(definition.id);
5309
+ if (existing) {
5310
+ if (existing.label !== definition.label) {
5311
+ throw new Error(`[form-rescue] form id "${definition.id}" is already defined as "${existing.label}"`);
5312
+ }
5313
+ return existing;
5314
+ }
5315
+ const frozen = Object.freeze({ id: definition.id, label: definition.label });
5316
+ definitions.set(frozen.id, frozen);
5317
+ return frozen;
5318
+ }
5319
+ function getRescueForm(id) {
5320
+ return typeof id === "string" ? definitions.get(id) ?? null : null;
5321
+ }
5322
+ function listRescueForms() {
5323
+ return [...definitions.values()];
5324
+ }
5325
+ var RESCUE_FORMS = {
5326
+ contact: defineRescueForm({ id: "contact", label: "Contact form" }),
5327
+ caseStudyPitch: defineRescueForm({ id: "case_study_pitch", label: "Case study pitch" }),
5328
+ dataRoomRequest: defineRescueForm({ id: "data_room_request", label: "Data room request" }),
5329
+ trustCenterRequest: defineRescueForm({ id: "trust_center_request", label: "Trust Center document request" }),
5330
+ meetingBooking: defineRescueForm({ id: "meeting_booking", label: "Meeting booking" }),
5331
+ waitlist: defineRescueForm({ id: "waitlist", label: "Waitlist" })
5332
+ };
5333
+ var FORM_RESCUE_VALUE_FIELDS = [
5334
+ "email",
5335
+ "name",
5336
+ "firstName",
5337
+ "lastName",
5338
+ "company",
5339
+ "jobtitle",
5340
+ "companySize",
5341
+ "linkedin_url"
5342
+ ];
5343
+ var EXCLUDED_FIELD_PATTERN = /pass(word|code)?|card|cvv|cvc|ssn|social.?security|iban|bank|routing|token|secret|otp|pin$/i;
5344
+ function isExcludedRescueField(name) {
5345
+ return EXCLUDED_FIELD_PATTERN.test(name);
5346
+ }
5347
+ var FORM_RESCUE_MAX_VALUE_CHARS = 200;
5348
+ var FORM_RESCUE_DEBOUNCE_MS = 1500;
5349
+ var FORM_RESCUE_MAX_FIELDS = 40;
5350
+ var FORM_RESCUE_ATTEMPT_FIELD = "form_attempt_id";
5351
+ var FORM_RESCUE_RESUME_FIELD = "form_resume_token";
5352
+ var FORM_RESCUE_SUBMIT_KEYS = [FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_RESUME_FIELD];
5353
+ var FORM_RESCUE_RESUME_PARAM = "resume";
5354
+ var FORM_DRAFT_STATUSES = ["started", "rescuable", "rescued", "submitted"];
5355
+ var FORM_RESCUE_SKIP_REASONS = {
5356
+ finishedElsewhere: "finished_elsewhere",
5357
+ alreadyRescued: "already_rescued",
5358
+ internal: "internal_email"
5359
+ };
5360
+ var EMAIL_PATTERN = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
5361
+ function isRescueEmail(value) {
5362
+ return typeof value === "string" && value.length <= FORM_RESCUE_MAX_VALUE_CHARS && EMAIL_PATTERN.test(value.trim());
5363
+ }
5364
+ var UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
5365
+ function isFormAttemptId(value) {
5366
+ return typeof value === "string" && UUID_PATTERN.test(value);
5367
+ }
5368
+ function isFilled(value) {
5369
+ if (value == null) return false;
5370
+ if (typeof value === "string") return value.trim().length > 0;
5371
+ if (typeof value === "boolean") return value;
5372
+ if (Array.isArray(value)) return value.length > 0;
5373
+ if (typeof value === "object") return Object.values(value).some(isFilled);
5374
+ return true;
5375
+ }
5376
+ function sanitizeRescueValues(values) {
5377
+ const out = {};
5378
+ if (!values || typeof values !== "object") return out;
5379
+ for (const key of FORM_RESCUE_VALUE_FIELDS) {
5380
+ if (isExcludedRescueField(key)) continue;
5381
+ const raw = values[key];
5382
+ if (typeof raw !== "string") continue;
5383
+ const trimmed = raw.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
5384
+ if (trimmed) out[key] = trimmed;
5385
+ }
5386
+ return out;
5387
+ }
5388
+ function filledRescueFields(values, fieldNames) {
5389
+ return fieldNames.filter((name) => !isExcludedRescueField(name) && isFilled(values[name])).slice(0, FORM_RESCUE_MAX_FIELDS);
5390
+ }
5391
+ function rescueCompletionPct(filledCount, totalCount) {
5392
+ if (totalCount <= 0) return 0;
5393
+ return Math.max(0, Math.min(100, Math.round(filledCount / totalCount * 100)));
5394
+ }
5395
+ function sanitizeRescueFieldName(value) {
5396
+ if (typeof value !== "string") return null;
5397
+ const trimmed = value.trim();
5398
+ return /^[A-Za-z0-9_.-]{1,64}$/.test(trimmed) && !isExcludedRescueField(trimmed) ? trimmed : null;
5399
+ }
5400
+ var FORM_RESCUE_EVENTS = {
5401
+ started: "form_started",
5402
+ progress: "form_progress",
5403
+ leadCaptured: "form_lead_captured",
5404
+ abandoned: "form_abandoned",
5405
+ submitted: "form_submitted",
5406
+ rescued: "form_rescued",
5407
+ resumed: "form_resumed"
5408
+ };
5409
+ function captureFormRescueEvent(event, properties) {
5410
+ try {
5411
+ if (typeof window === "undefined") return;
5412
+ const ph = window.posthog;
5413
+ if (typeof ph?.capture === "function") ph.capture(event, properties);
5414
+ } catch {
5415
+ }
5416
+ }
5417
+
5303
5418
  // src/utils/doc-tree-nav.ts
5304
5419
  var DEFAULT_FOLDER_INDEX_FILE = "README.md";
5305
5420
  var DEFAULT_FOLDER_INDEX = DEFAULT_FOLDER_INDEX_FILE;
@@ -6032,6 +6147,17 @@ exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS;
6032
6147
  exports.DOC_TABLE_TYPES = DOC_TABLE_TYPES;
6033
6148
  exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD;
6034
6149
  exports.FIRST_TOUCH_ATTRIBUTION_KEY = FIRST_TOUCH_ATTRIBUTION_KEY;
6150
+ exports.FORM_DRAFT_STATUSES = FORM_DRAFT_STATUSES;
6151
+ exports.FORM_RESCUE_ATTEMPT_FIELD = FORM_RESCUE_ATTEMPT_FIELD;
6152
+ exports.FORM_RESCUE_DEBOUNCE_MS = FORM_RESCUE_DEBOUNCE_MS;
6153
+ exports.FORM_RESCUE_EVENTS = FORM_RESCUE_EVENTS;
6154
+ exports.FORM_RESCUE_MAX_FIELDS = FORM_RESCUE_MAX_FIELDS;
6155
+ exports.FORM_RESCUE_MAX_VALUE_CHARS = FORM_RESCUE_MAX_VALUE_CHARS;
6156
+ exports.FORM_RESCUE_RESUME_FIELD = FORM_RESCUE_RESUME_FIELD;
6157
+ exports.FORM_RESCUE_RESUME_PARAM = FORM_RESCUE_RESUME_PARAM;
6158
+ exports.FORM_RESCUE_SKIP_REASONS = FORM_RESCUE_SKIP_REASONS;
6159
+ exports.FORM_RESCUE_SUBMIT_KEYS = FORM_RESCUE_SUBMIT_KEYS;
6160
+ exports.FORM_RESCUE_VALUE_FIELDS = FORM_RESCUE_VALUE_FIELDS;
6035
6161
  exports.FullscreenSwitchController = FullscreenSwitchController;
6036
6162
  exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS;
6037
6163
  exports.HEADING_EMOJI_RE = HEADING_EMOJI_RE;
@@ -6057,6 +6183,7 @@ exports.PLATFORM_SURFACE = PLATFORM_SURFACE;
6057
6183
  exports.PLATFORM_THEME = PLATFORM_THEME;
6058
6184
  exports.PLAY_ICON_PATH = PLAY_ICON_PATH;
6059
6185
  exports.PROGRAM_META_RENDERERS = PROGRAM_META_RENDERERS;
6186
+ exports.RESCUE_FORMS = RESCUE_FORMS;
6060
6187
  exports.ROADMAP_STATUS_OPTIONS = ROADMAP_STATUS_OPTIONS;
6061
6188
  exports.SCHEDULING_SLUG_SHAPE = SCHEDULING_SLUG_SHAPE;
6062
6189
  exports.SCROLL_ANCHOR = SCROLL_ANCHOR;
@@ -6091,6 +6218,7 @@ exports.buildSuggestionUrl = buildSuggestionUrl;
6091
6218
  exports.buildTicketOpenHref = buildTicketOpenHref;
6092
6219
  exports.canonicalContentRefType = canonicalContentRefType;
6093
6220
  exports.captureFirstTouchAttribution = captureFirstTouchAttribution;
6221
+ exports.captureFormRescueEvent = captureFormRescueEvent;
6094
6222
  exports.clamp = clamp;
6095
6223
  exports.clampPageToTotal = clampPageToTotal;
6096
6224
  exports.classifySocialHost = classifySocialHost;
@@ -6113,6 +6241,7 @@ exports.createUTCTimestamp = createUTCTimestamp;
6113
6241
  exports.csvEscape = csvEscape;
6114
6242
  exports.deepClone = deepClone;
6115
6243
  exports.defineParamSchema = defineParamSchema;
6244
+ exports.defineRescueForm = defineRescueForm;
6116
6245
  exports.delay = delay;
6117
6246
  exports.deriveActiveColor = deriveActiveColor;
6118
6247
  exports.deriveHoverColor = deriveHoverColor;
@@ -6138,6 +6267,7 @@ exports.extractSections = extractSections;
6138
6267
  exports.faqItemAnchor = faqItemAnchor;
6139
6268
  exports.faqSectionSlug = faqSectionSlug;
6140
6269
  exports.fetchPriorityProp = fetchPriorityProp;
6270
+ exports.filledRescueFields = filledRescueFields;
6141
6271
  exports.findAnchorElementByNormalizedId = findAnchorElementByNormalizedId;
6142
6272
  exports.findDocNodeByPath = findDocNodeByPath;
6143
6273
  exports.findHoneypotCopySource = findHoneypotCopySource;
@@ -6246,6 +6376,7 @@ exports.getPlatformUrl = getPlatformUrl;
6246
6376
  exports.getProxiedImageUrl = getProxiedImageUrl;
6247
6377
  exports.getReadableTextColor = getReadableTextColor;
6248
6378
  exports.getRequestOrigin = getRequestOrigin;
6379
+ exports.getRescueForm = getRescueForm;
6249
6380
  exports.getSemanticColor = getSemanticColor;
6250
6381
  exports.getShellIcon = getShellIcon;
6251
6382
  exports.getShellLabel = getShellLabel;
@@ -6268,7 +6399,9 @@ exports.isBadgePaletteKey = isBadgePaletteKey;
6268
6399
  exports.isBlankLine = isBlankLine;
6269
6400
  exports.isCrossOriginUrl = isCrossOriginUrl;
6270
6401
  exports.isDismissedCookieValue = isDismissedCookieValue;
6402
+ exports.isExcludedRescueField = isExcludedRescueField;
6271
6403
  exports.isFigmaSlidesUrl = isFigmaSlidesUrl;
6404
+ exports.isFormAttemptId = isFormAttemptId;
6272
6405
  exports.isGenericDomain = isGenericDomain;
6273
6406
  exports.isGenericWebsiteDomain = isGenericWebsiteDomain;
6274
6407
  exports.isHumanitySignalKey = isHumanitySignalKey;
@@ -6278,6 +6411,7 @@ exports.isLocalUrl = isLocalUrl;
6278
6411
  exports.isOSPlatform = isOSPlatform;
6279
6412
  exports.isOrderedRange = isOrderedRange;
6280
6413
  exports.isPublishableMediaType = isPublishableMediaType;
6414
+ exports.isRescueEmail = isRescueEmail;
6281
6415
  exports.isToday = isToday;
6282
6416
  exports.isValidEmailDomain = isValidEmailDomain;
6283
6417
  exports.isValidSchedulingSlug = isValidSchedulingSlug;
@@ -6285,6 +6419,7 @@ exports.isValidToolType = isValidToolType;
6285
6419
  exports.isVideoMedia = isVideoMedia;
6286
6420
  exports.isWalkthroughDismissed = isWalkthroughDismissed;
6287
6421
  exports.isWithinMinutes = isWithinMinutes;
6422
+ exports.listRescueForms = listRescueForms;
6288
6423
  exports.makeComposeContentUrl = makeComposeContentUrl;
6289
6424
  exports.markdownToPlainText = markdownToPlainText;
6290
6425
  exports.matchBiteElement = matchBiteElement;
@@ -6337,11 +6472,14 @@ exports.readDismissCookie = readDismissCookie;
6337
6472
  exports.readLeadingDecisionFrame = readLeadingDecisionFrame;
6338
6473
  exports.recordCountLabel = recordCountLabel;
6339
6474
  exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor;
6475
+ exports.rescueCompletionPct = rescueCompletionPct;
6340
6476
  exports.resolveContentFetchPath = resolveContentFetchPath;
6341
6477
  exports.resolveRedirectTarget = resolveRedirectTarget;
6342
6478
  exports.resolveReleaseCover = resolveReleaseCover;
6343
6479
  exports.rgbToHex = rgbToHex;
6344
6480
  exports.sanitizeLandingUrl = sanitizeLandingUrl;
6481
+ exports.sanitizeRescueFieldName = sanitizeRescueFieldName;
6482
+ exports.sanitizeRescueValues = sanitizeRescueValues;
6345
6483
  exports.sanitizeTitleForChat = sanitizeTitleForChat;
6346
6484
  exports.scanHeadings = scanHeadings;
6347
6485
  exports.schedulingAudienceKey = schedulingAudienceKey;